b树也叫做b-树(不一定是二叉的)。
b-树的特点:
M为树的阶数,B-树或为空树,否则满足下列条件:
定义任意非叶子结点最多只有M个儿子;且M>2;
2.根结点的儿子数为[2, M];
3.除根结点以外的非叶子结点的儿子数为[M/2, M];
4.每个结点存放至少M/2-1(取上整)和至多M-1个关键字;(至少2个关键字,根节点至少一个关键字);

b+树常应用于数据库和操作系统的文件系统中。

1:关键字的数量不同,b+树有m个关键字,也有m个叶子节点。关键字只是用来存储索引。B树虽然也有m个子结点,但是其只拥有m-1个关键字。

2:存储的位置不同;B+树中的数据都存储在叶子结点上,也就是其所有叶子结点的数据组合起来就是完整的数据,但是B树的数据存储在每一个结点中,并不仅仅存储在叶子结点上。

3:分支结点的构造不同;B+树的分支结点仅仅存储着关键字信息和儿子的指针(这里的指针指的是磁盘块的偏移量),也就是说内部结点仅仅包含着索引信息。

4:查询不同;B树在找到具体的数值以后,则结束,而B+树则需要通过索引找到叶子结点中的数据才结束,也就是说B+树的搜索过程中走了一条从根结点到叶子结点的路径。

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

与B树比较
一棵m阶的B+树和m阶的B树的异同点在于:
所有的叶子结点中包含了全部关键字的信息,及指向含有这些关键字记录的指针,且叶子结点本身依关键字的大小自小而大的顺序链接。(而B 树的叶子节点并没有包括全部需要查找的信息)
所有的非终端结点可以看成是索引部分,结点中仅含有其子树根结点中最大(或最小)关键字。(而B 树的非终节点也包含需要查找的有效信息)

B+树的磁盘读写代价更低
B+树的内部结点并没有指向关键字具体信息的指针。因此其内部结点相对B 树更小。如果把所有同一内部结点的关键字存放在同一盘块中,那么盘块所能容纳的关键字数量也越多。一次性读入内存中的需要查找的关键字也就越多。相对来说IO读写次数也就降低了。
举个例子,假设磁盘中的一个盘块容纳16bytes,而一个关键字2bytes,一个关键字具体信息指针2bytes。一棵9阶B-tree(一个结点最多8个关键字)的内部结点需要2个盘块。而B+树内部结点只需要1个盘块。当需要把内部结点读入内存中的时候,B 树就比B+树多一次盘块查找时间(在磁盘中就是盘片旋转的时间)。
B+树的查询效率更加稳定
由于非终结点并不是最终指向文件内容的结点,而只是叶子结点中关键字的索引。所以任何关键字的查找必须走一条从根结点到叶子结点的路。所有关键字查询的路径长度相同,导致每一个数据的查询效率相当。

