大批量数据高效插入数据库表
对于一些数据量较大的系统,数据库面临的问题除了查询效率低下,还有就是数据入库时间长。特别像报表系统,每天花费在数据导入上的时间可能会长达几个小时或十几个小时之久。因此,优化数据库插入性能是很有意义的。
经过对MySQL InnoDB的一些性能测试,发现一些可以提高insert效率的方法,供大家参考参考。
1、一条SQL语句插入多条数据
常用的插入语句如:
INSERT INTO insert_table
(datetime
, uid
, content
, type
) VALUES (‘0’, ‘userid_0’, ‘content_0’, 0);
INSERT INTO insert_table
(datetime
, uid
, content
, type
) VALUES (‘1’, ‘userid_1’, ‘content_1’, 1);
修改成:
INSERT INTO insert_table
(datetime
, uid
, content
, type
) VALUES (‘0’, ‘userid_0’, ‘content_0’, 0), (‘1’, ‘userid_1’, ‘content_1’, 1);
修改后的插入操作能够提高程序的插入效率。这里第二种SQL执行效率高的主要原因是: (1)通过合并SQL语句,同时也能减少SQL语句解析的次数,减少了数据库连接的I/O开销,一般会把多条数据插入放在一条SQL语句中一次执行; (2)合并后日志量(MyS