从120s到3s!MyBatis批量插入数据优化分享,那叫一个优雅!

您所在的位置:网站首页 批量导入1000万条数据怎么导入的 从120s到3s!MyBatis批量插入数据优化分享,那叫一个优雅!

从120s到3s!MyBatis批量插入数据优化分享,那叫一个优雅!

2024-07-16 08:32| 来源: 网络整理| 查看: 265

概述

最近在压测一批接口,发现接口处理速度慢的有点超出预期,感觉很奇怪,后面定位发现是数据库批量保存这块很慢。

这个项目用的是 mybatis-plus,批量保存直接用的是 mybatis-plus 提供的 saveBatch。

我点进去看了下源码,感觉有点不太对劲:

我继续追踪了下,从这个代码来看,确实是 for 循环一条一条执行了 sqlSession.insert,下面的 consumer 执行的就是上面的 sqlSession.insert:

然后累计一定数量后,一批 flush。

从这点来看,这个 saveBach 的性能肯定比直接一条一条 insert 快。

我直接进行一个粗略的实验,简单创建了一张表来对比一波!

粗略的实验

1000条数据,一条一条插入

@Test void MybatisPlusSaveOne() {     SqlSession sqlSession = sqlSessionFactory.openSession();     try {         StopWatch stopWatch = new StopWatch();         stopWatch.start("mybatis plus save one");         for (int i = 0; i 


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3