Home  >  Article  >  Database  >  MySQL批量SQL插入性能优化

MySQL批量SQL插入性能优化

WBOY
WBOYOriginal
2016-06-07 15:18:04937browse

欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入 下面提供随机数据与顺序数据的性能对比,分别是记录为1百、1千、1万、10万、100万。 从测试结果来看,该优化方法的性能有所提高,但是提高并不是很明显。 性能综合测试: 这里提供了同时使用上面三种

欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入

 

  下面提供随机数据与顺序数据的性能对比,分别是记录为1百、1千、1万、10万、100万。

MySQL批量SQL插入性能优化

  从测试结果来看,该优化方法的性能有所提高,但是提高并不是很明显。

  性能综合测试:

  这里提供了同时使用上面三种方法进行INSERT效率优化的测试。

MySQL批量SQL插入性能优化

  从测试结果可以看到,合并数据+事务的方法在较小数据量时,性能提高是很明显的,数据量较大时(1千万以上),性能会急剧下降,这是由于此时数据量 超过了innodb_buffer的容量,每次定位索引涉及较多的磁盘读写操作,性能下降较快。而使用合并数据+事务+有序数据的方式在数据量达到千万级 以上表现依旧是良好,在数据量较大时,有序数据索引定位较为方便,不需要频繁对磁盘进行读写操作,所以可以维持较高的性能。

  注意事项:

  1. SQL语句是有长度限制,在进行数据合并在同一SQL中务必不能超过SQL长度限制,通过max_allowed_packet配置可以修改,默认是1M,测试时修改为8M.

  2. 事务需要控制大小,事务太大可能会影响执行的效率。MySQL有innodb_log_buffer_size配置项,超过这个值会把innodb的数据刷到磁盘中,这时,效率会有所下降。所以比较好的做法是,在数据达到这个这个值前进行事务提交。

  [1] [2] 

MySQL批量SQL插入性能优化

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn