MySQL 中规定一个页中至少要存放两行记录
Infimum
记录是一个页面中最小的记录;Supremum
记录是一个页面中最大的记录。(由5字节大小的记录头信息和8字节大小的一个固定单词组成,人为规定)
Infimum
和Supremum
记录的heap_no
值分别为0和1。
堆中记录的heap_no值一旦分配便不可改变,即使记录被删除,该删除记录的heap_no值也依旧保持不变
next_record
值记录从当前记录的真实数据到下一条记录的真实数据的距离(下一条数据指按照主键值从小到大排序的下一条记录)
+
next_record
指向真实数据开始的位置,该位置向左是记录头信息,向右是真实数据,这便与之前行结构部分变长字段列表、NULL值列表逆序存放相对应。
删除一条记录时
deleted_flag
值设置为1
next_record
值修改为该条记录的next_record
值next_record
值为0
Supremun
记录的n_owned
值减小1
Supremum
和Infimum
)划分为几个组。n_owned
属性表示该组内有几条记录。每个分组的记录条数有以下规定:
Infimum
记录所在的分组只能有一条记录Supremum
记录所在的分组拥有的记录条数只能在1-8之间给记录进行分组的步骤:
Infimum
和Supremum
两条记录,它们分属于两个分组。页目录中只有两个记录Infimum和Supremum
记录偏移量的槽n_owned
值加1
8
时,再插入一条记录便会将这两个组拆分为分别包含四条记录和五条记录的两个组。File Header中的FIL_PAGE_LSN
,表示页面被最后修改时对应的日志序列号的值
在将页从内存刷新到磁盘时,为保证页的完整性,页首和页尾都会存储页中数据的校验和,以及页面最后修改时对应的LSN值(页尾只会存储LSN值的后4字节)。若页首和页尾的校验和以及LSN值校验不成功,就说明刷新期间出现了问题。