MySQL批量SQL插入的性能优化示例


小编给大家分享一下MySQL批量SQL插入的性能优化示例,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!对于一些数据量较大的系统,数据库面临的问题除了查询效率低下,还有就是数据入库时间长。特别像报表系统,每天花费在数据导入上的时间可能会长达几个小时或十几个小时之久。因此,优化数据库插入性能是很有意义的。一条SQL语句插入多条数据第二种SQL执行效率高的主要原因是合并后日志量[mysql的binlog和InnoDB的事务让日志]减少了,降低日志刷盘的数据量和频率,从而提高效率。通过合并SQL语句,同时也能减少SQL语句解析的次数,减少网络传输的IO。测试对比数据,分别是单条数据的导入与转换成一条SQL语句进行导入。
在事务中进行插入处理使用事务可以提高数据的插入效率,这是因为进行一个insert操作时,MySQL内部都会建立一个事务,在事务内才进行真正插入处理操作。通过使用事务减少创建事务的消耗,所有插入都在执行后才进行提交操作测试对比数据,分笔试不适用事务和使用事务操作数据有序插入数据有序的插入是插入记录在主键上的有序排序由于数据库插入时,需要维护索引数据,无需的记录会增大维护索引的成本。参照InnoDB使用的B+tree索引,如果每次插入记录都在索引的最后面,索引的定位效率很高,并且对索引调整较少;如果插入的记录在索引中间,需要B+tree进行分裂合并等处理,会消耗比较多计算资源,并且插入记录的索引定位效率会下降,数据量较大时会有频繁的磁盘操作。测试对比数据,随机数据与顺序数据的性能对比先删除索引,插入完成后重建索引性能综合测试合并数据+事务的方法在较少数据量时,性能提升很明显,数据量较大时,开发云主机域名性能急剧下降,这是由于此时数据量超过了innodb_buffer的容量,每次定位索引涉及较多的磁盘读写操作,性能下降较快。合并数据+事务+有序的方法在数据量达到千万级以上表现依然良好,在数据量较大时,有序数据索引定位较为方便,不需要频繁对磁盘进行读写操作,可以维持较高注意事项SQL语句是有长度限制,在进行数据合并在同一SQL中务必不能超过SQL长度限制,通过max_allowed_packet配置可以修改,默认1M,测试时可以修改为8M。事务需要控制大小,事物太大可能影响执行的效率。MySQL有innodb_log_buffer_size配置项,超过这个值会把innodb的数据刷到磁盘中,这时,效率会有所下降。所以较好的做法是,在数据达到这个值前执行事务提交。看完了这篇文章,相信你对MySQL批量SQL插入的性能优化示例有了一定的了解,想了解更多相关知识,欢迎关注开发云行业资讯频道,感谢各位的阅读!

相关推荐: multi 多实例启动mysql教程

下文内容主要给大家带来multi 多实例启动mysql教程,这里所讲到的知识,与书籍略有不同,都是开发云专业技术人员在与用户接触过程中,总结出来的,具有一定的经验分享价值,希望给广大读者带来帮助。假设云服务器之前有一个3306的实例在运行了,我们要再添加一个3…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 06/12 20:12
下一篇 06/12 20:12

相关推荐