博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
B树 & B+树
阅读量:2136 次
发布时间:2019-04-30

本文共 1028 字,大约阅读时间需要 3 分钟。

B树

AVL树是二叉平衡查找树,B树就是多路平衡查找树

B树就是B-树,中间的短线是英文连接符,只是翻译的时候将短线翻译成了减号。

B树全称Balance-tree

B树是为了存储设备或者磁盘而设计的一种平衡查找树,与红黑树类似

 

B+树

       B+树是B树的一种变形,它把数据都存储在叶结点,而内部结点只存关键字和孩子指针,因此简化了内部结点的分支因子,B+树遍历也更高效,其中B+树只需所有叶子节点串成链表这样就可以从头到尾遍历,其中内部结点是并不存储信息,而是存储叶子结点的最小值作为索引

 

 

B+树的叶子节点之间用指针连在一起

每一个父节点的元素都出现在子节点中,是子节点的最大(或最小)元素

    

根节点的最大元素,也就等同于整个B+树的最大元素。

以后无论插入删除多少元素,始终都要保持最大元素在根节点当中

所有数据都会出现在叶子节点当中
父节点的元素都会出现在叶子节点当中

每一个叶子节点都带有指向下一个节点的指针,形成了一个有序链表

 

not all values found in the inner nodes of the index must appear as data entries in the leaf nodes of the index. They are there ONLY for navigation purposes. They could be there due to some previous deletions, for example. Remember also that B+trees only store the data (data entries) in the leaf pages.

 

为什么说B+树比B树更适合做操作系统的数据库索引和文件索引?

(1)B+树的磁盘读写的代价更低

B+树内部结点没有指向关键字具体信息的指针,这样内部结点相对B树更小。

(2)B+树的查询更加的稳定

因为非终端结点并不是最终指向文件内容的结点,仅仅是作为叶子结点中关键字的索引。这样所有的关键字的查找都会走一条从根结点到叶子结点的路径。所有的关键字查询长度都是相同的,查询效率相当。

 

 

     B+树中间节点没有Data数据,所以同样大小的磁盘页可以容纳更多的节点元素。所以数据量相同的情况下,B+树比B树更加“矮胖“,因此使用的IO查询次数更少。

 

 

 

MySQL数据表的B+树索引图

B+树的叶节点是磁盘页

 

 

 

同样节点的B树与B+树

 

 

转载地址:http://sxygf.baihongyu.com/

你可能感兴趣的文章
一个隐马尔科夫模型的应用实例:中文分词
查看>>
轻松看懂机器学习十大常用算法
查看>>
一个框架解决几乎所有机器学习问题
查看>>
特征工程怎么做
查看>>
机器学习算法应用中常用技巧-1
查看>>
机器学习算法应用中常用技巧-2
查看>>
通过一个kaggle实例学习解决机器学习问题
查看>>
决策树的python实现
查看>>
Sklearn 快速入门
查看>>
了解 Sklearn 的数据集
查看>>
用ARIMA模型做需求预测
查看>>
推荐系统
查看>>
详解 TensorBoard-如何调参
查看>>
TensorFlow-11-策略网络
查看>>
浅谈 GBDT
查看>>
如何选择优化器 optimizer
查看>>
一文了解强化学习
查看>>
CART 分类与回归树
查看>>
seq2seq 的 keras 实现
查看>>
seq2seq 入门
查看>>