`
uuhorse
  • 浏览: 64773 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

MySQL JDBC的setFetchSize

阅读更多

 

正常情况下MySQL的JDBC是不支持setFetchSize()方法设置的,总是一次性全部抓取到内存中,导致内存溢出。可以通过分页抓取以降低内存开销,过多的分页会导致查询效率降低。当然,程序也会变得更加复杂。

 

为了能够使JDBC自动以流的方式进行数据抓取,可以按如下设置:

 statement.setFetchSize(Integer.MIN_VALUE);

 

有人认为是MySQL的一个BUG,详情见:http://bugs.mysql.com/bug.php?id=18148

 

另外,按文章提到,可以尝试在JDBC的URL上加上参数"useCursorFetch=true"。如此,可以按setFetchSize指定的数量批量抓取数据,只支持MySQL 5.0 以上的Server/Connector。推荐以此方式解决这个问题。

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics