第9章 InnoDB的表空间
上一张思维导图
前导知识
系统表空间:对应一个文件系统中一个或多个实际文件
独立表空间:对应文件系统中名为“表名.ibd”的文件
一个表空间最多可以拥有2^32个页
独立表空间
区(extent)
-
对16KB的页来说,物理位置上连续的64个页组成一个区,即区的大小默认1MB
-
当表的数据量很大时,为某个索引分配空间不以页为单位,而是以区为单位
-
区的分类
- FREE:空闲的区
- FREE_FRAG:有剩余空闲页面的碎片区
- FULL_FRAG:没有剩余空闲页面的碎片区
- FSEG:附属于某个段的区
XDES Entry
- 每个区都有一个该结构,记录了区的属性
- 存储在每组开头的第一个页面中
- 直属于表空间的区将该结构组织成三个链表:FREE、FREE_FRAG、FULL_FRAG
组
- 每256个区分为一组
- 每个组的最开始的几个页面类型是固定的
段
- 是一些零散页面和完整的区的集合
- 一个索引会产生两个段,一个叶子节点段,一个内节点段
- 每个段中的区对应的XDES Entry结构可以构成FREE、NOT FULL和FULL三个链表
- 每个段都有一个INODE Entry结构来记录段的属性
碎片区
- 直属于表空间,不属于任何段,可以存储任何段的页,其中有些页也可以不属于任何段