【发布时间】:2017-11-27 19:01:42
【问题描述】:
我正在使用 Spring Batch 编写批处理。我必须将大约 2 000 000 条记录从数据源(Oracle 数据库)移动到目标(Kafka 代理)。我正在犹豫我应该为这份工作选择哪个 ItemReader:
JdbcCursorItemReader:如果我理解正确它会打开游标,游标会逐一遍历所有这些记录的ResultSet,性能没有问题;后台数据库会在查询执行时保留满足 where 子句的记录的快照;
RepositoryItemReader:可能性能较低,基于分页机制的分区,对于将执行查询的每个页面,可能会在 2 提取期间省略一些可能写入数据库的记录000 000 条记录,在前一种情况下不会发生(我的推理是否正确?)
总结:因此,我想以分区方式发送查询执行时的所有这 2 000 000 条记录。我是不是在想这个问题?在将来执行更新作业的情况下,跳过新记录可能不是问题?或者我对 RepositoryItemReader 的推理不正确?
【问题讨论】:
标签: java spring jdbc spring-batch partitioning