系统表空间
可以看到,系统表空间和独立表空间的前三个页面(页号分别为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
用于校验页是否完整