下面是我的 spring 批处理作业的配置,它从数据库中获取记录,在项目处理器中进行一些处理,更新状态列并写回数据库。
当我运行 10k 条记录时,我可以看到它一条一条地获取每条记录并以相同的方式更新状态。最初我打算使用多线程,但这没有任何意义,因为我的工作每天运行一次,记录数量从 10 到 100k 不等。(记录在大多数情况下少于 5k,一年中的少数几天(5 到 10 天)达到 50k 到 100k)。
我不想在一年中的 10 天里增加更多的 CPU 并被 Kubernetes 收费。现在的问题是,当我运行这项工作时,它只需要 100 条记录,它独立运行每个选择查询,而不是一次需要 100 条。一次更新也是一条记录,处理 10k 条记录需要 10 分钟,这真的很慢。
如何进行更快的读取、处理和写入?我可以摆脱多线程并偶尔获得更多的 CPU 利用率。更多信息在代码中作为注释给出。
九州编程
手掌心
相关分类