学习《MySQL是怎样运行的》,感谢作者!
不同类型的页简介#
页是InnoDB管理存储空间的基本单位,1个页的大小一般是16KB
InnoDB为了不同目的设计多种不同类型的页,包括存放表空间头部信息 的页、存放Change Buffer 信息的页、存放INODE信息的页、存放undo 日志信息的页
这里说的是存放表中记录的那种类型的页,这种存放记录的页称为索引页(INDEX页)
暂时称之为数据页
数据页结构快览#
1个页有16KB,这部分存储空间被划分为了多个部分(7部分),不同部分有不同的功能
| 名称 | 中文名 | 占用空间 | 大小 |
|---|---|---|---|
| File Header | 文件头部 | 38 字节 | 页的一些通用信息 |
| Page Header | 页面头部 | 56 字节 | 数据页专有的一些信息 |
| Infimum + Supremum | 页面中的最小记录和最大记录 | 26 字节 | 两个虚拟的记录 |
| User Records | 用户记录 | 不确定 | 用户存储的记录内容 |
| Free Space | 空闲空间 | 不确定 | 页中尚未使用的空间 |
| Page Directory | 页目录 | 不确定 | 某些记录的相对位置 |
| File Trailer | 文件尾部 | 8 字节 | 校验页是否完整 |
记录在页中的存储#
每插入一条记录,从Free Space申请一个记录大小的空间,并将这个空间划分到UserRecords部分。当FreeSpace部分的空间全部被UserRecords部分替代掉后,意味着该页用完。如果再插入,就需要申请新的页

记录头信息的秘密#
mysql> CREATE TABLE page_demo(
c1 INT,
c2 INT,
c3 VARCHAR(10000),
PRIMARY KEY(c1)
) CHARSET=ascii ROW_FORMAT=COMPACT;
Query OK, 0 rows affected (0.03 sec)



