系統表空間
可以看到,系統表空間和獨立表空間的前三個頁面(頁號分別為0、1、2,類型分別是FSP_HDR、IBUF_BITMAP、INODE)的類型是一致的,只是頁號為3~7的頁面是系統表空間特有的
- 頁號3 SYS: Insert Buffer Header 存儲Insert Buffer的頭部信息
- 頁號4 INDEX: Insert Buffer Root 存儲Insert Buffer的根頁面
- 頁號5 TRX_SYS: Transction System 事務系統的相關信息
- 頁號6 SYS: First Rollback Segment 第一個回滾段的頁面
- 頁號7 SYS: Data Dictionary Header 數據字典頭部信息
1.SYS: Data Dictionary Header
記錄4個表(SYS_TABLES、SYS_COLUMNS、SYS_INDEXES、SYS_FIELDS)的聚簇索引和二級索引對應的B+樹位置.只要有了上述4個基本系統表,也就意味著可以獲取其他系統表以及用戶定義的表的所有元數據。
比方說我們想看看SYS_TABLESPACES這個系統表里存儲了哪些表空間以及表空間對應的屬性,那就可以:
-
到SYS_TABLES表中根據表名定位到具體的記錄,就可以獲取到SYS_TABLESPACES表的TABLE_ID
-
使用這個TABLE_ID到SYS_COLUMNS表中就可以獲取到屬于該表的所有列的信息。
-
使用這個TABLE_ID還可以到SYS_INDEXES表中獲取所有的索引的信息,索引的信息中包括對應的INDEX_ID,還記錄著該索引對應的B+數根頁面是哪個表空間的哪個頁面。
-
使用INDEX_ID就可以到SYS_FIELDS表中獲取所有索引列的信息。
1.1 File Header
記錄 頁的一些通用信息
1.2 Data Dictionary Header
記錄一些基本系統表的根頁面位置以及InnoDB存儲引擎的一些全局信息
1.3 Segment Header
記錄本頁面所在段對應的INODE Entry位置信息
1.4 Empty Space
用于頁結構的填充,沒啥實際意義
1.5 File Trailer
用于校驗頁是否完整