mysql 原理 ~ checkpoint

來源:互聯網
上載者:User

標籤:merge   over   為什麼   mys   shutdown   檢查點   引擎   har   mysql   

一 簡介:今天咱們來聊聊checkpoint

二 定義:

    checkpoin是重做日誌對資料頁重新整理到磁碟的操作做的檢查點,通過LSN號儲存記錄,作用是當發生宕機等crash情況時,再次啟動時會查詢checkpoint點,在該檢查點之後發生的事物修改恢複到磁碟。

三 作用:

     1 縮短資料庫的恢復

     資料庫恢復重做日誌中記錄了的checkpoint的位置,這個點之前的頁已經重新整理回磁碟,只需要對checkpoint之後的重做日誌進行恢複。這樣就大大縮短了恢復。

     2 緩衝池不夠用或者觸發髒頁百分比機制,將髒頁重新整理回磁碟

    緩衝池不夠用時,根據LRU演算法,溢出最近最少使用的頁,如果頁為髒頁,強制執行checkpoint,將頁重新整理回磁碟,達到髒頁比時候,也會自動觸發.

     3 重做日誌不可用(不可被重用,不可被覆蓋),重新整理髒頁

    重做日誌不可用,是指,重做日誌的這部分不可以被覆蓋,為什嗎?因為:這部分對應的資料還未重新整理到磁碟上。重做日誌的設計是迴圈使用的。資料庫恢複時,如果不需要,即可被覆蓋;如果需要,必須強制執行checkpoint,將緩衝池中的頁至少重新整理到當前重做日誌的位置

四  主要工作

    checkpoint:將緩衝池中的髒頁刷回到磁碟。

五 重新整理方式

InnoDB儲存引擎內部, 兩種checkpoint,分別為:
  • Sharp Checkpoint  適用於資料庫關閉時的一致性重新整理 (資料庫關閉時 觸發)
  • Fuzzy Checkpoint  適用於資料庫運行時的部分頁重新整理 (資料庫運行時周期性觸發)

六 資料庫關閉方式參數講解

 在關閉時,參數innodb_fast_shutdown影響著表的儲存引擎為InnoDB的行為。該參數可取值為0、1、2。

  1. 0代表當MySQL關閉時,InnoDB需要完成所有的full purge和merge insert buffer操作,這會需要一些時間,有時甚至需要幾個小時來完成。如果在做InnoDB plugin升級,通常需要將這個參數調為0,然後再關閉資料庫。
  2. 1是該參數的預設值,表示不需要完成上述的full purge和merge insert buffer操作,但是在緩衝池的一些資料髒頁還是會重新整理到磁碟。
  3. 2表示不完成full purge和merge insert buffer操作,也不將緩衝池中的資料髒頁寫回磁碟,而是將日誌都寫入記錄檔。這樣不會有任何事務會丟失,但是MySQL資料庫下次啟動時,會執行恢複操作(recovery)

 可以發現,設定shutdown層級也會影響著checkpoint的操作,比如Sharp Checkpoint 不會在=2的情況下觸發

 

mysql 原理 ~ checkpoint

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.