binlog的刷盤策略

mysql只有在事務提交的時候纔會記錄binlog日誌,此時日誌還在內存中,那binlog是什麼時候被刷到磁盤中的呢?
mysql通過sync_binlog控制刷盤,取值範圍0~n
0:不強制要求刷盤,由系統自行判斷什麼時候將binlog寫入磁盤;
1:每次提交事務就將binlog寫入磁盤;
n:每提交n個事務將binlog寫入磁盤;



  • 顯然,sync_binlog爲1是最安全的,每次提交事務就將binlog寫入磁盤,數據一致性最好。但實際情況中,往往爲了提高數據庫的性能,會將sync_binlog適當設大,來減少磁盤IO次數,用數據一致性換性能。
  • 在對數據庫一致性要求不高或數據沒那麼重要的業務場景,完全可以把sync_binlog設置在100~1000範圍內的某個值,以此來提高數據庫的性能。而在對數據一致性要求高的業務場景或特別重要的數據,比如訂單則建議將sync_binlog的值設置爲1,這樣可以保證哪怕數據庫掛了也不會丟失數據。
  • sync_binlog的默認值是0,這時由系統會自行判斷將binlog寫入磁盤的時機。數據庫可能會在空閒的時候綜合考慮緩存的binlog日誌大小來決定是否要將binlog寫入磁盤。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章