Mysql Innodb的存儲結構

資料

Mysql官方文檔-Innodb在磁盤中的結構

20190213083326-image.png

表空間(tablespace)

Innodb的所有數據都存放於表空間中,一個表空間對應一個ibd文件,其中的基本元素爲段(segment),這個文件會存儲所有表的數據以及保證回滾的回滾段。

默認的系統表空間爲ibdata1,通過參數innodb_file_per_table配置是否開啓獨立表空間,若開啓則每個表建立後都將新增一個ibd文件(該參數Mysql 5.6.6後默認開啓)。

段(segment)

段是表空間的基本元素,爲管理物理文件的邏輯結構,其空間是無限的可以有無限個區,其主要有索引段、數據段、回滾段等,其內部由區(extent)構成。

Mysql Innodb在新建一個索引時會建立兩個段葉子節點(數據)段及非葉子(索引)節點段,在無索引的Innodb則存在聚集索引的葉子節點段、非葉子節點段。

區/簇(extent)

段的基本組成單位,由64個連續的頁組成,每個頁16k,一個區則1MB,是物理連續的。

當一個區內的數據空間不足時,將在新的區中進行存放。

頁(page)

一個頁默認大小16k,是Innodb磁盤管理的最小單位,在邏輯及物理上都連續。

常見的頁

  • 數據頁(B-tree Node)。
  • Undo頁(Undo Log Page)。
  • 系統頁(System Page)。
  • 事務數據頁(Transaction system Page)。
  • 插入緩衝位圖頁(Insert Buffer Bitmap)。
  • 插入緩衝空閒列表頁(Insert Buffer Free List)。
  • 未壓縮的二進制大對象頁(Uncompressed BLOB Page)。
  • 壓縮的二進制大對象頁(Compressed BLOB Page)。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章