增加Spring Batch中提交间隔的影响

时间:2013-07-05 06:33:32

标签: spring spring-batch

我写了一个springInterval为50的spring批处理。我使用的itemReader的fetchSize为200.所以根据我的理解,读者将获取200条记录,但只提交50条块。因此,对于200个记录的每次提取,将执行4次提交50次。我是对的吗?

我的问题是我们配置了许多弹簧批次,并且可能存在多个批次同时运行的情况。如果我将commitInterval增加到200,它是否会影响具有较小commitIntervals的其他批次的性能?

请告知。

1 个答案:

答案 0 :(得分:3)

  1. 是的 - 你是对的,fetchSize将带来200条记录,commit-interval将在50个记录块中“提交”。

  2. 较大的提交间隔可以粗略地转换为要提交的较大事务“游标”。也就是说,您将在减少的事务开销中获得一些性能(如果设置为200,则约为1/4)。

  3. 这样做的“风险”是,如果在提交间隔中发生异常,您将失去更多“工作”。 (而不是在失败时最多丢失49条记录,你可能会损失多达199条并且必须再次执行这些记录)

    取决于您的体系结构暴露于故障(例如,您的数据源连接的安全性和稳定性)将决定一次提交200个记录与50个记录的风险程度。我赞成将你的fetchSize与你的提交间隔匹配,因为没有重试管理器,你在提交失败时会丢失fetchSize。