开发目的:提高百万级数据插入效率。
采取方案:利用ThreadPoolTaskExecutor多线程批量插入。
采用技术:springboot2.1.1+mybatisPlus3.0.6+swagger2.5.0+Lombok1.18.4+postgresql+ThreadPoolTaskExecutor等。
具体细节:
第一步:
application-dev.properties添加线程池配置信息
# 异步线程配置 # 配置核心线程数 async.executor.thread.core_pool_size = 30 # 配置最大线程数 async.executor.thread.max_pool_size = 30 # 配置队列大小 async.executor.thread.queue_capacity = 99988 # 配置线程池中的线程的名称前缀 async.executor.thread.name.prefix = async-importDB-
第二步:
spring容器注入线程池bean对象
@Configuration
@EnableAsync
@Slf4j
public class ExecutorConfig {
@Value("${async.executor.thread.core_pool_size}")
private int corePoolSize;
@Value("${async.executor.thread.max_pool_size}")
private int maxPoolSize;
@Value("${async.executor.thread.queue_capacity}")
private int queueCapacity;
@Value("${async.executor.thread.name.prefix}")
private String nameP