初識InnoDB體系架構和邏輯存儲結構

InnoDB體系簡要架構如圖所示,由後臺線程和內存池組成。InnoDB存儲引擎是多線程的模型,後臺線程包括:數據庫

  • Master Thread:主要負責將緩衝池中的數據異步刷新到磁盤,保證數據的一致性。
  • IO Thread:負責寫IO請求的回調處理。
  • Purge Thread:回收已經使用並分配的undo頁。
  • Page Cleaner Thread:將以前版本中髒頁的刷新打偶放到單獨的線程中來完成。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  InnoDB存儲引擎是基於磁盤存儲的,將其中的記錄按照頁的方式進行管理。數據庫系統一般使用緩衝池技術提升數據庫的總體性能。緩衝池是一塊內存區域, 在數據庫中進行讀取頁的操做,首先將從磁盤讀到的頁存放到緩衝池中;對於數據庫中頁的修改操做,首先修改在緩衝池的頁,而後經過Checkpoint的機制刷新回磁盤。緩衝池內存儲的內容如圖所示,數據頁和索引頁佔據了很大空間。多線程

InnoDB邏輯存儲結構架構

存儲引擎中全部數據都被存儲在表空間中,表又由Segment(段)、Extent(區)、Page(頁)組成。異步

  • 表空間:在默認狀況下,InnoDB存儲引擎有一個共享表空間 ibdata1,全部的數據都放在這個表空間內。
  • 段:常見的段有數據段、索引段、回滾段等。數據段是B+樹的葉子結點,索引段爲B+樹的非索引結點。
  • 區:區由連續頁組成,大小固定爲1MB,一個區中有64個連續的頁。
  • 頁:頁是InnoDB磁盤管理的最小單位也叫作塊,默認大小爲16kB。常見的頁有數據頁、undo頁、系統頁等。類型爲B-tree Node的頁存放的便是表中行的實際數據。
  • 行:InnoDB存儲引擎中數據是按行進行存放的,每一個頁中最多存放7992行記錄。

  -- 圖片來源《MySQL技術內幕:InnoDB存儲引擎》第二版性能