Spring作业说明:从表中删除记录。将处理约500万条记录。
步骤:块大小 - 10,000,调用读者和作者
Reader:扩展JpaPagingItemReader并根据where子句从Oracle db中读取记录。分页大小 - 10,000
JpaItemWriter:扩展JpaItemWriter并删除记录。
问题:批处理要处理的记录为90,000(通过在SQLDeveloper中运行reader查询)。批次仅处理50,000。注意没有跳过的记录,批处理成功退出,状态为Complete,日志中也没有记录错误。当批次再次运行时,另外20,000(在40,000中)被处理等等......
我不确定为什么会这样。感谢任何帮助。非常感谢。
步骤配置:
@Bean("CleanupSkuProjStep")
public Step cleanupSkuProjStep()
{
return stepBuilderFactory.get("cleanupSkuProjStep") .<SkuProj, SkuProj>chunk(10000) .reader(cleanupSkuProjReader) .writer(cleanupSkuProjWriter) .listener(cleanupSkuProjChunkListener) .build();
}
读者配置:
this.setPageSize(10000);
this.setEntityManagerFactory(entityManagerFactory);
this.setQueryString(sqlString);
作家没有配置。
工作配置:
@Bean
public Job job()
{
log.info("Starting job: CleanupSkuProjJob");
return jobs.get("CleanupSkuProjJob") .listener(jobListener) .incrementer(new RunIdIncrementer()) .start(cleanupSkuProjStep) .build();
}