InnoDB优化插入速度

2019-02-14 10:31:47   MySQL

调整MySQL的配置

innodb_buffer_pool_size
innodb_log_file_size
innodb_log_buffer_size
innodb_flush_log_at_trx_commit 

innodb_buffer_pool_size 这个参数对于InnoDB的查询和更新效率提升非常明显,在数据量逐渐增大时,如果使用默认值,会慢的出奇,适当增大此参数,性能会大幅度提升,当然是以内存消耗增加为代价,空间换取时间。如果是专门用于MySQL的服务器,可以将这个值调整到内存的百分之八十左右。

innodb_log_file_size 对于写操作,尤其是大数据量的操作影响是比较大的。64M-512M,视情况而定。

innodb_log_buffer_size 刷写日志的缓冲区大小,没必要太大,一秒flush的速度是一定的,16M差不多了。

innodb_flush_log_at_trx_commit 设置为0,安全性可能比较差,但是写速度会大幅度提升。 0,log buffer每秒就会被刷写日志文件到磁盘,提交事务时无操作。 1,每次提交事务,都会将log buffer刷写到日志 2,每次提交事务都会写日志,但不执行刷操作,每秒定时刷入日志文件。 默认值为1,可以保证ACID,但是性能是最差的。

刷和写是两个操作(两个系统调用),也就是flush和write,其中write只是把数据写入操作系统缓存中,也就是内存中,只有flush时才会持久化到硬盘。设置0和2在断电和系统崩溃时会丢失最后一秒数据,但由于是系统调用,如果flush的时候阻塞了,可能丢失不止1s的数据。

vien.tech版权所有,允许转载,但转载请注明出处和原文链接: https://vien.tech/article/12
欢迎小伙伴们在下方评论区留言 ~ O(∩_∩)O
文章对我有帮助, 点此请博主吃包辣条 ~ O(∩_∩)O

猜你喜欢


评论

There are no comments yet.
未登录

登录后即可发表评论

登录或注册