java-jdbc数据集是否将所有行存储在jvm内存中

我正在使用Java JDBC应用程序从数据库获取约500,000条记录.使用的数据库是Oracle.取出每一行后,我立即将数据写入文件.由于完成整个数据的获取大约需要一个小时,因此我试图增加结果集的获取大小.我已经在多个链接中看到,在增加访存大小的同时,应该注意内存消耗.增加获取大小是否实际上会增加jvm使用的堆内存?
假设获取大小为10,并且程序查询总共返回100行.在第一次读取期间,结果集包含10条记录.读取前10条记录后,结果集将获取下10条记录.这是否意味着在第二次获取后,数据集将包含20条记录?较早的10条记录是否仍保留在内存中,还是在获取较新的批次时将其删除了?
任何帮助表示赞赏.

解决方法:

这取决于.不同的驱动程序可能会有所不同,而不同的ResultSet settings可能会有所不同.

如果您有CONCUR_READ_ONLY,FETCH_FORWARD,TYPE_FORWARD_ONLY ResultSet,则驱动程序几乎肯定会在内存中主动存储与您的提取大小相对应的行数(当然,较早行的数据将在内存中保留一段时间,直到被浪费为止).集).另一方面,如果您具有TYPE_SCROLL_INSENSITIVE ResultSet,则驱动程序很有可能会将所有获取的数据存储在内存中,以便允许您前后滚动数据.这不是实现此行为的唯一可能方法,因此不同的驱动程序(和不同版本的驱动程序)可能具有不同的行为,但这是我遇到的大多数驱动程序的最简单方式.

相关文章

连接数据库的方式:第一种方式:ODBC:开放数据库连接是微软...
JDBCRequest 使用VariableNamesmysql:数据库连接池对象var...
 1.JDBCDBC(JavaDataBaseConnectivity):Java数据库连接技术...
1.需要jar包的支持:java.sqljavax.sqlmysql-conneter-java....
1.简介Activiti是一个业务流程管理(BPM)框架,它是覆盖了业务...
1.JDBC体系系统一组规范:接口JDBC接口(API)包括两个层次:...