问题描述:
在项目中使用到了 mybatisplus的批量插入方法,底层来自
com.baomidou.mybatisplus.extension.service;
默认的batchSize不填就是1000.
但是在实际测试的情况下,调用的batchSave方法 批量insert 1000条数据耗时大概20秒左右,这非常的不科学。
20秒多不多,我批量80000条数据分批执行接近半小时。。。
解决方案:
先给大家结论,就是我们文章的开头提到的参数 rewriteBatchedStatements。
在jdbc连接上加入rewriteBatchedStatements=true即可以实现多条更新语句合并提交给mysql(合并条数需要看batchSize设置)。
jdbc:mysql://xxx.xx.cn:3306/test?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true
加上rewriteBatchedStatements后实际测试1000条数据的耗时 20秒 -》 400ms。 这才是正常的。