解决方案之高并发插入造成的Unable to acquire JDBC Connection异常
1.1 Bug 现场
这篇博文分享一个研发过程中发现的一个坑。
当使用Spring Data JPA 进行高频率的插入操作的时候, 可能会出现如下报错信息:
Unable to acquire JDBC Connection
1.2 解决方案
搜罗网上解决方案和自己摸索发现解决方案大致分为如下几种。
1.2.1 解决方案一
- 调大最大连接池的数量
spring.datasource.hikari.maximum-pool-size: 10
- 调节超时时间
spring.datasource.hikari.connection-timeout: 0
1.2.2 解决方案二
- 将业务数据分批处理,不要一条一条的插入。
1.2.3 解决方案三
- 修改Spring Data JPA的调用方法
将原来的代码
this.worksPicJpaRepository.save(cusotmerEntity);
修改成
this.worksPicJpaRepository.saveAndFlush(cusotmerEntity);