本文介绍了如何处理来自大型ResultSet的数据而不将它们全部加载到内存中?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的数据库托管于mysql服务器&我正在使用Java来分析数据。



我的问题:执行'Select'查询后将返回2.5 GB的结果集。我不想将所有数据加载到内存中。那么有什么方法可以不断检索数据和处理它?

'行数限制'将不是一个选项,b / c此2.5 GB数据已加入&从4个表中检索。所以'按行限制'会增加我的总运行时间。



我已经尝试过statement.setFetchSize(50),但它似乎没有像我预期的那样工作。



任何建议都将非常感谢!谢谢!

解决方案

语句stmt = readOnlyConn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY,
java.sql。 ResultSet.CONCUR_READ_ONLY);



stmt.setFetchSize(Integer.MIN_VALUE);



上面的代码解决了我的问题。谢谢你的帮助!


My Database is hosting on mysql server & I'm using Java to analyze data.

My issue: after execute 'Select' query will return a 2.5 GB result set. I don't want to load all the data to memory. So is there any ways that I could continuously retrieve data & process it?

'limit by rows' will not be an option, b/c this 2.5 GB data is joined & retrieved from 4 tables. So 'limit by rows' will increase my total run-time a lot.

I've tried statement.setFetchSize(50), but it seemed not working as I expected.

Any suggestions will be really appreciated! Thanks!

解决方案

Statement stmt = readOnlyConn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY, java.sql.ResultSet.CONCUR_READ_ONLY);

stmt.setFetchSize(Integer.MIN_VALUE);

The code above solved my issues. Thanks for the help!

这篇关于如何处理来自大型ResultSet的数据而不将它们全部加载到内存中?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-24 16:55