问题 因项目有新功能需求,看完需求后,开始无脑写bug,写完开始调bug,因为功能原因,我在写业务逻辑的时候部分的数据采用了批量保存,没多想,懒的写sql就直接用了mybatis自带的saveBatc
因项目有新功能需求,看完需求后,开始无脑写bug,写完开始调bug,因为功能原因,我在写业务逻辑的时候部分的数据采用了批量保存,没多想,懒的写sql就直接用了mybatis自带的saveBatch方法,结果调试的时候,好家伙直接给我干懵了,插入3000条数据耗时15秒
日常修bug,先看日志,好像也没毛病,于是把sql日志打印出来,我去,居然是一条条insert去执行的,能不耗时吗
在数据库连接配置中设置该属性:rewriteBatchedStatements=true,
不设置好像Mysql识别不了还是jdbc识别不了批操作,我比较菜,所以没就这吧,感兴趣可以自行了解
设置支持批量执行后,MyBatis自带的saveBatch方法插入结果,批量插入耗时:579(ps:这里当时没细看,以为好了,但发现耗时还是很高,应该是6、 7秒左右,就换了手写sql的方式,后来才发现saveBatch方法是支持设置执行条数的,默认30条数据执行一次,相当于我插入3000条数据执行了100条insert语句)
这里设置插入3000条,可以明显看到参数条数变多了,3000条组装成一条insert语句
耗时402
批量插入耗时157
sql执行日志,一次执行3000条,这里也是一条insert语句,虽说和MyBatis的saveBatch方法一样都是一条sql插入3000条数据,但实际比较下来确实是手写的这种更快写,我也没看为啥,了解的可以直接评论告诉我
方法千千万,合理的、适合自己的的就是最好的,毕竟功能实现了就行,哈哈哈,要求就是这么低。(有不同想法的批评和建议都接受,欢迎吐槽)
来源地址:https://blog.csdn.net/qq_35735865/article/details/128929791
--结束END--
本文标题: MyBatis批量插入耗时踩坑经验浅谈
本文链接: https://lsjlt.com/news/397918.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-10-23
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0