为Spring Batch Application中的所有作业保留相同的块大小

时间:2018-01-26 10:40:58

标签: java spring-batch

只是想知道在Spring Batch应用程序中为所有作业保持块大小是否相同是一个好习惯,还是应该针对不同的作业保持不同,具体取决于特定作业的行为。

我可以理解,显然答案取决于很多因素,但只是想知道这是什么标准方法,如果有的话。

由于

2 个答案:

答案 0 :(得分:2)

块大小非常特定于手头的工作。它是优化批处理作业性能的关键方法,可能特定于您编写的每个作业。例如,如果您有小记录,则可能在块中有更多可以优化写入次数的块。如果您有大量记录,则在写入之间可能无法满足内存的数量。

答案 1 :(得分:0)

我认为在决定块大小时理解要考虑的因素将有助于回答这个问题。例如,如果这些因素对您的所有工作都相同(尽管这种情况非常罕见),那么为什么不呢。

有些书喜欢" Spring Batch in Action"建议将块大小保持在20到200之间。同一本书的一些想法如下:

  1. 块大小太小会造成太多的事务,这会造成代价高昂,并导致作业运行缓慢。
  2. 块大小太大会使事务性资源(如数据库)运行缓慢,因为数据库必须能够回滚操作。
  3. 提交间隔的最佳值取决于许多因素:数据,处理,资源的性质等。
  4. 提交间隔是Spring Batch中的参数,因此请不要犹豫,更改它以找到最合适的作业值。
  5. 所以是的,想法是尝试使用不同类型的样本数据和不同的块大小来运行作业,并自己比较结果,然后选择块大小。