Mysql在插入大量数据(十万级或者百万级别)时效率会变得很差,所以需要采用以下方法来提高其插入效率。
a) 关闭自动提交 ,改为手动提交
connect.setAutoCommit(false);
插入数据完后最后再con.commit();
b) 拆分数据,多线程入库
c) 一条插入语句插入多条数据
insert into tableName (colume1,colume2, colume3)
values(1,2,3,), (4,5,6,), (7,8,9) ........
d) 使用批处理
可以加上批处理技术,但是使用了一条语句插入多条数据后,批处理的作用就不大了
可能碰到的问题
1. 因为一条sql语句可能会很大,但是Mysql数据库会对单次插入的数据大小有限制,所以应该更改数据库中的max_allowed_packet值,将此值调大即可,当该值过小时会抛出一个异常,根据异常的堆栈信息便可定位到解决方案