假设我有一个处理器,它从一个表转换中获取记录并将它们放入另一个表中。我想知道我可以一次加载到内存中并处理多少条记录。
显然,这取决于很多因素:记录中的数据量、任何 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/