java - 处理数据库记录时如何估计合适的批量大小

标签 java database batch-processing

假设我有一个处理器,它从一个表转换中获取记录并将它们放入另一个表中。我想知道我可以一次加载到内存中并处理多少条记录。

显然,这取决于很多因素:记录中的数据量、任何 BLOBS?、列数、数据库类型、驱动程序、框架、盒子上有多少可用内存,是否有任何其他内存消耗过程在相同的环境中运行等。

表单测试我可以看到它能够一次处理 10000 条记录但无法(使用 OOM)查询 100000。

我想我正在寻找一个好的策略来找出合适的批量大小。

或者我应该只使用一个非常保守的低批量大小的数字,比如 100。而且不用担心任何查询开销。

谢谢。

最佳答案

我会进行不同尺寸的测试,直到您看不到任何改进。你可能会看到类似的东西。

1 : 10 ms
10 : 5 ms each
100 : 3.5 ms each
1K : 3 ms each.
10K : 3.2 ms each.

在这种情况下,我会选择 1K 或 100 作为低端。

关于java - 处理数据库记录时如何估计合适的批量大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4819690/

相关文章:

c# - 如何安排在 Hangfire 中的特定日期运行的作业

java - Batch Entry 0 insert into PGSQL-调用getNextException查看原因

Java 应用程序需要独占访问 sftp 传送的文件

java - 如何在 Selenium 中切换

java - 尝试将图像插入数据库获取 ORA-01460 : unimplemented or unreasonable conversion requested error

mysql - 在 2 种不同类型的数据库之间共享 1 个表

hive - 直线相当于配置单元静默模式

java - 从文本文件中读取不同数据类型的每一行

java - JPA:表关联关系中的级联

database - 使用 git 作为文本数据库?