索引页
InnoDB存放数据记录的页叫索引页,页是InnoDB管理存储空间的基本单位,大小一般是16KB。
索引页分为7个部分:
File Header,表示页的一些通用信息,如页号、上一页页号、下一页页号,占固定的38字节。
Page Header,表示索引页专有的一些信息,如页中的记录的数量、槽数量,占固定的56个字节。
Infimum + Supremum,两个虚拟的行记录,分别表示页中的最小和最大记录,占固定的26个字节。
User Records:真实存储我们插入的记录的部分,大小不固定。
Free Space:页中尚未使用的部分,大小不确定,插入数据时需要从这里申请空间。
Page Directory:页中的某些记录相对位置,也就是各个槽在页面中的地址偏移量,大小不固定,插入的记录越多,这个部分占用的空间越多。
File Trailer:用于检验页是否完整的部分,占用固定的8个字节,内存同步到磁盘时检验页的完整性。
页的槽(页分组)
InnoDB把页中的记录划分为若干个组,每个组的最后一个记录的地址偏移量作为一个槽,存放在Page Directory中,所以在一个页中根据主键查找记录是非常快的,分为两步:
通过二分法确定该记录所在的槽,并找到该槽所在分组中主键值最小的那条记录。
通过记录的next_record属性遍历该槽所在的组中的各个记录。