mysql数据页结构
2023-02-06 22:13:22 0 举报
mysql数据页结构
作者其他创作
大纲/内容
User Records 用户记录
该部分即为页面的剩余空间。具体地,User Records部分从上往下使用剩余空间,而Page Directory则从下往上使用剩余空间。示意图如下所示
用户记录由链表组成,查询效率低,每次都要遍历,为了提高效率,mysql引入了页目录首先将整个链表分为若干个部分(即分组),然后将分组内最后一条记录(即组内最大的记录)的地址存放在一个槽中,各槽根据其所指向的记录按从大到小的顺序在页目录中排列。同时最后一条记录记录头中n_owned记录了该分组内有多少条记录数据查询:这样我们在该页下如果需要根据「主键」来查找某条记录时,即可先利用Page Directory页目录中的各槽,通过二分查找快速确定该记录所在的分组,然后再按链表进行遍历数据插入:从第一个槽0遍历、直至找到第一个 「槽所指向的记录比该新记录大」,n_owned+1,若达到分组最大数,则会进行相应的调整最小记录所在的分组只能有1条记录,即只有它自己最大记录所在的分组的记录数量只能在1~8条记录之间其他分组的记录数量只能在是4~8条记录之间
Infimum、Supremum 最小、最大记录
以Compact行格式为例,由记录头中的next_record组成的单向且有序链表,数据以非有序插入,但链表会做适当调节变成有序链表,其中链表头尾分别为Infimum、Supremum
当前页面的校验和、当前页、上一页、下一页的页号等
Infimum最小记录、Supremum最大记录。由于这两条记录不是用户插入添加的,故通常其又被称作为「伪记录(虚拟记录)」
File Header文件头
Free Space 剩余空间
该数据页中的所有记录数量(含Infimum最小记录、Supremum最大记录、被删除的记录)和有效记录(不含前面括号中的东西)、Free Space剩余空间的起始地址、Page Directory页目录中槽的数量、已被删除记录总数及其链表等
File Trailer 文件尾
Page Directory 页目录
Page Header页头
当前页面的校验和 头尾校验和不一致可认为当前页为脏页
0 条评论
下一页