【问题标题】:Databases and B+Trees indexes数据库和 B+Trees 索引
【发布时间】:2011-02-27 20:24:04
【问题描述】:

我在哪里可以找到有关哪些数据库是否使用 B+Trees 而不是 B-Trees 来实现其索引的信息?

Oracle 似乎正在使用 B+Trees。虽然他们没有在他们的文档中描述它,但他们的graphics 似乎指出实际上正在使用 B+Trees。

【问题讨论】:

  • 您的标签二叉树不应与 BxTrees 混淆

标签: sql indexing b-tree database-indexes b-tree-index


【解决方案1】:

对于 SQL Server,信息在这里:http://msdn.microsoft.com/en-us/library/ms177443.aspx

在 SQL Server 中,索引被组织为 B 树。索引 B 树中的每一页称为索引节点。 B树的顶端节点称为根节点。索引中最底层的节点称为叶节点。根节点和叶节点之间的任何索引级别统称为中间级别。在聚集索引中,叶节点包含基础表的数据页。根和中间级节点包含保存索引行的索引页。每个索引行包含一个键值和一个指向 B 树中的中间级别页面或索引叶级别中的数据行的指针。索引的每一级中的页面都链接在一个双向链表中。

【讨论】:

  • 这似乎是一个更接近 B+tree 的专用版本?
【解决方案2】:

维基百科列出了支持 B+ 树的 a number of databases

但是请注意,数据库完全有可能支持多种索引

【讨论】:

    【解决方案3】:

    Oracle 的默认索引是 B* 索引。 (B* 索引是 B+ 索引的“任何”变体。)Oracle 在他们的一些 DBA 和基础文档中提到了 B*。您还可以创建使用集群索引的集群。您可以在数据仓库或 OLAP 数据库中创建位图索引。位图索引在 OLTP 数据库中的性能极差,尽管如果表很少更新,它们可能工作正常。

    出于性能原因,我确信所有为 OLTP 设计的数据库都使用 B* 树作为它们的主要索引。例如,Teradata 专为数据仓库而设计,并使用基于哈希的索引。

    【讨论】:

      猜你喜欢
      • 2011-10-18
      • 2016-01-05
      • 2012-01-13
      • 1970-01-01
      • 2011-02-03
      • 2011-06-17
      • 2010-10-24
      • 2012-12-18
      • 2011-09-26
      相关资源
      最近更新 更多