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寫入磁盤,
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/252738.html
標籤:其他
