开发者

详解MyBatis-Puls中saveBatch批量添加慢的问题

开发者 https://www.devze.com 2023-01-17 10:37 出处:网络 作者: Yang疯狂打码中
目录问题原因测试优化问题 在项目过程中使用MyBATis-Puls的saveBatch一次性添加大量数据时很慢
目录
  • 问题
  • 原因
  • 测试
  • 优化

问题

在项目过程中使用MyBATis-Puls的saveBatch一次性添加大量数据时很慢

原因

MyBatis-Puls的saveBatch默认并没有批量添加,实际上在插入的时候仍然是一条条记录的插,速度远不如原来Mybatis的foreach拼接SQL的方法

测试

模拟使用saveBatch添加一万条数据

详解MyBatis-Puls中saveBatch批量添加慢的问题

结果

详解MyBatis-Puls中saveBatch批量添加慢的问题

结果可以看到输出的总耗时为5685,而上面的SQL日志可以证明数据是一条一条插入python的 

优化

详解MyBatis-Puls中saveBatch批量添加慢的问题

只需要在JDBC连接URL字符串中需要新增一个参数:rewriteBatchedStatements=true

这样可以让sawww.devze.comveBatch实现批处理方式

重新执行后效果:最终耗时2948,几乎快了一半

详解MyBatis-Puls中saveBatch批量添加慢的问题

关于rewriteBatchedStatements这个参数介绍:

mysql的JDBC连接的url中要加rewritepythonBatchedStatJcGVnements参数,并保证5.1.13以上版本的驱动,才能实现高性能的批量插入。

MySQL JDBC驱动开发者_C入门在默认情况下会无视executeBatch()语句,把我们期望批量执行的一组sql语句拆散,一条一条地发给MySQL数据库,批量插入实际上是单条插入,直接造成较低的性能。

只有把rewriteBatchedStatements参数置为true, 驱动才会帮你批量执行SQL

另外这个选项对INSERT/UPDATE/DELETE都有效

 到此这篇关于详解MyBatjavascriptis-Puls中saveBatch批量添加慢的问题的文章就介绍到这了,更多相关MyBatis-Puls saveBatch批量添加慢内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号