返回
重磅揭秘!InnoDB引擎中数据页结构的内幕
闲谈
2023-10-17 06:56:31
InnoDB 引擎是 MySQL 的默认引擎,也是我们最常用的引擎。为了更好地学习索引,我们有必要深入了解 InnoDB 引擎中的数据页结构。
一、页的简介
页是 InnoDB 管理存储空间的基本单位,一个页的大小为 16KB。每个页包含多个行数据,行数据之间使用双向链表连接。
二、页头信息
页头信息位于页的起始位置,占用了页的前 38 个字节。页头信息包括以下内容:
- 页号:页的唯一标识符。
- 页类型:页的类型,有数据页、索引页等。
- 前滚指针:指向下一个页的指针。
- 后滚指针:指向前一个页的指针。
- 校验和:页的校验和,用于检查页数据的完整性。
三、行数据信息
行数据信息位于页头信息之后,占用了页的大部分空间。行数据信息包括以下内容:
- 行数据:行数据本身,包括列数据和行指针。
- 行指针:指向下一行的指针。
四、空闲空间信息
空闲空间信息位于行数据信息之后,占用了页的剩余空间。空闲空间信息包括以下内容:
- 空闲空间:页中剩余的未使用的空间。
- 空闲空间指针:指向下一个空闲空间的指针。
五、页尾信息
页尾信息位于页的末尾,占用了页的最后 8 个字节。页尾信息包括以下内容:
- 页尾标志:标识页的结束。
- 页校验和:页的校验和,用于检查页数据的完整性。
六、页的结构图
+-------------------------------------------------+
| 页头信息(38 字节) |
+-------------------------------------------------+
| 行数据信息(可变长度) |
+-------------------------------------------------+
| 空闲空间信息(可变长度) |
+-------------------------------------------------+
| 页尾信息(8 字节) |
+-------------------------------------------------+
七、总结
InnoDB 引擎中的数据页结构是 InnoDB 引擎管理存储空间的基本单位。页的大小为 16KB,包括页头信息、行数据信息、空闲空间信息和页尾信息。页头信息包括页号、页类型、前滚指针、后滚指针和校验和。行数据信息包括行数据本身和行指针。空闲空间信息包括空闲空间和空闲空间指针。页尾信息包括页尾标志和页校验和。