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+树 来说,所有的查询都要最终到叶子上进行查询,无论查哪个元素

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

稳定的

相关推荐
互联网搬砖老肖3 小时前
运维打铁: MongoDB 数据库集群搭建与管理
运维·数据库·mongodb
典学长编程4 小时前
数据库Oracle从入门到精通!第四天(并发、锁、视图)
数据库·oracle
积跬步,慕至千里4 小时前
clickhouse数据库表和doris数据库表迁移starrocks数据库时建表注意事项总结
数据库·clickhouse
极限实验室5 小时前
搭建持久化的 INFINI Console 与 Easysearch 容器环境
数据库
白仑色5 小时前
Oracle PL/SQL 编程基础详解(从块结构到游标操作)
数据库·oracle·数据库开发·存储过程·plsql编程
程序猿小D7 小时前
[附源码+数据库+毕业论文]基于Spring+MyBatis+MySQL+Maven+jsp实现的个人财务管理系统,推荐!
java·数据库·mysql·spring·毕业论文·ssm框架·个人财务管理系统
钢铁男儿8 小时前
C# 接口(什么是接口)
java·数据库·c#
__风__8 小时前
PostgreSQL kv(jsonb)存储
数据库·postgresql
轩情吖8 小时前
Qt的第一个程序(2)
服务器·数据库·qt·qt creator·qlineedit·hello world·编辑框
Databend8 小时前
Databend 产品月报(2025年6月)
数据库