经过对MySQL InnoDB的一些性能测试,发现一些可以提高insert效率的方法,供大家参考参考。
一、一条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执行效率高的主要原因是合并后日志量(MySQL的binlog和innodb的事务让日志)减少了, 降低日志刷盘的数据量和频率,从而提高效率。通过合并SQL语句,同时也能减少SQL语句解析的次数,减少网络传输的IO 。
这里提供一些测试对比数据,分别是进行单条数据的导入与转化成一条SQL语句进行导入,分别测试1百、1千、1万条数据记录。