B+树
文章更新时间:2021/05/06
一、引言
B+树是B树的一个变种,用于查询时有更高的性能,常用作于MySQL等关系型数据库的索引进行使用,必须了解一波~
二、B+树
定义:B+树可以简单地看作n叉排序树
常见应用:关系型数据库索引,如mySql索引,和操作系统的文件系统中
优势:
- 由于卫星数据存在于叶子节点,所以中间节点可以存储更多的元素,使得查询的IO次数更少。
- 所有查询都要查找到叶子节点,查询性能稳定。
- 所有叶子节点形成有序链表,便于范围查询。
下面通过一个查找元素的例子来进行解析~
查找元素的流程:
上图是B+树查找元素的流程示例,也许第一次看会比较蛋疼,那我们先从它的几个特点说起:
m阶的B+树独有特征:
- 有k个子树的中间节点包含有k个元素(B树中是k-1个元素),每个元素不保存数据,只用来索引,所有数据都保存在叶子节点。
- 所有的叶子结点中包含了全部元素的信息,及指向含这些元素记录的指针,且叶子结点本身依关键字的大小自小而大顺序链接。
- 所有的中间节点元素都同时存在于子节点,在子节点元素中是最大(或最小)元素。
解析:我们可以对着上面的原则进行解析,图中是一个3阶的B+树,那么m为3,m/2 <= k <= m则k可以取2,3。
- 如根节点,有k【2】个子树包含了k【2】个元素;又如中间节点有k【3】个子树包含了k【3】个元素
- 所有叶子节点包含了整棵树的所有元素信息,且依次从大到小排列,用指针相连
- 所有的中间节点元素都同时存在于子节点,且为其中的最大(或最小)元素,这在图中也能看出。
PS:卫星数据:指的是索引元素所指向的数据记录
PS:B+数作为索引使用时,中间节点不保存数据,只做索引用,所有数据的定位指针【卫星数据】保存在叶子节点中。
PS:在数据库的聚集索引(Clustered Index)中,叶子节点直接包含卫星数据。在非聚集索引(NonClustered Index)中,叶子节点带有指向卫星数据的指针。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律