没有合适的资源?快使用搜索试试~ 我知道了~
MySQL数据结构-页结构.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 129 浏览量
2022-07-11
08:23:09
上传
评论
收藏 92KB PDF 举报
温馨提示
试读
1页
MySQL数据结构 数据结构-页结构 页结构 InnoDB设计了多种页结构⽤于存放不同类型的数据,我们现在主要研究存放数据的页,称为索引页或数据页。 每个页由七部分组成,⼤致功能如下: FIleHeader ⽂件头:记录页的通⽤信息,⽐如上下页的页号,页类型,所有的数据页其实是⼀个双链表 PageHeader 页头:记录本页存储记录的状态信息,⽐如本页记录数量,槽数量 Infimum + supremum 最⼩与最⼤记录,是虚拟记录 User Records 真正存数据的地⽅:以链表的形式存储⼀条条⾏记录 Free Space 存数据空间中尚未使⽤的区域 Page Directory 页⽬录:页中某些记录的相对位置,⽤于提升查询效率 File Trailer ⽂件尾:刷盘时校验页是否完整 其中User Records和Page Directory是我们的主要研究⽬标。 User Records 其实从⼀开始是没有user records这个空间的。当插⼊第⼀条数据的时候,会从free space空间分配出⼀个空间到user records, 直到插⼊最后⼀条记录将free space的
资源推荐
资源详情
资源评论
MySQL数据结构数据结构-页结构页结构
InnoDB设计了多种页结构⽤于存放不同类型的数据,我们现在主要研究存放数据的页,称为索引页或数据页。
每个页由七部分组成,⼤致功能如下:
FIleHeader ⽂件头:记录页的通⽤信息,⽐如上下页的页号,页类型,所有的数据页其实是⼀个双链表
PageHeader 页头:记录本页存储记录的状态信息,⽐如本页记录数量,槽数量
Infimum + supremum 最⼩与最⼤记录,是虚拟记录
User Records 真正存数据的地⽅:以链表的形式存储⼀条条⾏记录
Free Space 存数据空间中尚未使⽤的区域
Page Directory 页⽬录:页中某些记录的相对位置,⽤于提升查询效率
File Trailer ⽂件尾:刷盘时校验页是否完整
其中User Records和Page Directory是我们的主要研究⽬标。
User Records
其实从⼀开始是没有user records这个空间的。当插⼊第⼀条数据的时候,会从free space空间分配出⼀个空间到user records,
直到插⼊最后⼀条记录将free space的空间全部⽤完就会再去申请⼀个新的页。
User Records是⽤来存储数据的地⽅,简单来说就是怎么把每⾏数据摆在这个空间⾥。
⾏格式的数据结构中的记录头信息在摆放数据的过程中发挥了重要作⽤,我们来回顾⼀下记录头信息的各个属性。:
delete_mask 标记该记录是否被删除
n_owned 如果当前记录是组内最⼤记录,则代表槽内的记录数
heap_no 当前记录在本页中的位置信息
record_type 表⽰当前记录的类型
0表⽰普通记录,1表⽰B+树⾮叶⼦节点记录,2表⽰最⼩记录,3表⽰最⼤记录
next_record 表⽰当前记录到下⼀条记录的地址偏移量
我们发现有⼀个next_record记录了当前记录到下⼀个记录的地地址偏移量,也就是说我们知道了当前记录的位置就可以找到下⼀个记录。所
以说,整个user record空间是⼀个单链表。链表中的各个节点是按照主键值从⼩到⼤的顺序连接起来的。
Page Directory
现在有⼀个问题,我们要在⼀个页中查找指定的⼀条记录。除了从头遍历还有更⾼效率的⽅法么?Page Directory提供了解决⽅案。
InnoDB会将⼀个页中的所有记录划分成若⼲个组,每组4-8个记录。将每个组最后⼀个记录相对于第⼀个记录的地址偏移量(可以定位到真
实数据记录)提取出来存放在页中⼀个叫做Page Directory的数组中,数组中的元素就是这些地址偏移量,也称为槽(slot)。所以Page
Directory就是由槽组成的。
所以在⼀个页中根据主键查找记录是很快的,步骤为:
1. ⼆分法确定该记录所在的槽,并找到该槽所在分组中主键值最⼩的那条记录。
2. 通过next_record属性遍历单链表找到记录
⼆分法:只适⽤于数组。
链表是顺序存取,不是随机存取,⽤⼆分查找并不能提⾼查找效率,因为你每次还得从第⼀个结点出发,找到指针,,MIDDLE所
指的元素,所以⼀般不在链表内使⽤⼆分查找。
##
##
资源评论
是空空呀
- 粉丝: 167
- 资源: 3万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功