innodb_flush_log_at_trx_commit
在mysql-5.6中innodb_flush_log_at_trx_commit的默认值为1.
mysql> show variables like "innodb_flush_log%";
+--------------------------------+-------+
| Variable_name | Value |
+--------------------------------+-------+
| innodb_flush_log_at_timeout | 1 |
| innodb_flush_log_at_trx_commit | 1 |
+--------------------------------+-------+
取值范围一般可设置为0,1,2.
0代表log buffer以秒为单位刷写日志文件到本地磁盘,提交事务的时候不做任何操作。mysqld崩溃的时候会丢失最后一秒的事务。
1代表每次提交事务的时候,都会将log buffer刷写到日志。
2代表每次提交事务都会写(write)日志,但并不会执行刷(flush)的操作。定时刷到日志文件。但不能保证100%刷到磁盘。当系统崩溃或者断电时候才会丢失最后一秒的数据,innodb恢复时会忽略。
当使用source导入数据库时,效果比较明显,可以设置innodb_file_per_table = 1来查看文件,以对比所耗费时间。服务器1G内存,mysql的innodb_buffer_pool_size=600M时,设置为2,速度提升3倍多(sql文件800M)。对应查询速度变慢。
本文出自 “风行SUI” 博客,请务必保留此出处http://suifengxing.blog.51cto.com/8712413/1566769
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。