Mysql
redolog的刷盤時機
-
mysql正常關閉的時候
-
redolog buffer寫入超過一半的時候
-
後臺執行緒每隔一秒寫入磁碟一次
- 0 把redolog buffer中的內容刷盤
- 2 把page cache中的內容刷盤
-
事務提交的時候
- 0每次提交事務,redolog留在buffer中不寫入磁碟
- 1每次提交事務,redolog寫入磁碟
- 2每次提交事務,redolog寫入作業系統的檔案快取頁面
binlog的刷盤時機
-
0每次提交事務只寫到作業系統的檔案快取,交給作業系統合適刷盤
-
1每次提交事務都執行fsync刷盤
-
N,N次提交事務,有一次fsync
Redis
aof
對AOF的寫操作實際上不是直接寫到磁碟的,而是寫到一個核心中的緩衝區的,然後非同步地重新整理回磁碟
這個重新整理策略有三種
- 每次寫aof就呼叫fsync,這個效能太差
- 永遠不主動呼叫fsync,由系統決定何時重新整理到磁碟
- 每隔一秒呼叫一次fsync,這個一秒可以配置
rdb
bgsave 和 save