MySQL 数据页及索引
2021-05-30 01:58:15 0 举报
MySQL 数据页及索引
作者其他创作
大纲/内容
Tom
3
0
Hanmei
font color=\"#ff0000\
页 30
表模型:CREATE TABLE index_demo( font color=\"#ff0000\
13
页 32
30
1003
delete_mask min_rec_mask n_owned heap_no record_type next_record id name age 其他
2
31
页 33
Ljy
32
delete_mask min_rec_mask n_owned heap_no record_type next_record
Dgl
12
1
Jack
Li
MySQL 数据页
1007
41
28
其他
15
16
数据记录图示:
第六条记录:
20
列名称
大小(单位:bit)
描述
预留位1
没有使用
预留位2
delete_mask
删除标记:0-未删除,1-已删除
min_rec_mask
当前记录是否为非叶子节点中的最小记录
n_owned
4
每个槽(分组)最后一条记录的此属性表示当前槽中有多少条记录
heap_no
当前记录在本页中的位置,默认有2条,0-最小记录,1-最大记录,用户记录从2开始
record_type
当前记录的类型:0-普通记录,1-B+树非叶节点记录,2-页的最小记录,3-页最大记录
next_record
表示下一条记录的相对位置,姑且理解为指向下一条记录的指针
c1
不确定
用户定义的主键
c2
用户定义的列
c3
42
6
第七条记录:
最小记录:
11
分组 1
页 28
17
7
10
索引
1004
9
槽 2
delete_mask min_rec_mask n_owned heap_no record_type next_record
槽 0
5
第二条记录:
页 20
1001
Lilei
最大记录:
槽:指向当前分组中最大记录的指针,特点如下:1,将所有正常的记录(包括最大和最小记录,不包括标记为已删除的记录)划分为几个组。2,每个组的最后一条记录的头信息中的n_owned属性表示该组内共有几条记录。3,将每个组的最后一条记录的地址偏移量(指向分组中最大记录的指针)按顺序存储起来,每个地址偏移量也被称为一个槽(英文名:Slot)。这些地址偏移量都会被存储到靠近页的尾部的地方,也被称为 页目录(Page Directory)。页目录:可以理解成所有未删除记录(包括最大和最小记录)的一级跳表,页目录中的相邻 2个槽映射到记录链表囊括了多个记录,根据主键查询时可以更方便的使用二分查找法定位到具体记录
第一条记录:
1005
8
Hhh
以下图示基于如下假设:1,一个数据页 16k,可以存储 3条数据;2,一个数据页可以存储 4条目录项 3,连线表示指针4,记录头(蓝色)区域只展示 record_type5,橙色表示 b style=\
为了方便演示,我们只展示记录的用户列和record_type,next_record 用指针表示。蓝色表示默认的记录头信息橙色表示记录数据区灰色表示其他属性
第四条记录:
页 10
infimum
supremum
分组 0
槽 1
14
页 9
页 17
第八条记录:
分组 2
1008
1006
第五条记录:
第三条记录:
1002
0 条评论
下一页