您现在的位置是:主页 > news > 百度做的网站首页在线客服修改/电脑优化工具
百度做的网站首页在线客服修改/电脑优化工具
admin2025/6/27 23:39:57【news】
简介百度做的网站首页在线客服修改,电脑优化工具,移动互联网开发好就业吗,免费主题网站InnoDB设计了多种页结构用于存放差别类型的数据,我们现在主要研究存放数据的页,称为索引页或数据页。每个页由七部门组成,大致功效如下:FIleHeader 文件头:纪录页的通用信息,好比上下页的页号,页…
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就是由槽组成的。
以是在一个页中凭据主键查找纪录是很快的,步骤为:
二分法确定该纪录所在的槽,并找到该槽所在分组中主键值最小的那条纪录。
通过next_record属性遍历单链表找到纪录
二分法:只适用于数组。
链表是顺序存取,不是随机存取,用二分查找并不能提高查找效率,由于你每次还得从第一个结点出发,找到指针LOW,HIGH,MIDDLE所指的元素,以是一样平常不在链表内使用二分查找。
原文链接:https://www.cnblogs.com/hans-kl/p/12904374.html
本站声明:网站内容来源于网络,若有侵权,请联系我们,我们将及时处理。