深入理解InnoDB(7)—系统表空间
系統(tǒng)表空間
可以看到,系統(tǒng)表空間和獨(dú)立表空間的前三個(gè)頁(yè)面(頁(yè)號(hào)分別為0、1、2,類型分別是FSP_HDR、IBUF_BITMAP、INODE)的類型是一致的,只是頁(yè)號(hào)為3~7的頁(yè)面是系統(tǒng)表空間特有的
- 頁(yè)號(hào)3 SYS: Insert Buffer Header 存儲(chǔ)Insert Buffer的頭部信息
- 頁(yè)號(hào)4 INDEX: Insert Buffer Root 存儲(chǔ)Insert Buffer的根頁(yè)面
- 頁(yè)號(hào)5 TRX_SYS: Transction System 事務(wù)系統(tǒng)的相關(guān)信息
- 頁(yè)號(hào)6 SYS: First Rollback Segment 第一個(gè)回滾段的頁(yè)面
- 頁(yè)號(hào)7 SYS: Data Dictionary Header 數(shù)據(jù)字典頭部信息
1.SYS: Data Dictionary Header
記錄4個(gè)表(SYS_TABLES、SYS_COLUMNS、SYS_INDEXES、SYS_FIELDS)的聚簇索引和二級(jí)索引對(duì)應(yīng)的B+樹位置.只要有了上述4個(gè)基本系統(tǒng)表,也就意味著可以獲取其他系統(tǒng)表以及用戶定義的表的所有元數(shù)據(jù)。
比方說(shuō)我們想看看SYS_TABLESPACES這個(gè)系統(tǒng)表里存儲(chǔ)了哪些表空間以及表空間對(duì)應(yīng)的屬性,那就可以:
到SYS_TABLES表中根據(jù)表名定位到具體的記錄,就可以獲取到SYS_TABLESPACES表的TABLE_ID
使用這個(gè)TABLE_ID到SYS_COLUMNS表中就可以獲取到屬于該表的所有列的信息。
使用這個(gè)TABLE_ID還可以到SYS_INDEXES表中獲取所有的索引的信息,索引的信息中包括對(duì)應(yīng)的INDEX_ID,還記錄著該索引對(duì)應(yīng)的B+數(shù)根頁(yè)面是哪個(gè)表空間的哪個(gè)頁(yè)面。
使用INDEX_ID就可以到SYS_FIELDS表中獲取所有索引列的信息。
1.1 File Header
記錄 頁(yè)的一些通用信息
1.2 Data Dictionary Header
記錄一些基本系統(tǒng)表的根頁(yè)面位置以及InnoDB存儲(chǔ)引擎的一些全局信息
1.3 Segment Header
記錄本頁(yè)面所在段對(duì)應(yīng)的INODE Entry位置信息
1.4 Empty Space
用于頁(yè)結(jié)構(gòu)的填充,沒啥實(shí)際意義
1.5 File Trailer
用于校驗(yàn)頁(yè)是否完整
總結(jié)
以上是生活随笔為你收集整理的深入理解InnoDB(7)—系统表空间的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 梦到砍竹子是什么寓意
- 下一篇: 2043. 简易银行系统