1、checkpoint檢查點爲何產生
頁操做在緩衝池完成,那麼緩衝池就是爲了協調CPU和磁盤速度,因此頁上作了數據變動,就成了髒頁,就須要從緩衝池刷新到硬盤,那怎麼刷新呢。頻繁確定不行,仍是不少之後再提交或者不用提交,直接影響後續恢復。
數據庫都是這種策略 Write Ahead Log 事物提交時,先寫重作日誌,再修改頁,數據庫
所以永遠不刷頁寫日誌有兩個條件: 緩衝池能夠緩衝全部的數據 重作日誌能夠無限增大 顯然以上條件後續沒法知足,幾個T的數據庫,瘋狂增加的日誌。
此時就須要一個完整的方案機制,去知足可行性條件,而後進行刷新。
2、checkpoint檢查點解決什麼異步
縮短數據庫的恢復時間: checkpoint以前的已經刷盤,只須要恢復後邊的重作日誌
緩衝池不夠用時,將髒頁刷新到磁盤:一樣緩衝池不夠用的時候,也須要更新髒頁到磁盤。
重作日誌不可用時,刷新髒頁:重作日誌是組,循環使用,若是循環以前還須要用到以前的日誌。
執行show engine innodb status \G;
Warnings:生產上這個checkpoint和flushed up 的pos常常不一致。
3、checkpoint檢查點優化參數設置ide
兩種類型: Sharp Checkpoint 數據庫關閉時刷新全部的髒頁到磁盤 Fuzzy Checkpoint 只刷新一部分髒頁到磁盤,而不是所有
這個參數就是默認的工做方式。Sharp Checkpoint。優化
針對Fuzzy Checkpoint,如下幾種狀況會用到: master thread checkpoint 差很少每秒或者每十秒刷新部分髒頁到磁盤,異步,不影響查詢操做。 flush_lru_list checkpoint