MySQL(四):InnoDB 體系架構

1、InnoDB 體系架構簡述

InnoDB 存儲引擎架構分爲兩部分:

一個是InnoDB內存結構

  • 緩衝池(Buffer Pool)

  • 變更緩衝區(Change Buffer)

  • 自適應Hash索引(Adaptive Hash Index)

  • 日誌緩衝區(Log Buffer)

一個是InnoDB磁盤結構

  • 表結構(Tables)

  • 表索引(Indexes)

  • 表空間(Tablespaces)

  • 雙寫緩衝區(Doublewrite Buffer)

  • 重做日誌(Redo Log)

  • 撤銷日誌(Undo Logs)

InnoDB 存儲引擎採用了後寫機制(還有人稱爲日誌先行策略),也就是說當對數據進行修改時,先記錄在內存中,然後由數據庫線程刷新到磁盤文件。

事務的操作就會記錄成 Redo Log (重做日誌),然後轉換爲順序的IO來提交事務。也就是說當事務記錄到日誌中之後,就表示事務已經完成了,會立即返回信息給用戶。實際上,數據的操作可能還在內存中,並沒有刷新到磁盤。所以,如果這時機器出現故障,那麼這部分數據就會丟失。

InnoDB 存儲引擎通過 Redo Log 來保證數據的一致性。有人會說那就保存所有的 Redo Log 不就萬無一失了,這樣系統出現故障或者崩潰後,根據日誌重建數據,很顯然這樣是理想狀態。InnoDB 存儲引擎爲了解決這個問題,引入了檢查點機制,通過定時檢查,可以保證在檢查點之前的日誌都寫入磁盤,只會丟失一小部分數據。那麼這些機制具體是怎麼運轉的呢,小編會另起文章詳細參數。下面先上兩張圖,從整體上看一下 InnoDB 存儲引擎的架構,後文會對其進行分解闡述。

官網的InnoDB 存儲引擎圖:

在這裏插入圖片描述

下圖是網上找到的InnoDB 存儲引擎架構圖,很遺憾最終沒有找到出處,感謝繪製這張圖的作者。

在這裏插入圖片描述

2、參考文獻

  1. 《高性能MySQL(第3版)》
  2. 《MySQL技術內幕:InnoDB存儲引擎(第2版)》
  3. 《MySQL源碼庫》
  4. 《MySQL參考手冊》
  5. 《MySQL實戰45講》
  6. 《MySQL 是怎樣運行的:從根兒上理解 MySQL》
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章