MyBatis批量插入数据优化,新增参数大幅提升操作效率

项目中进行接口压测,发现批量插入的速度有点超出预期,感觉很奇怪,经过定位后发现mybatise-plus批量保存的处理十分缓慢,使用的是saveBatch方法,这点有点想不通。于是就进行了相关内容分析。

根据mybatise-plus中saveBatch的方法进行源码查看:

3460ba39b987f21083b19e1440b791f5.jpeg

继续跟踪逻辑,从代码上看,确实是一条条执行了sqlSession.insert(sqlStatement, entity) 方法。


471e80ab64c859079df5fc21786360e7.jpeg

继续跟踪,下面的consumer执行的就是上面的sqlSession.insert方法:

9d8db746d696c80740ec7c636048d07d.jpeg

具体执行逻辑中是累计到 一定数量后,一批数据进行flush。

其实,从上述的代码实现上看,整个实现机制跟我们预想的差不多,基本上是批量的实现思路。这种批量的处理肯定比一条条的insert要快。

但是,为什么还是如此的缓慢。

下面我们就进行一个粗略的实验,来对比一波。现在使用4种方式进行比较:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值