GBase 8a MPP数据库如何通过JDBC实现数据的流式读取

为什么要使用流式读取:

在我们使用JDBC驱动从数据库获取数据的时候,一般情况下,进行一次查询,结果集是一次性从集群获取的,并存放在JDBC所在应用的内存中,这种情况如果查询的结果集比较大,将会导致应用内存增长速度陡增,影响别的内存操作,甚至是内存溢出,这种情况下,要么考虑增大应用内存,要么就需要开启JDBC的流式读取方式。

什么是流式读取:

流式读取方式可以通过数据流的方式,逐条从集群获取数据,将数据获取到JDBC应用所在内存中,从而减小大结果集对应用内存的影响。

注意:当出现以上问题时,应当先从业务角度分析,是否真实需要将很大的结果集查询出来并放到内存中,建议先优化应用,不建议用户开启流式读取,当开启流式读取时集群会生成一个临时表,占用临时表空间,频繁使用对集群有影响;另外如果必须开启流式读取,就必须将结果集内的数据消费完,集群才会认为读取任务结束。

代码示例如下:

streamStmt = Conn.createStatement(

  java.sql.ResultSet.TYPE_FORWARD_ONLY,

  java.sql.ResultSet.CONCUR_READ_ONLY);

streamStmt.setFetchSize(Integer.MIN_VALUE); // -2147483648 必须是固定值

while (rs.next()) { // 必须遍历完所有结果集

  rs.getString(1);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值