B树与B+树

1.B树 与 B+树

B树

1.N叉搜索树。

2.每个节点上有M个key,划分出了M+1个区间。

3.进行查询的时候,就可以直接从根节点出发,判定当前要查的数据在节点上的哪个区间中,决定下一步往哪里走。

4.进行添加/删除元素可能就涉及到节点的拆分和节点的合并。

B+树

(B+树是B树的改进.针对数据库量身定做的)

1.B+树也是一个N叉搜索树.-个节点上存在N个key,划分成N个区间.

2.每个节点上N个key中,最后-一个, 就相当于当前子树的最大值.

3.父节点上的每个key都会以最大值的身份在子节点的对应区间中存在(key可能会重复出现)
叶子节点这一层 包含整个树的数据全集

4.树会使用链表这样的结构,把叶子节点串起来

此时就可以非常方便的完成数据集合的遍历,并且也很方便的从数据集合中按照范围取出一个"子集"。

2.B+树的优点(相对于B树以及哈希,红黑树)

1.N叉搜索树,树的高度有限的,降低IO的次数。

2.非常擅长范围查询

3.所有查询最终都是落入叶子节点,查询和查询之间的时间开销是稳定的。

不会出现这次特别快,下次特别慢的情况

4.由于叶子节点是全集,会把行数据只存储在叶子节点上,非叶子节点只是存储一个用来排序的key(比如存id)

数据库里是按行组织数据的,创建索引的时候,是针对这一系列进行创建~~

这一行数据,内容是比较多的,而这一个id则内容较少的,叶子节点也会非常占据空间,++非叶子节点,则占不了多少空间++。

||

缓存到内存中

(硬盘上还是要存这些非叶子节点的,但是我们进行查询的时候可以把这些非叶子节点加载到内存中,整体查询的比较过程中就可以在内存中进行了又进一步减少IO访问次数)

3.B树 与 B+树 是否稳定?

对于B树 来说,要查询的元素如果在根节点或者层次比较高的节点,就能非常快的拿到元素,但是如果要查的元素在叶子节点此时就花的时间就会更多,
不稳定的
对于B+树 来说,所有的查询都要最终到叶子上进行查询,无论查哪个元素

整体的时间开销都是差不多的

稳定的

相关推荐
十二同学啊9 小时前
向量数据库:从核心原理到 RAG 与 Java 实战
数据库
蓝速科技10 小时前
会议室门牌公告通知发布选型与落地指南丨蓝速科技
大数据·运维·数据库·人工智能·科技
一 乐13 小时前
二手交易平台|基于springboot + vue二手交易平台(源码+数据库+文档)
java·数据库·vue.js·spring boot·小程序
SelectDB13 小时前
同等资源下 Apache Doris 4.2 vs StarRocks 4.1.1:1TB SSB 与 TPC-H 性能实测
大数据·数据库·数据分析
这个DBA有点耶13 小时前
数据库集群与分布式架构:三条技术路线对比、金仓KES RAC实测数据与决策框架
数据库·程序员·架构
MayBaymax13 小时前
MongoDB 索引与事务
java·数据库·mongodb
SelectDB14 小时前
Doris vs ClickHouse:企业 OLAP 走向下一阶段,两种技术路线如何选择
大数据·数据库·数据分析
vx-程序开发14 小时前
【计算机毕设】django校园跑腿服务系统83141
java·数据库·vue.js·spring boot·spring·elasticsearch·django
一 乐14 小时前
养老院管理系统|基于springboot + vue养老院管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·毕业设计
这个DBA有点耶15 小时前
InnoDB页结构深入:页分裂、页合并、填充因子——B+树底层机制全解析
数据库·mysql·架构