我写了一个springInterval为50的spring批处理。我使用的itemReader的fetchSize为200.所以根据我的理解,读者将获取200条记录,但只提交50条块。因此,对于200个记录的每次提取,将执行4次提交50次。我是对的吗?
我的问题是我们配置了许多弹簧批次,并且可能存在多个批次同时运行的情况。如果我将commitInterval增加到200,它是否会影响具有较小commitIntervals的其他批次的性能?
请告知。
答案 0 :(得分:3)
是的 - 你是对的,fetchSize将带来200条记录,commit-interval将在50个记录块中“提交”。
较大的提交间隔可以粗略地转换为要提交的较大事务“游标”。也就是说,您将在减少的事务开销中获得一些性能(如果设置为200,则约为1/4)。
取决于您的体系结构暴露于故障(例如,您的数据源连接的安全性和稳定性)将决定一次提交200个记录与50个记录的风险程度。我赞成将你的fetchSize与你的提交间隔匹配,因为没有重试管理器,你在提交失败时会丢失fetchSize。