详解MyBatis-Puls中saveBatch批量添加慢的问题
作者:Yang疯狂打码中 时间:2021-10-14 02:36:27
问题
在项目过程中使用MyBatis-Puls的saveBatch一次性添加大量数据时很慢
原因
MyBatis-Puls的saveBatch默认并没有批量添加,实际上在插入的时候仍然是一条条记录的插,速度远不如原来Mybatis的foreach拼接SQL的方法
测试
模拟使用saveBatch添加一万条数据
结果
结果可以看到输出的总耗时为5685,而上面的SQL日志可以证明数据是一条一条插入的
优化
只需要在JDBC连接URL字符串中需要新增一个参数:rewriteBatchedStatements=true
这样可以让saveBatch实现批处理方式
重新执行后效果:最终耗时2948,几乎快了一半
关于rewriteBatchedStatements这个参数介绍:
MySQL的JDBC连接的url中要加rewriteBatchedStatements参数,并保证5.1.13以上版本的驱动,才能实现高性能的批量插入。
MySQL JDBC驱动在默认情况下会无视executeBatch()语句,把我们期望批量执行的一组sql语句拆散,一条一条地发给MySQL数据库,批量插入实际上是单条插入,直接造成较低的性能。
只有把rewriteBatchedStatements参数置为true, 驱动才会帮你批量执行SQL
另外这个选项对INSERT/UPDATE/DELETE都有效
来源:https://blog.csdn.net/yangjiaaiLM/article/details/126894079
标签:MyBatis-Puls,saveBatch,慢
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Java Arrays.asList使用方法解析
2023-11-26 06:27:09
spring mvc中直接注入的HttpServletRequst安全吗
2021-12-29 07:48:16
![](https://img.aspxhome.com/file/2023/6/63506_0s.png)
一篇文章带你搞定JAVA注解
2023-03-15 05:22:23
![](https://img.aspxhome.com/file/2023/2/63012_0s.png)
详解使用Spring Cloud Consul实现服务的注册和发现
2023-06-08 03:46:23
java实现银行ATM管理系统
2023-10-30 14:50:51
java实现微信扫码支付功能
2023-11-09 18:38:08
SpringBoot如何获取Kafka的Topic列表
2023-11-26 16:01:52
![](https://img.aspxhome.com/file/2023/2/60242_0s.png)
JavaWeb工程中集成YMP框架快速上手
2023-11-24 12:15:12
![](https://img.aspxhome.com/file/2023/9/58709_0s.png)
Java实战之用hutool-db实现多数据源配置
2023-11-28 19:37:10
![](https://img.aspxhome.com/file/2023/0/60250_0s.png)
tk.Mybatis 插入数据获取Id问题
2023-07-01 22:03:13
![](https://img.aspxhome.com/file/2023/6/60826_0s.png)
Android开发之DrawerLayout实现抽屉效果
2023-09-30 03:40:59
![](https://img.aspxhome.com/file/2023/5/85975_0s.png)
详解spring-boot集成elasticsearch及其简单应用
2021-08-26 01:09:58
![](https://img.aspxhome.com/file/2023/4/60594_0s.png)
Java学习基础之安装JDK/配置JDK环境&IEDA工具安装
2023-02-09 13:02:40
![](https://img.aspxhome.com/file/2023/5/60315_0s.png)
SpringBoot实现redis缓存菜单列表
2023-11-24 07:39:20
Android RecyclerView基本使用详解
2023-07-24 21:13:30
![](https://img.aspxhome.com/file/2023/6/86016_0s.gif)
java中sleep方法和wait方法的五个区别
2023-08-27 18:37:23
![](https://img.aspxhome.com/file/2023/5/61035_0s.webp)
Java中驼峰命名与下划线命名相互转换
2021-10-01 00:56:47
深入理解java内置锁(synchronized)和显式锁(ReentrantLock)
2023-11-19 00:10:57
java中多个@Scheduled定时器不执行的解决方法
2023-03-19 02:32:34
Java获取控制台输入的两种方法小结
2023-11-29 12:40:44