《Mysql实例MySQL批量SQL插入性能优化》要点:
本文介绍了Mysql实例MySQL批量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);
MYSQL数据库修改后的插入操作能够提高程序的插入效率.这里第二种SQL执行效率高的主要原因是合并后日志量(MySQL的binlog和innodb的事务让日志)减少了,降低日志刷盘的数据量和频率,从而提高效率.通过合并SQL语句,同时也能减少SQL语句解析的次数,减少网络传输的IO.
这里提供一些测试对比数据,分别是进行单条数据的导入与转化成一条SQL语句进行导入,分别测试1百、1千、1万条数据记录.
2、在事务中进行插入处理.
把插入修改成:
- START TRANSACTION;
- 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);
- ...
- COMMIT;
MYSQL数据库
使用事务可以提高数据的插入效率,这是因为进行一个INSERT操作时,MySQL内部会建立一个事务,在事务内才进行真正插入处理操作.通过使用事务可以减少创建事务的消耗,所有插入都在执行后才进行提交操作.
这里也提供了测试对比,分别是不使用事务与使用事务在记录数为1百、1千、1万的情况.
3、数据有序插入.
数据有序的插入是指插入记录在主键上是有序排列,例如datetime是记录的主键:
- 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);
- INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`)
- VALUES ('2', 'userid_2', 'content_2',2);
MYSQL数据库
修改成:
- 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 ('2', 'userid_2', 'content_2',2);
MYSQL数据库由于数据库插入时,需要维护索引数据,无序的记录会增大维护索引的成本.我们可以参照InnoDB使用的B+tree索引,如果每次插入记录都在索引的最后面,索引的定位效率很高,并且对索引调整较小;如果插入的记录在索引中间,需要B+tree进行分裂合并等处理,会消耗比较多计算资源,并且插入记录的索引定位效率会下降,数据量较大时会有频繁的磁盘操作.
下面提供随机数据与顺序数据的性能对比,分别是记录为1百、1千、1万、10万、100万.
从测试结果来看,该优化方法的性能有所提高,但是提高并不是很明显.
4、性能综合测试
转载请注明本页网址:
http://www.vephp.com/jiaocheng/5729.html