MST

星途 面试题库

面试题:MySQL InnoDB记录存储结构之页结构

请简述MySQL InnoDB存储引擎中页的常见类型及其作用,并且说明记录在页中的存储方式是怎样的?
38.4万 热度难度
数据库MySQL

知识考点

AI 面试

面试题答案

一键面试

常见页类型及其作用

  1. 数据页(B+树节点)
    • 作用:用于存储表中的实际数据记录,是InnoDB存储数据的核心页类型。在B+树结构中,叶子节点的数据页存放数据记录,非叶子节点的数据页存放目录项记录(用于索引查找定位数据)。
  2. 系统页
    • 作用:记录了整个表空间的一些元数据信息,比如表空间ID、段信息等,对整个数据库的管理和运行起着关键作用。
  3. Undo页
    • 作用:存储undo日志,用于事务的回滚操作。当事务执行过程中需要撤销已执行的操作时,undo页中的日志提供了必要的信息。
  4. 回滚段头部页
    • 作用:管理回滚段的相关信息,回滚段包含多个undo页,回滚段头部页负责协调和记录这些undo页的使用情况等。
  5. 索引页
    • 作用:存储索引相关信息,帮助快速定位数据。InnoDB的索引采用B+树结构,索引页构成了B+树的非叶子节点和叶子节点(如果是二级索引,叶子节点只存索引列和主键),通过索引页可以加速查询操作。

记录在页中的存储方式

  1. 变长字段长度列表:在记录开始处,以逆序存放每个变长字段(如varchar类型)的长度。这样可以方便在读取记录时,快速定位每个变长字段的实际长度。
  2. NULL值列表:如果表中有允许为NULL的列,会有一个NULL值列表,以二进制位的形式标记哪些列的值为NULL。每个列对应一个二进制位,0表示该列值为NULL,1表示该列值不为NULL。
  3. 记录头信息:包含了一些关于记录的重要信息,如记录的类型(普通记录、目录项记录等)、记录是否被删除、指向记录所在页中下一条记录的指针等。通过记录头信息可以对记录进行基本的管理和操作。
  4. 真实数据:按照表定义的列顺序,存放各个列的实际数据值。对于固定长度的字段,直接按顺序存放;对于变长字段,根据前面变长字段长度列表中的长度信息来存放实际数据。