开发者社区 > 数据库 > 数据仓库 > 正文

ADB中是否和mysql一样支持以下流读取方式; statement设置以下属性时,采用的是流数据?

ADB中是否和mysql一样支持以下流读取方式; statement设置以下属性时,采用的是流数据接收方式,每次只从服务器接收部份数据,直到所有数据处理完毕,不会发生JVM OOM。 Stat.setResultSetType(ResultSet.TYPE_FORWARD_ONLY); Stat.setFetchSize(Integer.MIN_VALUE); ?

展开
收起
真的很搞笑 2023-05-17 14:50:48 13522 0
2 条回答
写回答
取消 提交回答
  • 公众号:网络技术联盟站,InfoQ签约作者,阿里云社区签约作者,华为云 云享专家,BOSS直聘 创作王者,腾讯课堂创作领航员,博客+论坛:https://www.wljslmz.cn,工程师导航:https://www.wljslmz.com

    在阿里云ADB中,不支持直接使用Statement.setFetchSize(Integer.MIN_VALUE)的方式采用流数据接收方式,这是因为ADB中的JDBC驱动底层是基于PostgreSQL的。PostgreSQL的JDBC驱动只支持用户使用setFetchSize()方法设置每次从数据库中获取数据的批量大小(即返回结果集的行数)。在PostgreSQL默认情况下,ResultSet会在检索数据时尝试将整个结果集返回本地内存中,如果结果集太大,可能会导致OutOfMemory错误。

    PostgreSQL的JDBC驱动为了解决这个问题,提供了setFetchSize()方法。使用该方法可以减少连接程序退出时由于结果集大小过大而产生的内存溢出错误的可能性。应用程序可以在检索数据时,提前告知ResultSet每次检索数据的行数,即设置每次从数据库中返回的结果集的批量大小,以减少结果集产生的内存压力。

    在ADB中使用流数据接收方式的场景中,建议可以考虑使用分页查询的方式,通过限制每页的记录数来避免一次性取得过多的数据。这样,不仅可以避免潜在的OOM问题,也能更好的控制查询结果集的大小,提升查询效率。

    2023-05-20 08:00:11
    赞同 展开评论 打赏
  • ADB目前不支持。,此回答整理自钉群“云数据仓库ADB-开发者群”

    2023-05-17 14:52:00
    赞同 展开评论 打赏

阿里云自主研发的云原生数据仓库,具有高并发读写、低峰谷读写、弹性扩展、安全可靠等特性,可支持PB级别数据存储,可广泛应用于BI、机器学习、实时分析、数据挖掘等场景。包含AnalyticDB MySQL版、AnalyticDB PostgreSQL 版。

相关产品

  • 云原生数据仓库 AnalyticDB PostgreSQL版
  • 相关电子书

    更多
    One Box: 解读事务与分析一体化数据库 HybridDB for MySQL 立即下载
    One Box:解读事务与分析一体化数据库HybridDB for MySQL 立即下载
    如何支撑HTAP场景-HybridDB for MySQL系统架构和技术演进 立即下载

    相关镜像