面试题答案
一键面试常见页类型及其作用
- 数据页(B+树节点)
- 作用:用于存储表中的实际数据记录,是InnoDB存储数据的核心页类型。在B+树结构中,叶子节点的数据页存放数据记录,非叶子节点的数据页存放目录项记录(用于索引查找定位数据)。
- 系统页
- 作用:记录了整个表空间的一些元数据信息,比如表空间ID、段信息等,对整个数据库的管理和运行起着关键作用。
- Undo页
- 作用:存储undo日志,用于事务的回滚操作。当事务执行过程中需要撤销已执行的操作时,undo页中的日志提供了必要的信息。
- 回滚段头部页
- 作用:管理回滚段的相关信息,回滚段包含多个undo页,回滚段头部页负责协调和记录这些undo页的使用情况等。
- 索引页
- 作用:存储索引相关信息,帮助快速定位数据。InnoDB的索引采用B+树结构,索引页构成了B+树的非叶子节点和叶子节点(如果是二级索引,叶子节点只存索引列和主键),通过索引页可以加速查询操作。
记录在页中的存储方式
- 变长字段长度列表:在记录开始处,以逆序存放每个变长字段(如varchar类型)的长度。这样可以方便在读取记录时,快速定位每个变长字段的实际长度。
- NULL值列表:如果表中有允许为NULL的列,会有一个NULL值列表,以二进制位的形式标记哪些列的值为NULL。每个列对应一个二进制位,0表示该列值为NULL,1表示该列值不为NULL。
- 记录头信息:包含了一些关于记录的重要信息,如记录的类型(普通记录、目录项记录等)、记录是否被删除、指向记录所在页中下一条记录的指针等。通过记录头信息可以对记录进行基本的管理和操作。
- 真实数据:按照表定义的列顺序,存放各个列的实际数据值。对于固定长度的字段,直接按顺序存放;对于变长字段,根据前面变长字段长度列表中的长度信息来存放实际数据。