八股: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个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
凯歌
下载 APP