返回首页

gbase数据、南大通用产品文档:GBase8s大对象的内存管理

更新日期:2024年09月11日

无论何时从数据库服务器访存一个大对象
(BYTE 、
TEXT 、
BLOB 或 CLOB 数据类型)

该数据会高速缓存到内存或存储到临时文件(如果它超出内存缓冲区)。如果 JDBC 小程
序尝试在本地计算机上创建临时文件,则可能会导致安全性问题。在这种情况下,整个大
对象必须存储在内存中。
可以使用 LOBCACHE 环境变量来指定存储在连接属性列表中的大对象数据的大小,如下
所示:

要设置分配给内存的最大字节数来保存数据,请将 LOBCACHE 值设置为该字节数。

如果数据大小超出 LOBCACHE 值,则数据会存储在临时文件中。如果在创建此文
件期间发生安全违规,则此数据会存储到内存中。

要始终将数据存储在文件中,请将 LOBCACHE 值设置为 0。
在这种情况中,如果发生安全违规,则 GBase 8s JDBC Driver 不会尝试将数据存储
在内存中。
未签名的小程序不支持该设置。
有关更多信息,
请参阅在 applet 中使用
驱动程序。

要始终在内存中存储数据。请将 LOBCACHE 值设置为负数。

GBase 8s JDBC Driver 程序员指南
南大通用数据技术股份有限公司
- 233 -

如果所需内存量超出,则 GBase 8s JDBC Driver 抛出 SQLException 消息 Out of
Memory。
如果 LOBCACHE 值无效或未定义,则缺省大小为 4096。
可以通过数据库 URL 设置 LOBCACHE 值,如下所示:
URL = jdbc:gbasedbt-sqli://158.58.9.37:7110/test:user=guest;
password=iamaguest;gbasedbtserver=oltapshm;
lobcache=4096";
上一示例中,如果大对象大小为 4096 字节或更小,则在内存中存储大对象。如果大对象
超出 4096 字节,
则 GBase 8s JDBC Driver 会试图创建一个临时文件。
如果发生安全隔离,
则会为整个大对象分配内存。如果失败,则驱动程序抛出 SQLException 消息。
另一示例为:
URL = "jdbc:gbasedbt-sqli://icarus:7110/testdb:
user=guest:passwd=whoknows;gbasedbtserver=olserv01;lobcache=0";
上述示例使用临时文件存储访存的大对象。
第三个示例如下:
URL = "jdbc:gbasedbt-sqli://icarus:7110/testdb:user=guest:
passwd=whoknows;gbasedbtserver=olserv01;lobcache=-1";
上述示例通常使用内存来存储访存的大对象。
有关如何在 Java™ 程序中使用 TEXT 和 BYTE 数据类型的编程的信息,
请参阅BYTE 和
TEXT 数据类型。有关如何在 Java 程序中使用 BLOB 和 CLOB 数据类型编程的信息,
请参阅智能大对象数据类型。

数据同步系统通过Oracle Goldengate、GBase RTSync 等工具复制Oracle、GBase 8s
等数据库的业务数据到GBase 8a MPP Cluster,为了应对业务系统可能的峰值,在
系统中加入Kafka 消息队列作为缓冲区。以Oracle 同步实时数据到GBase 8a 集群
为例,总体流程如下:
图2- 5 kafka 数据同步总体流程图
OGG 发送端(GoldenGate Extract)从Oracle 的在线日志和归档日志中抽取事务信
息,生成Trail 文件。OGG 接收端(GoldenGate Replicat)收到Trail 文件,抽取事
务信息转换为目标格式,并生产事务消息到Kafka。集群的Consumer 模块从Kafka
中消费事务消息,将数据更新到GBase 8a MPP Cluster 中。
Kafka consumer 的主要功能就是同步Kafka 数据到GBase 8a MPP Cluster:

根据配置,可以指定需要同步的业务;

在同步过程中,提供同步状态查询功能;

实现数据同步的高可用性和事务数据一致性。

通过本功能您可以对资源进行管理,左侧树结构如下图所示:
图5- 464 资源管理查看左侧树

GBaseDataStudio 管理工具手册
南大通用数据技术股份有限公司
- 123 -