MYSQL Checkpoint 優化

一、checkpoint檢查點爲什麼產生
  頁操作在緩衝池完成,那麼緩衝池就是爲了協調CPU和磁盤速度,所以頁上做了數據變更,就成了髒頁,就需要從緩衝池刷新到硬盤,那怎麼刷新呢。頻繁肯定不行,還是很多以後再提交或者不用提交,直接影響後續恢復。
數據庫都是這種策略 Write Ahead Log 事物提交時,先寫重做日誌,再修改頁,

因此永遠不刷頁寫日誌有兩個條件:
緩衝池可以緩衝所有的數據
重做日誌可以無限增大
顯然以上條件後續無法滿足,幾個T的數據庫,瘋狂增長的日誌。

此時就需要一個完整的方案機制,去滿足可行性條件,然後進行刷新。

二、checkpoint檢查點解決什麼

縮短數據庫的恢復時間: checkpoint之前的已經刷盤,只需要恢復後邊的重做日誌
緩衝池不夠用時,將髒頁刷新到磁盤:同樣緩衝池不夠用的時候,也需要更新髒頁到磁盤。
重做日誌不可用時,刷新髒頁:重做日誌是組,循環使用,如果循環之前還需要用到之前的日誌。
MYSQL Checkpoint 優化
執行show engine innodb status \G;
Warnings:生產上這個checkpoint和flushed up 的pos經常不一致。

三、checkpoint檢查點優化參數設置

兩種類型:
Sharp Checkpoint   數據庫關閉時刷新所有的髒頁到磁盤

Fuzzy Checkpoint  只刷新一部分髒頁到磁盤,而不是全部

MYSQL Checkpoint 優化
這個參數就是默認的工作方式。Sharp Checkpoint。

針對Fuzzy Checkpoint,以下幾種情況會用到:  
master thread checkpoint   差不多每秒或者每十秒刷新部分髒頁到磁盤,異步,不影響查詢操作。
flush_lru_list checkpoint 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章