八股: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个评论
全部评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
内容推荐
Day 35✅ 今天做了:1、扇贝英语单词打卡2、英语听说读写、听力练习3、微信阅读15分钟4、编程导航学习⏰ 明天计划:待定📚 今日感悟:Keep going!
2
Day 113✅ 今天做了:学习了sql查询进阶⏰ 明天计划:继续学习MySQL
1
day26使用腾讯云,在云服务器上安装docker,git,nginx,大部分用agent自动完成。明天就能部署了本地部署了一遍,用docker desktop部署的。校招投了一些,毕竟是2026应届毕业生,与很多校招时间上不匹配,投了一个银行还有一些大厂这几天看了ai知识,下载ai工具,熟悉ai作业,windsurf额度用完了,trae额度还挺多的,Cursor还没使用,已经安装了。明天部署完项
3
Day 2✅ 今天做了:RAG基础剩余部分以及作业⏰ 明天计划:RAG进阶📚 今日感悟:通过云知识库可以简化开发流程
1
Day 6~7✅ 今天做了:这两天学习了[工具调用 学习进度100%,掌握进度60%] 工具调用进阶知识,注入工具上下文、立即返回等简单的设置,以及工具执行模式管理工具给client使用。[MCP协议 学习进度70%, 掌握进度40%] mcp与工具调用区别、mcp的sse和stdio的两种调用方式,学习了程序使用mcp⏰ 明天计划:mcp收尾,并实操mcp的代码编写。📚 今日感悟:学习并理解工
2
