返回

重磅揭秘!InnoDB引擎中数据页结构的内幕

闲谈

InnoDB 引擎是 MySQL 的默认引擎,也是我们最常用的引擎。为了更好地学习索引,我们有必要深入了解 InnoDB 引擎中的数据页结构。

一、页的简介

页是 InnoDB 管理存储空间的基本单位,一个页的大小为 16KB。每个页包含多个行数据,行数据之间使用双向链表连接。

二、页头信息

页头信息位于页的起始位置,占用了页的前 38 个字节。页头信息包括以下内容:

  • 页号:页的唯一标识符。
  • 页类型:页的类型,有数据页、索引页等。
  • 前滚指针:指向下一个页的指针。
  • 后滚指针:指向前一个页的指针。
  • 校验和:页的校验和,用于检查页数据的完整性。

三、行数据信息

行数据信息位于页头信息之后,占用了页的大部分空间。行数据信息包括以下内容:

  • 行数据:行数据本身,包括列数据和行指针。
  • 行指针:指向下一行的指针。

四、空闲空间信息

空闲空间信息位于行数据信息之后,占用了页的剩余空间。空闲空间信息包括以下内容:

  • 空闲空间:页中剩余的未使用的空间。
  • 空闲空间指针:指向下一个空闲空间的指针。

五、页尾信息

页尾信息位于页的末尾,占用了页的最后 8 个字节。页尾信息包括以下内容:

  • 页尾标志:标识页的结束。
  • 页校验和:页的校验和,用于检查页数据的完整性。

六、页的结构图

+-------------------------------------------------+
| 页头信息(38 字节)                               |
+-------------------------------------------------+
| 行数据信息(可变长度)                              |
+-------------------------------------------------+
| 空闲空间信息(可变长度)                              |
+-------------------------------------------------+
| 页尾信息(8 字节)                                 |
+-------------------------------------------------+

七、总结

InnoDB 引擎中的数据页结构是 InnoDB 引擎管理存储空间的基本单位。页的大小为 16KB,包括页头信息、行数据信息、空闲空间信息和页尾信息。页头信息包括页号、页类型、前滚指针、后滚指针和校验和。行数据信息包括行数据本身和行指针。空闲空间信息包括空闲空间和空闲空间指针。页尾信息包括页尾标志和页校验和。