MySQL JDBC的setFetchSize

1 篇文章 0 订阅
1 篇文章 0 订阅

 

正常情况下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。推荐以此方式解决这个问题。

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值