mysql中的B+tree树

在B+Tree中,指针的确是指向下一级节点,而不是指向下一级节点中的键。指针的作用是连接上下级节点,将B+Tree以树形结构连接起来,以便在下一级节点中查找需要的数据记录,保证了查询效率。

B+Tree的调整和查找过程中,通常是通过比较键的大小来确定记录的位置和范围,而不是通过指针来定位记录。指针的作用主要是指向对应的下一级节点,在下一级节点中查找数据记录。因此,指针是连接节点之间的桥梁,是B+Tree实现高效查询的重要组成部分。

 

### MySQL B+Tree 素引工作原理 #### 一、B+Tree 的基本特性 B+Tree 是一种多路搜索,其设计目的是为了减少磁盘I/O操作次数。与普通的二叉查找不同,在B+Tree中: - 所有记录节点都位于叶子结点上; - 非叶节点仅保存关键字及其指向子指针- 叶子节点之间存在链表连接,方便范围扫描。 这种结构使得每次访问都能定位到具体的页位置,并且可以快速遍历相邻的数据项[^1]。 #### 二、InnoDB 中 B+Tree 实现特点 在 InnoDB 存储引擎里实现了自己的版本——即所谓的“聚簇索引”。这意味着每张表都有一个唯一的聚集索引(通常是主键),其他辅助索引则会引用这个聚集索引来间接存取实际行数据。当创建一个新的非唯一二级索引时,它实际上是由两部分组成:一部分用于存储该列上的值;另一部分则是对应于这些值所在行的位置信息(也就是主键值)[^4]。 #### 三、查询过程解析 假设有一个基于整数ID建立起来的标准B+Tree索引,当我们执行如下SQL语句 `SELECT * FROM table WHERE id=5;` ,整个检索流程大致如下所示: 1. **根节点读入缓存区** 查询开始前先加载根节点至缓冲池内。 2. **比较并向下层推进** 对当前节点内的所有key进行线性查找,找到第一个大于等于目标id的关键字k_i,接着转向对应的分支继续探索直到达到最底层为止。 3. **命中或未命中的处理** 如果最终落在某个leaf node里面找到了匹配条目,则返回相应结果集给客户端程序;反之如果找不到任何符合条件的结果就报错提示用户不存在这样的记录[^2]. ```sql EXPLAIN SELECT * FROM t_user WHERE user_id = '007'; ``` 上述命令可以帮助开发者查看具体某次select操作所走过的路径以及涉及到哪些index pages.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值