GBase8s 大对象的内存管理
无论何时从数据库服务器访存一个大对象(BYTE 、TEXT 、BLOB 或 CLOB 数据类型), 该数据会高速缓存到内存或存储到临时文件(如果它超出内存缓冲区)。如果 JDBC 小程 序尝试在本地计算机上创建临时文件,则可能会导致安全性问题。在这种情况下,整个大 对象必须存储在内存中。
可以使用 LOBCACHE 环境变量来指定存储在连接属性列表中的大对象数据的大小,如下 所示:
1、要设置分配给内存的最大字节数来保存数据,请将 LOBCACHE 值设置为该字节数。
如果数据大小超出 LOBCACHE 值,则数据会存储在临时文件中。如果在创建此文 件期间发生安全违规,则此数据会存储到内存中。
2、要始终将数据存储在文件中,请将 LOBCACHE 值设置为 0。
在这种情况中,如果发生安全违规,则 GBase 8s JDBC Driver 不会尝试将数据存储 在内存中。未签名的小程序不支持该设置。有关更多信息,请参阅在 applet 中使用 驱动程序。
3、 要始终在内存中存储数据。请将 LOBCACHE 值设置为负数。
如果所需内存量超出,则 GBase 8s JDBC Driver 抛出 SQLException 消息 Out of Memory。
如果 LOBCACHE 值无效或未定义,则缺省大小为 4096。可以通过数据库 URL 设置 LOBCACHE 值,如下所示:
URL = jdbc:gbasedbt-sqli://127.0.0.1:10603/testdb:user=guest; password=123456;gbasedbtserver=oltapshm;lobcache=4096"上一示例中,如果大对象大小为 4096 字节或更小,则在内存中存储大对象。如果大对象 超出 4096 字节,则 GBase 8s JDBC Driver 会试图创建一个临时文件。如果发生安全隔离, 则会为整个大对象分配内存。如果失败,则驱动程序抛出 SQLException 消息。
另一示例为:
URL = "jdbc:gbasedbt-sqli://127.0.0.1:10603/testdb:user=guest:password=123456;gbasedbtserver=olserv01;lobcache=0";上述示例使用临时文件存储访存的大对象。
第三个示例如下:
URL = "jdbc:gbasedbt-sqli://127.0.0.1:10603/testdb:user=guest:password=123456;gbasedbtserver=olserv01;lobcache=-1";上述示例通常使用内存来存储访存的大对象。
热门帖子
- 12025-12-01浏览数:182759
- 22023-05-09浏览数:25044
- 42023-09-25浏览数:18519
- 52020-05-11浏览数:17526