
28
第
2
章
B 树基础知识
在上一章中,我们将存储结构分为两类:
可变存储结构
和
不可变存储结构
,并确定不可
变性为影响数据库设计和实现的核心概念之一。大多数可变存储结构使用
原地更新
的机
制。在插入、删除或更新操作期间,数据记录直接在目标文件中原本的位置被更新。
存储引擎通常允许同一数据记录在数据库中存在多个版本,例如:当使用多版本并发控
制(multi-version concurrency control,参见 5.3.6 节)或分槽页结构(参见 3.5 节) 时 。
为了简单起见,现在我们假设每个键只与一条数据记录相关联,且该数据记录具有唯一
的位置。
最流行的存储结构之一是 B 树。许多开源数据库系统都基于 B 树,多年来,这些数据库
已经被证明可以覆盖大多数的用例。
B 树并不是最近才发明的:它是由 Rudolph Bayer 和 Edward M. McCreight 于 1971 年便
引入的概念,此后其越来越流行。到了 1979 年,B 树已经有了相当多的变体,Douglas
Comer 收集并系统化地整理了其中一些变体 [COMER79]。
在深入研究 B 树之前,让我们先讨论一下为什么应该考虑替代传统搜索树(例如,二分
搜索树、2-3 树和 AV L 树 [KNUTH98])。为此,我们先回顾一下什么是二分搜索树。
2.1
二分搜索树
二分搜索树
(BST)是一种有序的内存数据结构,可以用来高效地进行键值查找。二分
搜索树由多个节点组成,每个树节点由一个键、一个与该键关联的值以及两个子节点指