[Mysql]日誌刷盤總結

Duancf發表於2024-08-19

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

相關文章