Spring 批次中只有 1 个块大小不好吗?

Is it bad to have just 1 chunk size in Spring Batch?

我必须处理一个包含相同 ID 和不同日期记录的文件。如果一个特定的 ID 有多个不同日期的记录,它必须将所有记录相加。目前,我的解决方案是按一个块编写并让 SQL 查询执行求和部分,因为我没有办法知道同一 ID 的多个条目是否在同一块中。这样做是否会对性能产生巨大影响,尤其是我正在处理价值 100k 的数据?

Is there a huge performance effect of doing it this way especially that I am working on 100k worth of data?

是的,这可能会影响您的步骤的性能,因为每个项目都将在其自己的事务中处理。如果是 100k,你将有 100k 个事务,而如果 chunk-size=1000,你将只有 100 个事务。

面向块的处理模型并不真正适合table您正在尝试做的事情,因为具有相同 ID 的项目可能跨越不同的块。这种需求的一种常见技术是在临时 table 中加载数据(例如,如果针对 sqlite 完成,这可能是一个非常快的步骤),然后 运行 您的聚合 SQL查询 table.