设置结果集大小¶
神通数据库 JDBC驱动提供了允许用户设置结果集大小(即上面结果集的敏感性中提到的窗口的大小)的方法。通过设置结果集的大小,驱动每次从数据库取得的记录数将不超过用户设置的大小。比如TEMP表的实际记录数有100万条,用户如果把它一次全部取出来,就会耗用大量的内存;用户可以设置结果集的大小,比如为1万,那么神通数据库 JDBC驱动将每次只从后台数据库取1万条。当用户作游标移动操作时,如果JDBC发现那条记录还没从数据库取出来,就会从数据库取出那条记录。
//设置结果集大小
stmt.setFetchSize(10000);
rs = stmt.executeQuery("SELECT * FROM TEMP");
while (rs.next()) {
//如果调用到第10001次,驱动程序会再从后台取10000条,把原来的记录
//覆盖掉,这样内存中始终只是用了10000条记录内存的大小
}
在缺省情况下,即用户不设fetchSize时,神通数据库 JDBC驱动会将所有记录一次取出来。因此对于记录数极大的情况下(比如100万条)可能会耗用大量的内存。但是如果用户将fetchSize设得不够大,会增加网络的开销和数据库的查询操作,因此在这种情况下应用程序的执行速度将不如缺省的情况。用户对于内存耗用量和执行速度必须有一个折中的考虑,取得最好的平衡点。