八股:MySQL 的 B+ 树中查询数据的全过程详解
MySQL 的 B+ 树中查询数据的全过程详解
对话解析
大佬: 我刚才在用Mysql查数据,我知道这个数据是以B+树的形式存储的,那这个B+树里面,是咋找到我想要的数据的,你能给我详细讲讲不?
凯歌: 没问题,老样子,我先上图,再解释。
凯歌: 图一展示从根节点到叶子节点之间的过程
凯歌: 图二展示从叶子节点到数据的过程
凯歌: 两个图看完后我们开始讲解详细过程
凯歌: 第一步:从根节点到开始,我们通过二分查找,找到我们要找的数据在哪一个区间,定位到下一阶的子节点位置
凯歌: 第二步:从内部节点开始,我们继续通过二分查找,找到我们要找的数据在哪一个区间,定位到下一阶的子节点位置
凯歌: 第三步:还是通过二分查找,我们找到叶子节点,所在的位置,然后进入叶子节点。
凯歌: 第四步:进入叶子节点后,我们先找到页目录,我们继续通过二分查找,找到数据所在的槽
凯歌: 第五步:找到槽后,比如我们想要找到主键为3的记录,我们可以知道,槽2可以调到数据4
凯歌: 第六步:记录是单项链表连接的,我们从槽2->主键4->主键3,这是行不通,这时,因为槽是连着的,所以我们可以得到槽1的位置
凯歌: 第七步: 得到槽1的位置后,我们通过槽1->主键2->主键3得到最终数据
PS:实际上,每个分组的记录是有数量限制的,上面是简化
第一个分组,只有一条记录
中间分组可以有4-8条记录
最后一条分组1-8条记录
大佬: 哦哦哦,这么看,我就差不多了。
凯歌:以上,就是我们本次关于MySQL 中B+树中查询数据的全过程的讲解了,若有错误,请帮忙指出,一定修改。
评论
问答助学
相关内容
0个评论
全部评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
内容推荐
day48伙伴匹配系统开始用ai编写了,基本上都是描述,让ai改动。写好了卡片还有redis,个人用户编辑可以完成了,同时完善了很多前后端功能。不过,我细节没有去做,所以我并不是很熟悉改动了啥。科大讯飞笔试,选择题还行一半一半,出了很多操作系统,数据结构的题,这部分还没刷,编程题很简单,max-a,卡了一会儿,后面觉得是简单leetcode。aicoding先是readme,后面再根据报错改动,原
3
项目部署 | 宝塔 Linux 面板—万能视频下载器
3
Day 29✅ 今天做了:Redis消息队列⏰ 明天计划:继续学消息队列
2
Day 17🧭行动:学习了Python最后一个知识点:异常处理🤓体会:Python 程序一旦发生异常,如果没有捕获处理,程序就会直接崩溃终止。使用"try-except"捕获异常,可以预先写好异常处理方案:比如打印友好提示、记录日志、释放资源,保证程序不会直接退出,还能继续运行。🧑💻代码:try:print("================================")# pri
2
Day1今天学习了java中if的使用
0
