问题描述
今天用mybatis Plus的savebatch批量插入mysql数据库发现很慢
分析结果
1.事务机制不当
默认情况下,MyBatis/JPA等框架的批量操作可能未启用事务,或使用自动提交(每条INSERT独立事务)
建议:
@Transactional // 启用事务
public void batchInsert(List<Entity> list) {
mapper.saveBatch(list);
}
2.jdbc的配置问题
参数 | 优化值 | 配置说明 |
---|---|---|
rewriteBatchedStatements | true | 启用批量语句重写 |
useServerPrepStmts | true | 启用批量启用服务器端预处理 |
cachePrepStmts | true | 缓存预处理语句 |
发现是jbdbc没有配置批量插入