Mybatis-insert插入性能比较

在最近的工作中,遇见了大体量的插入项目,最开始我的设计就是通过for循环再单条insert入库,但是发现上万条后时间就开始慢了下来,刚达好几秒,到达10W数据里的时候更加的慢,前端一直在转圈圈,这是无法忍受的,然后就查了Mysql的插入,还有一次性的插入,就是批处理.
通过insert into table(col1,col2) values ('a','a'),('b','b')...这样的方式可以很快的提高插入效率,相比单条insert再循环,性能提高了不止几倍.
所以在日产工作中当发现有更多的insert操作的时候,要使用批处理
但是在批处理的时候,还是会有问题的,因为Mysql本身的单条sql语句大小是有限制的,默认是1M,大概就是2W条-3W条的记录差不多,一次性的插入数,当更多的时候就会报错
解决方案
1.可以修改mysql的默认配置,将单条sql语句大小更改为10M,或者更大
2.通过一次性只插入1.5W条,然后再来一个insert语句,性能肯定比不过直接修改mysql的语句大小快

为什么一条sql,批处理就比多次插入快呢?
原因就是mysql底层的日志等信息的处理,一条sql就需要一次记录日志等操作,会在磁盘上多次进行变换操作,这也是需要时间的,但是批处理就只需要一次日志. 这就剩下了很多的时间来做真正的业务操作.

posted @ 2021-03-29 20:12  宇。  阅读(461)  评论(0)    收藏  举报