块大小和页面大小 Spring Batch 之间的区别

And*_*rew 4 java spring spring-batch

我有一个 spring 批处理作业,其中我将块大小设置为 1000,并且该作业中的读取器是JpaPagingItemReader.

在阅读器中,我将页面大小设置为20. 这是否意味着读者读取的每 1000 个项目都必须从 db 中取出 20 个项目?

如果不是,它们之间有什么区别?

Sab*_*han 6

使用您当前的配置,如果您的每个读取项都写入编写器(即,如果它没有在处理器中被过滤掉),那么您将需要 1000/20 = 50 次数据库读取才能达到块大小,即当您实际调用编写器时写作。

Spring Batch 将已处理的项目保存在内存中,直到达到块大小并保存项目会消耗内存。

您当前的配置是将数据保存在内存中并进行不必要的数据库调用,而我们希望减少这两件事。

因此,您的配置需要与您正在执行的操作相反,即将读取器页面大小增加到等于块大小/提交间隔或更多的最小值,以便读取的数据以小块的形式处理,然后您再次读取数据库。

因此,正如您在当前撰写之前所注意到的那样,从概念上讲,这些是不相关的概念 - 阅读器页面大小是为了最小化数据库调用(并且这个概念不是 spring 批处理概念而是特定于阅读器的 - 如果它不是分页阅读器,则此概念不会进入图片),而块大小是关于将处理过的数据以小块的形式提交以减少内存占用。


归档时间:

查看次数:

15156 次

最近记录:

8 年,7 月 前