提高mybatisplus 批量插入musql 速度的解决方案

解决方案:

1.mybatis plus使用批量插入的方式
2.mysql层面,需要在连接地址上加上下面的参数rewriteBatchedStatements=true
效果明显,亲测有效.

背景

在使用mybatis plus整合mysql的时候,需要将数据批量插入mysql
使用的过mybatis plus的同学都应该知道mbp的封装已经很好了,给我们提供了批量插入的方法:


public interface IService<T> {
    
    

	//批量插入
    default boolean saveBatch(Collection<T> entityList) {
    
    
        return this.saveBatch(entityList, 1000);
    }
	//批量插入
    boolean saveBatch(Collection<T> var1, int var2);
	//批量更新插入
    default boolean saveOrUpdateBatch(Collection<T> entityList) {
    
    
        return this.saveOrUpdateBatch(entityList, 1000);
    }
	//批量更新插入
    boolean saveOrUpdateBatch(Collection<T> var1, int var2);
}

通过代码我们不难看出,mbp批量插入的时候默认值是每1000条插入一次,提高效率,至于为什么是1000次,我还没有研究,不过记得之前看过一个博客,有兴趣的可以看看 传送门

但是实际操作的时候发现速度还是很慢,插入十万所有的数据,耗时也很长,在MySQL的连接地址上加上rewriteBatchedStatements=true,效果明显.哈哈哈,希望有助于你
至于原理,翻阅文档,大概就是应该让mysql批量插入的时候走了预编译吧,生成的sql是类似
insert into xx(a,b,c)valus (?,?,?),(?,?,?)这样的吧

おすすめ

転載: blog.csdn.net/hs_shengxiaguangnian/article/details/115773474