2020-10-15:mysql的雙1設置是什麼?

福哥答案2020-10-15:#福大大架構師每日一題#架構

答案來自知乎:async

其實就是innodb_flush_log_at_trx_commit和sync_binlog兩個參數設置,都設置爲1就是雙1設置。MySQL 默認配置就是雙1配置。
innodb_flush_log_at_trx_commit 是 innodb 引擎的配置,sync_binlog 是 MySQL 引擎上層的配置,都是控制磁盤寫入策略。函數

MySQL innoDB引擎在事務 commit 以後:
1.binlog 寫內存。
2.redo log 寫內存。
3.根據這兩個配置決定這兩個日誌是否刷盤(調用fsync)。
4.commit完成。
innodb_flush_log_at_trx_commit:redo log 的刷盤策略,默認爲1。
1.若是innodb_flush_log_at_trx_commit設置爲0:log buffer將每秒一次地寫入log file中,而且log file的flush(刷到磁盤)操做同時進行.該模式下,在事務提交的時候,不會主動觸發寫入磁盤的操做;
2.若是innodb_flush_log_at_trx_commit設置爲1:每次事務提交時MySQL都會把log buffer的數據寫入log file,而且flush(刷到磁盤)中去;
3.若是innodb_flush_log_at_trx_commit設置爲2:每次事務提交時MySQL都會把log buffer的數據寫入log file,可是flush(刷到磁盤)操做並不會同時進行。該模式下,MySQL會每秒執行一次 flush(刷到磁盤)操做。url

sync_binlog:binlog 的刷盤策略,默認爲0。
若是爲0,像操做系統刷其餘文件的機制同樣,MySQL不會同步到磁盤中去而是依賴操做系統來刷新binary log。
sync_binlog =N (N>0) ,MySQL 在每寫 N次 二進制日誌binary log時,會使用fdatasync()函數將它的寫二進制日誌binary log同步到磁盤中去。操作系統


評論.net

相關文章
相關標籤/搜索