B Tree 和 B+Tree

作者: 我犟不过你 | 来源:发表于2020-10-28 15:07 被阅读0次

数据结构学习地址:
https://www.cs.usfca.edu/~galles/visualization/Algorithms.html

什么是B树?

B树,全名是平衡多路查找树,是对二叉查找树的改进,它的设计思想是,将相关数据尽量集中在一起,以便一次读取多个数据,减少硬盘操作次数,B树大量应用在数据库和文件系统当中。

为什么出现B树?而不是红黑树?

1、红黑树是二叉树,二B树是多叉的
2、根据计算机的局部性原理,B树将很多相近甚至连续的值存放在一个节点上,这样在获取数据时,B树可以一次获取更多的相关信息,二红黑树一次只能获取一个数据信息。
3、B树因为是多路的,相同数据量,就证明其高度要明显低于红黑树,在效率上也明显高于红黑树。

B Tree的结构

对于一棵m阶B tree:
1、每个结点至多可以拥有m个子结点。
2、根结点至少有2个子结点,除非根结点为叶子节点,根结点中关键字的个数为1~m-1。
3、非根结点至少有[m/2]([],向上取整)个子结点,相应的,关键字个数为[m/2]-1~m-1

B树节点信息

1、本结点所含关键字的个数;
2、指向父结点指针
3、关键字;
4、指向子结点的指针;

B树

什么是B+树?

B+树是B树的一个升级版,相对于B树来说B+树更充分的利用了节点的空间,让查询速度更加稳定,其速度完全接近于二分法查找。

B+树与B树的不同

1、在B+树种,非叶子节点值存数据的key和子节点指针信息,不存储数据的具体值data的指针,这使得B+树可以存储更多的key。B+树的所有数据data存储在叶子节点上。
2、在叶子节点上,每个叶子结点增加顺序指针,形成链表结构,便于区间查找和遍历,非叶子结点作为索引。(非叶子节点也有横向指针的叫做B*树)

B树 B+树

相关文章

  • Mysql索引结构

    一、B+Tree 二、B+Tree分析 mysql使用的是B+Tree,为什么不使用B-Tree呢,主要是树结构决...

  • MySQL索引底层

    1.分析B树 相关概念 B-Tree B+Tree B+Tree与B-Tree区别 Mysql底层结构 InnoD...

  • b+树

    B+Tree是在B-Tree基础上的一种优化,B-Tree中每个节点同时保存key和data,而B+Tree非叶子...

  • BTree和B+Tree详解

    BTree和B+Tree详解

  • b+tree数据结构、limit、order by、 group

    b+tree数据结构、limit、order by、 group by、where 分析思路: 从b+tree索引...

  • MySQL索引优化案例分析

    MySQL中的索引分类 按算法来分类包括B+Tree、Hash两种,大多数情况下会采用B+Tree。B+Tree与...

  • MySQL索引

    索引结构种类(Index Method) B+tree索引 哈希索引 B+tree 分类 聚集索引(主键索引) 非...

  • B Tree和B+Tree

    1、为什么使用B Tree 常用的查找类数据结构做下对比: 哈希表:定位速度快,时间复杂度为O(1),但是不支持范...

  • B Tree 和 B+Tree

    数据结构学习地址:https://www.cs.usfca.edu/~galles/visualization/A...

  • MYSQL索引结构的思考

    MYSQL的 innodb索引结构是 B+tree B+tree 是有 二叉树-> 平衡二叉树- > B-tree...

网友评论

    本文标题:B Tree 和 B+Tree

    本文链接:https://www.haomeiwen.com/subject/qygqvktx.html