b树和b+树的区别。相关推荐

  1. B树和B+树分别是什么?区别在哪里?MySQL使用的是哪一种树?

    B树和B+树分别是什么?区别在哪里?MySQL使用的是哪一种树? B树,每个节点都存储key和data,所有节点组成这棵树,并且叶子节点指针为nul,叶子结点不包含任何关键字信息. B+树,所有的叶子 ...

  2. b树与b+树的区别_Linux内核-数据结构系列(B树、B-树、B+树)的区别

    一.B树 (二叉搜索树) B 树可以看作是对2-3查找树的一种扩展,即他允许每个节点有M-1个子节点. 根节点至少有两个子节点 每个节点有M-1个key,并且以升序排列 位于M-1和M key的子节点 ...

  3. MyISAM和InnoDB执行引擎的区别,为什么MyISAM查询效率高,B树和B+树的区别

    1. MyISAM和InnoDB的区别 ①MyISAM查询效率高,InnoDB查询效率低: ②MyISAM不支持事务和外键,而InnoDB支持: ③MyISAM是非聚簇索引(索引的叶子节点存储的是数据 ...

  4. b树与b+树的区别_面试必考:B树、B树、B+树、B*树图文详解

    B树 B树又叫做二叉搜索树,倒状的树形结构.如下图所示 特点: 所有的非子夜节点最多拥有两个子节点树(左子树和右子树). 所有结点存储一个关键字. 节点的左右儿子,左边是比该节点小的,右边是比该节点大 ...

  5. b树与b 树的区别 mysql,B树和B+树

    一.为什么要有B树? 学习任何一个东西我们都要知道为什么要有它,B树也一样,既然存储数据,我们为什么不用红黑树呢? 这个要从几个方面来说了: (1)计算机有一个局部性原理,就是说,当一个数据被用到时, ...

  6. B树与B+树简明扼要的区别

    看了很多讲B树和B+树的文章,大多都是围绕各自的特性讲的,第一,树中每个结点最多含有m个孩子(m>=2):第二,--我也是从这些文章里弄懂了各种树的联系与区别,要真写,我可能还不如人家写得好.所 ...

  7. 二叉树、B树、B+树、红黑树 的 本质区别以及各个应用场景

    文章目录 我们先来看一个场景,然后再看下面的定义,以便深刻理解和记忆 二叉树 B树 B+树 红黑树 我们先来看一个场景,然后再看下面的定义,以便深刻理解和记忆 https://blog.csdn.ne ...

  8. 【154期】面试官问:请你说说 B 树、B+ 树的原理及区别?

    点击上方"Java精选",选择"设为星标" 别问别人为什么,多问自己凭什么! 下方留言必回,有问必答! 每天 08:35 更新文章,每天进步一点点... 之前在 ...

  9. 一文彻底搞懂MySQL基础:B树和B+树的区别

    写在前面 大家在面试的时候,肯定都会被问到MySql的知识,以下是面试场景: 面试官:对于MySQL,你对他索引原理了解吗? 我:了解 面试官:MySQL的索引是用什么数据机构的? 我:B+树 面试官 ...

  10. Mysql中B树与B+树的区别

    一.B树 B树和B+树都是应用在数据库索引上,可以认为是m叉的多路平衡查找树,但是理论上讲,二叉树的查找速度和比较次数都更小,为什么不用二叉树呢? 这是因为我们要考虑磁盘IO的影响,它相对于内存来说是 ...

最新文章

  1. VT-x,VT-d简介
  2. java判断回文数代码实例
  3. LeetCode 779. 第K个语法符号(找规律)
  4. java ajax点击出现_jquery ajax获取json数据 然后action 的response 返回数据出现 java.lang.IllegalStateException异常...
  5. python之路 day5
  6. KnockoutJS 3.X API 第四章 表单绑定(11) options绑定
  7. uva10340 Ail in All
  8. matlab连接github,GitHub - chenboshuo/learn_matlab: 我的matlab学习
  9. Design System 中的 Design Token
  10. WampServer的下载方法-解决报错the installation folder chosen is not that wampserver
  11. qq表情左右滑动php,基于jQuery实现的QQ表情插件_jquery
  12. rss阅读器Reeder 5 for Mac
  13. 为何说张三丰是个优秀的程序员?
  14. 台式计算机网卡驱动不能正常使用,系统提示“您的网卡驱动程序不正常!”怎么办 是什么原因...
  15. 金融python入门书籍推荐_学习金融工程,有哪些推荐的入门书籍?
  16. java问题解读,String类为什么是final的
  17. 一度智信:拼多多商家上架商品指南分享
  18. 香港和内地重疾险25种常见重疾定义对比全解析
  19. 英国帝国理工出品——SSIM对抗攻击
  20. 解决Adobe Acobat设置了背景色,显示出现白条的问题!

热门文章

  1. 热血传奇服务端装备穿戴触发脚本
  2. 秉火429笔记之十四 USART--串口通信
  3. 步步「动」心,人-机器人渐进式交互研究——百度人工智能交互设计院
  4. 巨量引擎搜索计划搭建流程和优化技巧
  5. 油菜花系统服务器能删除内容吗,油菜花能吃吗,油菜花有什么用
  6. 数学--逆运算知识点,附推逆函数的一例
  7. 关于IDEL中的全局搜索不显示该有的类的解决办法之一
  8. 为什么王者荣耀总是服务器中断,王者荣耀服务器突然维护怎么回事?7月3日王者荣耀维护原因补偿...
  9. JS [Web浏览器] “Uncaught RangeError: Maximum call stack size exceeded“ (32)
  10. 计算机图学实验报告,计算机图形学实验报告实验1