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

ADB中昨天说的Batch模式是指我select * from 表名 用jdbc取所有数据时我们不?

问题1:ADB中昨天说的Batch模式是指我select * from 表名 用jdbc取所有数据时我们不会内存溢出,还是你们的数据库不会内存溢出?那我们项目不内存溢出不支持流读取,只能分页?分页不现实啊,一亿的数据量的话分页得查很多次,且越往后越慢,分页的话我们还要考虑计算每张表每次读取数据条数,像mysql支持流接收数据,每次只接收部分数据,直到所有数据处理完毕,不会发生JVM OOM。 问题2:以后会支持流接收数据吗?

展开
收起
真的很搞笑 2023-05-17 15:04:47 60653 0
5 条回答
写回答
取消 提交回答
  • 问题1:Batch模式是指客户端(例如使用JDBC连接的程序)通过一次批量请求获取大量数据,从而避免在客户端内存中缓存所有数据而导致内存溢出的问题。ADB 也支持 Batch 模式,通过 JDBC 的 addBatch 方法和 executeBatch 方法可以实现批量插入、更新和删除等操作。

    对于大数据量的查询,ADB 提供了分布式查询引擎,可以将查询分成多个任务,分别由不同的节点执行,最后将结果合并返回。如果您需要查询一亿条数据,可以使用分页查询,每次查询合理的数据量,例如每次查询 10000 条数据,直到全部数据查询完成。另外,ADB 还支持并行查询,可以将查询任务分发到不同的节点上并行执行,加快查询速度。

    问题2:ADB 目前还不支持流接收数据,但是可以通过分页查询或者并行查询等方式来处理大量数据。ADB 团队一直在不断改进和优化 ADB 的功能和性能,未来可能会加入支持流接收数据的功能。

    2023-05-23 11:31:51
    赞同 展开评论 打赏
  • 对于您的问题1,批处理是一种数据查询和处理的方式,可以大大提高数据处理效率,减少内存占用。在 ADB 中,批处理能够更好的处理大量数据的查询和批量处理,避免内存溢出等问题。

    ADB 支持 JDBC 的批量预处理(batch PreparedStatement)和批量插入(batch insert)操作,这可以通过 JDBC API 和获取数据库连接时设置自动批量提交(auto-commit)来实现。这样,您就可以在使用 JDBC API 获取大量数据时,避免出现 OOM 的问题。

    如果您需要处理的数据量太大,不方便通过单个 JDBC 查询语句来一次性获取全部数据,ADB 还支持分布式 SQL(Distributed SQL)查询,可以将查询执行计划分布到不同的计算节点上,以提升查询效率。

    对于您的问题2,ADB 目前还不支持流式接收数据。不过,您可以通过适当地使用 SQL 分页或并行查询等技术,来避免一次查询返回过多数据的情况。在您需要处理大量数据时,我们建议您选择使用更加高效的数据处理方法,以确保能够高效处理数据,同时避免内存溢出等问题。

    2023-05-20 16:50:35
    赞同 展开评论 打赏
  • 公众号:网络技术联盟站,InfoQ签约作者,阿里云社区签约作者,华为云 云享专家,BOSS直聘 创作王者,腾讯课堂创作领航员,博客+论坛:https://www.wljslmz.cn,工程师导航:https://www.wljslmz.com

    问题1:在阿里云云原生数据仓库 AnalyticDB 中,Batch 模式是指在使用 JDBC 进行数据查询时,可以通过设置 Batch 模式来避免内存溢出问题。Batch 模式是 AnalyticDB 数据库内置的一种优化模式,可以将查询结果分批返回,从而避免一次性返回大量数据导致的内存溢出问题。

    如果您的项目不支持流读取,只能使用分页方式进行数据查询,那么在使用 AnalyticDB 进行数据查询时,建议您根据实际情况进行分页查询。虽然分页查询可能会比一次性查询慢一些,但是可以避免内存溢出问题。同时,您也可以通过调整分页大小来平衡查询速度和内存占用。

    问题2:目前,AnalyticDB 数据库并不支持流接收数据。不过,AnalyticDB 团队一直在不断优化数据库性能和功能,未来可能会在数据查询方面提供更多的优化和改进。

    2023-05-20 07:59:28
    赞同 展开评论 打赏
  • 值得去的地方都没有捷径

    问题1:Batch模式是指一次性提交多个SQL语句,从而减少与数据库的交互次数,提高数据处理效率。在使用JDBC取所有数据时,如果一次性取出的数据量过大,会导致内存溢出。ADB中使用了Batch模式,可以有效避免这种情况的发生。ADB的数据库也会发生内存溢出的情况,但我们会对数据库进行优化和调整,以确保其能够处理大量数据。

    对于您提到的分页问题,确实在处理大量数据时会出现性能问题。但是,分页仍然是一种常见的解决方案。除此之外,您还可以考虑使用一些其他的技术,如分库分表、缓存等,来提高数据处理效率。

    问题2:ADB目前还不支持流接收数据,但我们会不断优化和改进ADB的功能,以满足用户的需求。如果您有这方面的需求,可以向ADB的官方渠道提出建议和反馈。

    2023-05-19 19:04:02
    赞同 展开评论 打赏
  • 回答1:Batch模式是对ADB数据库的查询生效。你说的这个内存溢出是指你们自己的项目程序内存溢出是吗?是的,ADB可以的,项目程序内存溢出这个没有太好的办法,Batch模式是针对ADB数据库的查询。 回答2:这个问题我向上反馈一下。,此回答整理自钉群“云数据仓库ADB-开发者群”

    2023-05-17 15:11:10
    赞同 展开评论 打赏

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

相关产品

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

    更多
    阿里云数据中台电信行业数据模型白皮书 立即下载
    阿里云数据中台零售数据模型白皮书 立即下载
    消电行业数据中台解决方案白皮书 立即下载