目录
- Mysql InnoDB引擎页目录
- 一、页目录和槽
- 二、页目录的规定
- 三、页目录查找记录的过程
- 总结
Mysql InnoDB引擎页目录
一、页目录和槽
接上一篇,现在知道记录在页中按照主键大小顺序串成了单链表。

那么我使用主键查询的时候,最顺其自然的办法肯定是从第一条记录,也就是 Infrimum 记录开始,一直向后找,只要存在总会找到。这种在数据量少的时候还好说,一旦数据多了,遍历耗时一定非常长。
于是,作者又想到了一个好办法,灵感来自于书本中的目录。我们翻书的时候想查找一些内容,就会去查看目录,然后直接确定好内容所在的页码。
那么对于 InnoDB 来说,过程如下:
- 将所有正常的记录划分为几个组,这里包括那 2 条虚拟记录,但是不包含已经被移除到垃圾链表的记录。
- 每个组内最后一条记录(也就是最大的那条)就是“大哥”,其他记录都是“小弟”,而“大哥”记录的头信息中的 n_owned 属性表示该组内共有几条记录。
- 将每个组中最后一条记录在页面中的地址偏移量单独提取出来,按顺序存储到靠近页尾部的地方。
这个地方就是页目录 Page Directory。而上述的地址偏移量就是该记录的真实数据与页面中第 0 个字节之间的距离,这些地址偏移量被称为槽。
每个槽占用 2 字节,页目录就是由多个槽组成。
二、页目录的规定
在上一篇中,创建的表里存在 4 条数据,那么在页中还要算上 Infimum 和 Supremum,共 6 条记录。
这时候 InnoDB 会把它们分出 2 个组:
- 第一组:只有一个 Infimum 记录
- 第二组:剩下的 5 条记录
每个槽中,存放着每个组里最大的那条记录所在页面中的地址偏移量。
从图中,需要关注页目录的一些点:
- 页目录有 2 个槽,说明记录被分为 2 个组。
- Infimum 记录的 n_owned 属性值为 1,而 Supremum 的为 5。
为什么这 6 条记录要这样分?因为作者对于每组中的记录数量有规定:
- 对于 Infimum 所在的分组只能有 1 条记录。
- Supremum 所在的分组只能在 1~8 条之间。
- 剩下的分组,记录条数范围只能是 4~8 之间。
三、页目录查找记录的过程
现在继续向测试表里插入 12 条数据,也就是说在页中共有 18 条记录。
然后这些记录就被分成了 5 个组,这里参考书籍上的示意图(只保留一些关键属性):
现在,要查找主键是 6 的记录,要如何进行?
因为 5 个槽的编号分别为 0、1、2、3、4 挨着的,并且里面的主键值也都是从小到大进行排序的,可以使用二分法(不清楚的可以百度),那么初始情况下 low=0,high=4:
- 计算中间槽的位置,(0+4)/ 2=2,于是查看槽 2 对应记录的主键值为 8,因为 8 > 6,所以 high = 2,low 不变。
- 重新计算中间槽位置,(0+2)/ 2=1,于是查看槽 1 对应记录的主键为4,因为 4 < 6,所以 high 不变,low = 1。
- 因为 high - low = 1,所以确定主键值为6 的记录就在槽 2 对应的组中。接着找到该组中主键最小的记录,沿着单链表向后遍历,最终找到主键 6 的记录。
这里有个问题,槽对应的值都是这个组的主键最大的记录,如何找到组里最小的记录?比如槽 2 对应最大主键是 8 的记录,那如何找到最小记录。
解决办法是:
- 通过槽 2 找到 槽 1 对应的记录,也就是主键为 4 的记录。
- 主键为 4 的记录的下一条记录就是槽 2 当中主键最小的记录,可以找到主键 5。
总结
在一个数据页中查找指定主键值的记录,过程分为 2 步:
通过二分法确定该记录所在分组对应的槽,然后找到该槽所在分组中主键值最小的记录。
通过记录的 next_record 属性比那里该槽所在组的各个记录,最终找到目标记录。
本文参考书籍: 《mysql是怎样运行的》
以上就是Mysql InnoDB引擎中页目录和槽的查找过程的详细内容,更多关于Mysql InnoDB引擎页目录的资料请关注其它相关文章!
相关推荐:
SEO目的:如何通过精准优化提高网站流量与转化率,百度推广网站关键词
360AI写作怎样?助力创作的新风尚,ai到访
什么是seo公司口碑,seo品牌 ,ai大模型训练是什么意思
seo自己做什么,自己做seo需要花钱吗 ,ai850775
AI免费写作一键生成,效率与创意的完美结合
SOE优化:让你的网站轻松登顶,流量激增的秘密武器,广西网站建设存在问题
AI会生成同一篇文章吗?揭开智能创作的神秘面纱
SEO埋词技巧,如何提升网站排名?,贵州营销推广方法
SEO全套秘籍:提升网站流量与排名的终极指南,荣昌手机网站建设
seo渠道优化是什么,seo渠道推广怎么做 ,ai121333
seo诊断什么意思,seo诊断a5 ,约瑟夫ai
seo词库优化,搜索词条优化 ,ai点选择
SEO需要:如何提升网站排名,打造高效营销利器,seo怎么推广关键词
SEO知道:让你的网站在搜索引擎中脱颖而出,水安建设集团网站
AI免费生成:释放创造力的秘密武器
ChatGPT3.5最新版:智能对话新纪元,带你进入AI的未来世界,ai苔藓生长
什么是seo运营,什么是seo营销 ,ai绘画沙地
SEO热词:提升网站排名的关键秘诀,一句话营销推广怎么写好
ChatGPT显示503:如何应对AI服务不可用的困境?,ai宝贝宝贝
为什么选择收录网站是企业在线营销的必备策略,全网营销与推广
SEO快速优化排名:助你网站跃升搜索引擎首页,ai彩虹立体9怎么做
SEO重要性与企业互联网发展的必由之路,互联网营销推广平台设计
ChatGPT在处理文本时可能无法完全理解上下文的复杂性,肌肉ai
文章缩写AI:高效编辑的未来之光
亚马逊站内seo是什么优化,亚马逊seo关键词优化软件 ,ai画卡通章鱼
AI网站开发与代码创新:引领未来数字化变革的关键,ai ay规则
SEO合同:确保您网站优化成功的关键保障,微博营销推广规则最新
ChatGPT点不了?背后的真相与解决方法,ai.520523
SEO组织:让您的网站流量倍增的秘密武器,seo 绩效标准
AI生成网页模板,轻松打造专业网站,ai网格画法
seo软件叫什么,seo软件视频教程 ,eps ai 缩略图
SEO爱站:提升网站排名,赢得流量的秘密武器,优化网站设计价格多少
交友群都有哪些,交友群是干什么的 ,ai猫csgo
SEO教你如何快速提升网站排名,打破竞争壁垒!,本溪seo优化排名公司
ChatGPT无法加载?检查您的网络设置并尝试重启,轻松解决连接问题!,ai制作艺术字
seo用什么法宝,列出5种seo赚钱方式 ,ai怎么更改文档样式
二次创作的魅力与潜力:创意无限的数字时代,天长外贸网站建设
seo要寻找什么资源,怎么找seo ,ai插画描边
SEO模块:提升网站排名,驾驭数字营销未来,营口网站建设制作平台
seo用什么论坛引流,seo引流方法 ,ai写作续写神器
OpenAI网站崩溃原因:背后的技术与挑战,千牛Ai智投在哪里找
怎么用AI写文章:高效创作的秘诀
SEO职位:数字营销的核心,开启职业新高峰,汕尾网站建设推广厂商
SEO优化:提升网站流量的终极指南,揭阳网站快速推广
为什么“搜狗不收录”会成为企业SEO的新挑战?,烤肉店的线下营销与推广
乘风SEO-引领企业互联网时代的腾飞之路,南昌b站关键词排名优化贵不贵
SEO新手必看:从零开始SEO优化的终极指南,随州网站优化技巧
SEO基础知识解析:如何提升网站排名,助力企业成长,毕节企业建设网站
什么叫改写-解读“改写”背后的艺术与技巧,网站制作建设模板图片
如何查文章AI率?全面解析AI文章检测工具及技巧