无论何时从数据库服务器访存一个大对象
(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 数据类型编程的信息,
请参阅智能大对象数据类型。