And*_*rew 4 java spring spring-batch
我有一个 spring 批处理作业,其中我将块大小设置为 1000,并且该作业中的读取器是JpaPagingItemReader.
在阅读器中,我将页面大小设置为20. 这是否意味着读者读取的每 1000 个项目都必须从 db 中取出 20 个项目?
如果不是,它们之间有什么区别?
使用您当前的配置,如果您的每个读取项都写入编写器(即,如果它没有在处理器中被过滤掉),那么您将需要 1000/20 = 50 次数据库读取才能达到块大小,即当您实际调用编写器时写作。
Spring Batch 将已处理的项目保存在内存中,直到达到块大小并保存项目会消耗内存。
您当前的配置是将数据保存在内存中并进行不必要的数据库调用,而我们希望减少这两件事。
因此,您的配置需要与您正在执行的操作相反,即将读取器页面大小增加到等于块大小/提交间隔或更多的最小值,以便读取的数据以小块的形式处理,然后您再次读取数据库。
因此,正如您在当前撰写之前所注意到的那样,从概念上讲,这些是不相关的概念 - 阅读器页面大小是为了最小化数据库调用(并且这个概念不是 spring 批处理概念而是特定于阅读器的 - 如果它不是分页阅读器,则此概念不会进入图片),而块大小是关于将处理过的数据以小块的形式提交以减少内存占用。
| 归档时间: |
|
| 查看次数: |
15156 次 |
| 最近记录: |