KOCA jdbc Dbstream 流式查询在不同数据库中表现差异描述

在使用DbStream支持sql查询时,可以通过增加与数据库服务器交互次数,减少客户端内存膨胀问题,其底层使用PreparedStatement setFetchSize,适用于大量数据导出的场景。示例代码如下:

        DbStream queryStream = new DbStream();
        queryStream.open("select * from test_table", 200); //一次读取200条记录,默认值5000
        queryStream.execute();
        while (queryStream.next()) {
                //获取行记录,返回一个Map
                Map<String, Object> rowDataMap = queryStream.getRowData();
                System.out.println(rowDataMap);
        }

该段代码在不同数据库中,表现存在差异;

Oracle数据库

Oracle数据库表现符合预期,无需特殊处理。

GuassDB高斯数据库

高斯数据库需要开启事务才能支持流式获取。

MySQL数据库

mysql数据库需要在jdbc url上增加useCursorFetch=true

H2数据库内存版

不支持流式获取,也不会造成内存膨胀