八股: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 68时间19:00~ 22:00(3h)✅ 今天做了:Component注解、Mybatis配置、使用⏰ 明天计划:Lombok、Mapper映射、动态SQL📚 今日感悟:自动配置类DataSourceAutoConfiguration ,会读取properties文件,通过注解:@EnableConfigurationProperties(DataSourceProperties.cl
2
Day 19✅ 今天做了:MCP⏰ 明天计划:AI智能体构建📚 今日感悟:今天MCP问题有点多有点杂,明天找时间再捋一下。继续加油
1
Day 25✅ 今天做了:1、扇贝英语单词打卡2、英语听说读写、听力练习3、微信阅读15分钟4、编程导航学习⏰ 明天计划:待定📚 今日感悟:Keep going!
2
Day 104✅ 今天做了:学习了Java反射及快速入门⏰ 明天计划:继续学习Java反射
1
为啥codex老是提示这个啊
2
