当前位置: 首页 > 知识库问答 >
问题:

Spring批处理:指定处理列表列表的块大小

林礼骞
2023-03-14

我正在处理包含数据库中多个记录列表的list

我应该如何指定处理每个子列表的块大小?

感谢您的帮助,提前谢谢。

共有1个答案

胡致远
2023-03-14

这是不可能的。块大小(commit-interval)是块中的项目数。如果您的项目是一个列表(不管这个列表中有多少个项目),块大小将是一个事务中要读取/处理/写入的列表数。

 类似资料:
  • 在Spring batch中(请参见https://docs.Spring.io/spring-batch/3.0.x/reference/html/metadataschema.html),有六个表: batch_job_execution batch_job_execution_context batch_job_execution_params batch_job_instance batc

  • 我正在尝试实现一个Spring批处理作业,为了处理记录,它需要2-3个db调用,这会减慢记录的处理速度(大小为100万)。如果我使用基于块的处理,它会单独处理每条记录,性能会很慢。因此,我需要一次性处理1000条记录,作为批量处理,这将减少数据库调用,并提高性能。但我的问题是,如果我实现Tasklet,那么我也会失去可重启性和重试/跳过功能,如果使用AggregateInputReader实现,我

  • 我在表中总共有8条记录,其中6条在spring批处理调用read时可以使用jpareader。现在我将页面大小和块大小设置为1以进行测试。期望作业运行时,它应该进行6次读取调用,然后它应该逐个处理,逐个写入。但实际上发生的是,它只是调用read 4次(从日志中我可以看到这样读取页面0...1)并处理4个,其中一个由于不匹配写入标准而被过滤掉,然后它只是更新了3个记录,作业标记为成功完成。

  • 有时我使用filter,如您所见,有时如果需要,我使用distinct/sort。但是我仍然有很多运行时错误。 我会很乐意提供一些如何处理它的技巧。 @cricket_007 我的代码: 所以基本上,当我试图用嵌套循环解决这个任务时,我得到了O(n^2)的算法复杂度。如何解决?

  • 反正可以禁用SQL,我只是想测试我的读写器和处理器工作正常。

  • 在Spring批处理中,ItemReader或ItemProcessor返回其item对象后,框架将该项放入ArrayList中,以传递给ItemWriter。 我需要在ItemProcessor中访问项目的ArrayList。我需要的核心功能是在ItemReader/ItemProcessor处理Arraylist的块时访问它。 我的想法是使用ApplicationContextAware It