【问题标题】:Difference between chunk size and page size Spring Batch [duplicate]块大小和页面大小之间的差异 Spring Batch [重复]
【发布时间】:2018-03-09 05:11:36
【问题描述】:

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

在阅读器中,我将页面大小设置为20。这是否意味着每读取 1000 个条目,阅读器必须从 DB 中取出 20 个条目?

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

【问题讨论】:

    标签: java spring spring-batch


    【解决方案1】:

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

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

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

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

    因此,在撰写本文之前,您已经注意到,从概念上讲,这些是不相关的概念 - 阅读器页面大小是为了最大限度地减少数据库调用(这个概念不是弹簧批处理概念,而是特定于阅读器 - 如果它不是分页阅读器,这个概念没有出现)而块大小是关于以小块提交处理过的数据以减少内存占用。

    【讨论】:

      【解决方案2】:

      是的,提交间隔决定了一个块中将处理多少条记录。

      数据库页面大小决定了一次从数据库中获取多少条记录。它更像是一个优化设置,介于您希望有多大的缓冲区与驱动程序从数据库中获取数据所需的行程次数之间。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-04-10
        • 2021-10-07
        • 2016-08-24
        • 1970-01-01
        • 2015-02-28
        • 1970-01-01
        • 1970-01-01
        • 2021-06-10
        相关资源
        最近更新 更多