我有6000万条记录在一个大约8gb大小的csv中。
需要从文件中读取记录并使用jpa将其插入数据库。
试图用spring批处理读取此文件,但性能非常慢。我已将块大小最大值添加到1500,但行不通。
还添加了创建线程但不起作用的任务执行器。
系统配置。t2。xlarge 16 gib内存和4个vcpu、16gb ram和4核cpu
@Bean
public Step step3() {
return stepBuilder
.get("step3")
.<main_Data, main_Data>chunk(1500)
.reader(this.mainDataReader)
.processor(this.main_data_processor)
.writer(this.mainDataWriter).taskExecutor(taskExecutor())
.build();
}
@Bean
public TaskExecutor taskExecutor(){
SimpleAsyncTaskExecutor simpleAsyncTaskExecutor = new SimpleAsyncTaskExecutor();
simpleAsyncTaskExecutor.setConcurrencyLimit(5);
return simpleAsyncTaskExecutor;
}
也可以尝试
@Bean
public TaskExecutor taskExecutor2() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(64);
executor.setMaxPoolSize(64);
executor.setQueueCapacity(64);
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
executor.setThreadNamePrefix("MultiThreaded-");
return executor;
}
我也尝试过使用opencsv,但是使用opencsv获取重复的记录。
对spring批处理的性能有什么建议吗?或者以其他方式阅读这个文件?
暂无答案!
目前还没有任何答案,快来回答吧!