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)。對應查詢速度變慢。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章