java - 用 Java 处理数百万条数据库记录

标签 java spring jdbc batch-processing spring-batch

我需要编写一个批处理作业,从数据库表中获取行,并根据特定条件写入其他表或用特定值更新该行。我们使用 spring 和 jdbc 来获取结果集,并使用计划每周运行的独立 java 程序迭代和处理记录。我知道这不是正确的方法,但我们必须将其作为临时解决方案。随着记录增长到数百万,我们最终会出现内存不足的异常,所以我知道这不是最好的方法。

你们中的任何人都可以推荐处理这种情况的最佳方法吗?

使用线程并每个线程获取 1000 条记录并并行处理它们?

(或)

使用任何其他批处理机制来执行此操作(我知道有 spring-batch 但从未使用过它)

(或)

还有其他想法吗?

最佳答案

您已经知道您无法将一百万行放入内存并对其进行操作。

你必须以某种方式将它们分块。

为什么要把他们带到中间层?我会考虑编写存储过程并对数据库服务器上的数据进行操作。将其提升到中间层似乎并没有给你带来任何好处。让您的批处理作业启动存储过程并在数据库服务器中就地进行计算。

关于java - 用 Java 处理数百万条数据库记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12979229/

相关文章:

java - getInt 方法未从数据库表返回值

java - 有关 Spring 应用程序中 JDBC 中 SQL 指令的一些信息

java - 按映射中的特定键对 List<Map<String, Object>> 进行排序

java - 在 Android、Eclipse 中打印字符串数组

java - 去除重复的字符串

java - 如何使用 Spring Boot(服务器端)和 Angular(前端)将 100K 数据加载到表中

java - 使用JPA使用spring和intelliJ连接到数据库

spring - Spring MDP 中的 WebSphereUowTransactionManager 问题

java - 无法创建与数据库服务器的连接。尝试重新连接 3 次。放弃

java - Spring MVC 中的 UTF-8 编码问题