資料
表空間(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)。