Postgresql B+;树还是B树
我正在学习postgresql的内部结构,我想知道postgresql的B-树索引实际上是经典的B-树还是B+树?更详细地说,这意味着节点只包含键或键值对?我首先说的是B-树,但可以说它更接近B+树。Postgresql B+;树还是B树,postgresql,indexing,b-tree,Postgresql,Indexing,B Tree,我正在学习postgresql的内部结构,我想知道postgresql的B-树索引实际上是经典的B-树还是B+树?更详细地说,这意味着节点只包含键或键值对?我首先说的是B-树,但可以说它更接近B+树。 请参阅更深入地讨论它 你真的必须考虑索引+堆(+辅助存储)。索引本身基本上是无用的 这是一本书 相关索引方法的名称在Postgres中为“B-树”。物理存储非常类似于表(堆)或任何其他索引类型。它们都使用相同的数据页,并且页面布局基本相同 发展正在进行中。自从提出这个问题以来,设计在许多方面都有所
请参阅更深入地讨论它 <>你真的必须考虑索引+堆(+辅助存储)。索引本身基本上是无用的 这是一本书 相关索引方法的名称在Postgres中为“B-树”。物理存储非常类似于表(堆)或任何其他索引类型。它们都使用相同的数据页,并且页面布局基本相同
发展正在进行中。自从提出这个问题以来,设计在许多方面都有所改变(改进)。最新的显著变化(截至2021年4月)出现在Postgres 13中。在我看来,PostgreSQL使用了B+树 B-树与B+树的区别
- 在B-树中,索引表中记录的指针不仅在树的叶子中,而且在树的所有内部节点中
- 在B+树中,指向索引表中记录的指针仅在树的叶子中。描述了B+树相对于B-树的优点
- 似乎只有树的叶子具有指向索引表中记录的指针: 每个叶页都包含指向表行的元组。每个 内部页面包含指向下一层的元组 树
- 当Bruce Momjian谈到内部节点时,他没有提到它们有指向索引表中记录的指针
- 文档中提到的PostgreSQL源代码的src/backend/access/nbtree/README文件包含以下注释: 树索引 此目录包含Lehman和Yao的高并发性的正确实现 B-树管理算法 (P.Lehman和S.Yao, 《数据库系统上的ACM交易》,第6卷,第4期,1981年12月,第650-670页) Lehman和Yao使用名为B*tree的树结构,Wedekind在论文中将其定义为B-tree,其中非叶节点没有指向索引表中记录的指针(它们只有指向其子节点的指针)。所以Wedekind定义的B*树结构是B+树