文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

MyBatis批量插入耗时踩坑经验浅谈

2023-09-07 08:57

关注

问题

因项目有新功能需求,看完需求后,开始无脑写bug,写完开始调bug,因为功能原因,我在写业务逻辑的时候部分的数据采用了批量保存,没多想,懒的写sql就直接用了MyBatis自带的saveBatch方法,结果调试的时候,好家伙直接给我干懵了,插入3000条数据耗时15秒

排查原因

日常修bug,先看日志,好像也没毛病,于是把sql日志打印出来,我去,居然是一条条insert去执行的,能不耗时吗

解决处理

首先设置执行批量执行sql

在数据库连接配置中设置该属性:rewriteBatchedStatements=true,
不设置好像mysql识别不了还是jdbc识别不了批操作,我比较菜,所以没就这吧,感兴趣可以自行了解
设置支持批量执行sql

设置完开始验证

方法一、直接使用saveBatch方法

效果

设置支持批量执行后,MyBatis自带的saveBatch方法插入结果,批量插入耗时:579(ps:这里当时没细看,以为好了,但发现耗时还是很高,应该是6、 7秒左右,就换了手写sql的方式,后来才发现saveBatch方法是支持设置执行条数的,默认30条数据执行一次,相当于我插入3000条数据执行了100条insert语句)
执行sql的日志详情

方法二、使用saveBatch方法,并设置批量插入条数

这里设置插入3000条,可以明显看到参数条数变多了,3000条组装成一条insert语句
耗时402
在这里插入图片描述

方法三、手写插入语句

手写插入语句

批量插入耗时157
sql执行日志,一次执行3000条,这里也是一条insert语句,虽说和MyBatis的saveBatch方法一样都是一条sql插入3000条数据,但实际比较下来确实是手写的这种更快写,我也没看为啥,了解的可以直接评论告诉我
在这里插入图片描述
在这里插入图片描述

总结

方法千千万,合理的、适合自己的的就是最好的,毕竟功能实现了就行,哈哈哈,要求就是这么低。(有不同想法的批评和建议都接受,欢迎吐槽)

来源地址:https://blog.csdn.net/qq_35735865/article/details/128929791

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