2020 10 15 mysql的雙1設定是什麼?

時間 2021-12-28 06:29:46

1樓:

兩個1分別保證redo和binlog的羅盤,將損失降低到最低,但是會多消耗IO,在SSD大行其道的今天,建議重要的業務都要開啟

2樓:乾貨滿滿張雜湊

其實就是innodb_flush_log_at_trx_commitsync_binlog兩個引數設定,都設定為1就是雙1設定。MySQL 預設配置就是雙1配置。

innodb_flush_log_at_trx_commit是 innodb 引擎的配置,sync_binlog是 MySQL 引擎上層的配置,都是控制磁碟寫入策略。

MySQL innoDB引擎在事務 commit 之後:

binlog 寫記憶體

redo log 寫記憶體

根據這兩個配置決定這兩個日誌是否刷盤(呼叫fsync)

commit完成

innodb_flush_log_at_trx_commit:redo log 的刷盤策略,預設為1

如果innodb_flush_log_at_trx_commit設定為0:log buffer將每秒一次地寫入log file中,並且log file的flush(刷到磁碟)操作同時進行.該模式下,在事務提交的時候,不會主動觸發寫入磁碟的操作;

如果innodb_flush_log_at_trx_commit設定為1:每次事務提交時MySQL都會把log buffer的資料寫入log file,並且flush(刷到磁碟)中去;

如果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同步到磁碟中去。

關於mysql的LOCK疑問?

一 表鎖定方法原理 對WRITE,MySQL使用的表鎖定方法原理如下 如果在表上沒有鎖,在它上面放乙個寫鎖。否則,把鎖定請求放在寫鎖定佇列中。對READ,MySQL使用的鎖定方法原理如下 如果在表上沒有寫鎖定,把乙個讀鎖定放在它上面。否則,把鎖請求放在讀鎖定佇列中。二 WRITE鎖和READ鎖優先順...

新的 MySQL 將提供 Memcachd API 作 NoSQL 用,這種 Mysql InnoDB Memcached 的混雜體的效能到底如何?能否對現有的構架體系產生衝擊呢?

Flying mysql從5.6.2起將提供和handlersocket類似的 KV訪問功能。事實上是受到handlersocket的啟發。Mysql和NoSQL的融合應該是乙個趨勢。從對Mysql innoDB的了解深度來說,當然是原生外掛程式會比handlersocket更可靠些。對現有的體系架...

高效能MySQL的對serializable這一段話是否有歧義?

linkorz serializable並非真正讓事務序列執行,只是保證事務的執行結果等效於某個序列schedule。mysql的serializable是用rigorous 2PL實現 pg用ssi實現 light0x00 不矛盾,文中的超時其實是指 鎖等待超時 正是serializable下鎖競...