首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >B树和B+树有什么区别?

B树和B+树有什么区别?
EN

Stack Overflow用户
提问于 2009-05-15 18:42:14
回答 14查看 263.2K关注 0票数 338

b树中,您可以在内部节点和叶节点中存储键和数据,但是在b+树中,您必须只将数据存储在叶节点中。

在b+树中这样做有什么好处吗?

为什么不在任何地方使用b树而不是b+树,因为直观地它们看起来要快得多?

我的意思是,为什么需要在b+树中复制密钥(数据)?

EN

回答 14

Stack Overflow用户

发布于 2012-08-17 23:42:46

下图帮助显示了B+树和B树之间的差异。

B+树的优势:

  • 因为B+树没有与内部节点相关联的数据,所以在内存页中可以容纳更多的键。因此,为了访问叶节点上的数据,需要更少的缓存丢失。
  • B+树的叶节点是链接的,因此对树中的所有对象进行全面扫描只需要一次线性遍历所有叶节点。另一方面,B树需要遍历树中的每个级别。这种全树遍历可能涉及比B+叶的线性遍历更多的缓存丢失。

B树的优势:

  • 因为B树包含每一个键的数据,所以频繁访问的节点可以离根更近,因此可以更快地访问。

票数 475
EN

Stack Overflow用户

发布于 2009-05-15 19:05:43

B+树相对于B树的主要优点是,它们允许通过移除指向数据的指针将更多的指针打包到其他节点,从而增加了树的扇出,并潜在地降低了树的深度。

缺点是,当您在内部节点中找到匹配时,不存在早期退出。但是,由于这两种数据结构都有大量的扇形,所以无论如何,绝大多数匹配都将位于叶节点上,这使得B+树的效率更高。

票数 126
EN

Stack Overflow用户

发布于 2009-05-15 20:33:12

因为终端节点形成一个链接列表,所以B+Trees更容易更好地执行完全扫描,就像查看树索引的每一段数据一样。若要对B树进行全面扫描,您需要执行一次完整的树遍历,以查找所有数据。

另一方面,当您进行查找(按键查找特定数据)时,B树可能会更快,特别是当树驻留在RAM或其他非块存储中时。因为您可以提升树中常用的节点,所以获得数据所需的比较就更少了。

票数 40
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/870218

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档