B-树

B-tree树即B树,B即Balanced,平衡的意思。因为B树的原英文名称为B-tree,而国内很多人喜欢把B-tree译作B-树,其实,这是个非常不好的直译,很容易让人产生误解。如人们可能会以为B-树是一种树,而B树又是另一种树。而事实上是,B-tree就是指的B树,特此说明。

B-树是一种多路搜索树,形如:

索引结点和i结点是一个意思吗_索引结点和i结点是一个意思吗

特点

1、任何一个关键字出现且只出现在一个结点中;2、非叶子节点除了保存关键字,还保存指向关键字记录的指针,搜索有可能在非叶子结点结束;

B+树

B+树是应文件系统所需而出的一种B树的变型树。形如:

索引结点和i结点是一个意思吗_B+树和B-树_02

特点

1、非叶子节点只保存关键字(只用来索引)不保存指向关键字记录的指针,因此搜索不可能在非叶子节点结束。2、所有关键字及其记录(或者指向关键字记录的句柄)都保存在叶子节点。3、叶子结点本身依关键字的大小顺序链接,支持顺序检索。

B+树与B树的比较

1、B+树所有的叶子结点包含了全部关键字的信息且关键字有重复,B树的关键字分散在整个树中且关键字不会重复。

2、B+树的叶子结点本身按关键字的大小顺序进行链接,支持顺序查找。

3、B+树的非叶子节点只保存关键字,不保存记录,所有记录保存在叶子节点,查找只能在叶子节点结束。

4、B数的非叶子节点,也保存了记录,因此查找可以在非叶子节点结束。

B+树与操作系统的文件索引和数据库索引

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

B+树的非叶子结点并没有指向关键字具体信息的指针。因此其非叶子结点相对B 树更小,如果把所有同一个非叶子结点的关键字存放在同一盘块中,那么盘块所能容纳的关键字数量也越多,树的高度相应降低,数的高度就对应I/O的次数,查找效率相应提高。因为树的高度决定了磁盘读写的次数,相对内存处理速度,磁盘I/O是非常耗时的操作,是查找效率的主要因素,降低树的高度就等于提高查询效率。