2020-10-15:mysql的雙1設置是什么?
福哥答案2020-10-15:#福大大架構師每日一題#
[答案來自知乎:](https://www.zhihu.com/question/425704691)
其實就是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(刷到磁盤)操作。
sync_binlog:binlog 的刷盤策略,默認為0。
如果為0,像操作系統刷其他文件的機制一樣,MySQL不會同步到磁盤中去而是依賴操作系統來刷新binary log。
sync_binlog =N (N>0) ,MySQL 在每寫 N次 二進制日志binary log時,會使用fdatasync()函數將它的寫二進制日志binary log同步到磁盤中去。
***
[評論](https://user.qzone.qq.com/3182319461/blog/1602716860)
MySQL
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。