探索数据存储的奥秘:深入理解B树与B+树

  • key value 类型的数据
  • 红黑树(最优二叉树,内存最优),时间复杂度:O(logn),调整方便;一个结点分出两个叉
  • B树一个节点可以分出很多叉
  • 数据量相等的条件下:红黑树的层数很高,B树的层数就会比较低(一个节点可以分出很多叉)
  • 层数比较低,查找数据的时间比较少;层数影响查询数据的次数

    数据以文件的形式存储
  • 为什么内存(用红黑树)不用B树?
    减少寻址次数,增加对比次数(B树);减少对比次数,增加寻址次 数(红黑树);磁盘寻址时间较长,所以要减少寻址次数,用B树。
  • 数据库底层的数据结构是B+树,提高查询效率。可用于区间查询
    如: select * from user where id>=10 and id<=18
  • B+ 树的优点在于:
  1. 由于B+树在非叶子结点上不包含真正的数据,只当做索引使用,因此在内存相同的情况下,能够存放更多的key。
  2. B+树的叶子结点都是相连的,因此对整棵树的遍历只需要一次线性遍历叶子结点即可。而且由于数据顺序排列并且相连,所以便于区间查找和搜索。而B树则需要进行每一层的递归遍历。
  • B树的优点在于:
  1. 由于B树的每一个节点都包含key和value,因此我们根据key查找value时,只需要找到key所在的位置,就能找到value,但B+树只有叶子结点存储数据,索引每一次查找,都必须一次一次,一直找到树的最大深度处,也就是叶子结点的深度,才能找到value。
相关推荐
是赵敢敢啊28 分钟前
又更新了一个list转树状结构的工具类
数据结构·windows·list
夕泠爱吃糖43 分钟前
选择排序&冒泡排序
数据结构·c++·算法
爱学习的白杨树2 小时前
索引页与B+树的关系
数据结构·b树
Chloe.Zz3 小时前
Python基础知识回顾-数据结构
开发语言·数据结构·python
萌の鱼5 小时前
leetcode 22. 括号生成
数据结构·c++·算法·leetcode
南宫生6 小时前
力扣-数据结构-19【算法学习day.90】
java·数据结构·学习·算法·leetcode
OopspoO12 小时前
Linux内核学习——数据结构
linux·数据结构
sysu6313 小时前
73.矩阵置零 python
开发语言·数据结构·python·线性代数·leetcode·面试·矩阵
F-2H14 小时前
C语言:构造类型(共用体/联合体,枚举)
java·linux·c语言·开发语言·数据结构·c++·算法