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

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

稳定的

相关推荐
YGGP9 分钟前
MySQL 的事务
数据库·mysql
一 乐2 小时前
网红酒店|基于java+vue的网红酒店预定系统(源码+数据库+文档)
java·开发语言·数据库·毕业设计·论文·springboot·网红酒店预定系统
Alfadi联盟 萧瑶3 小时前
Python-用户账户与应用程序样式
数据库·sqlite
影子24017 小时前
Navicat导出mysql数据库表结构说明到excel、word,单表导出方式记录
数据库·mysql·excel
java_heartLake7 小时前
PostgreSQL15深度解析(从15.0-15.12)
数据库·postgresql
nuc-1279 小时前
sqli-labs学习记录8
数据库·学习·sqli-labs
余华余华10 小时前
计算机等级考试数据库三级(笔记3)
服务器·数据库·oracle
南風_入弦11 小时前
Oracle logminer详解
数据库·oracle·恢复
小安同学iter12 小时前
SpringBoot (二) 日志系统
数据库·spring boot·后端
Chandler2412 小时前
Redis:事务
数据库·redis·缓存