Open hfuuss opened 5 years ago
除了B+树,你可能还听说过B树、B-树,我这里简单提一下。实际上,B-树就是B树,英文翻译都是B-Tree,这里的“-”并不是相对B+树中的“+”,而只是一个连接 符。这个很容易误解,所以我强调下。 而B树实际上是低级版的B+树,或者说B+树是B树的改进版。B树跟B+树的不同点主要集中在这几个地方: B+树中的节点不存储数据,只是索引,而B树中的节点存储数据; B树中的叶子节点并不需要链表来串联。 也就是说,B树只是一个每个节点的子节点个数不能小于m/2的m叉树。
前面的讲解中,为了一步一步详细地给你介绍B+树的由来,内容看起来比较零散。为了方便你掌握和记忆,我这里再总结一下B+树的特点: 每个节点中子节点的个数不能超过m,也不能小于m/2; 根节点的子节点个数可以不超过m/2,这是一个例外; m叉树只存储索引,并不真正存储数据,这个有点儿类似跳表; 通过链表将叶子节点串联在一起,这样可以方便按区间查找; 一般情况,根节点会被存储在内存中,其他节点存储在磁盘中。
B树:
B+ 树:
除了B+树,你可能还听说过B树、B-树,我这里简单提一下。实际上,B-树就是B树,英文翻译都是B-Tree,这里的“-”并不是相对B+树中的“+”,而只是一个连接 符。这个很容易误解,所以我强调下。 而B树实际上是低级版的B+树,或者说B+树是B树的改进版。B树跟B+树的不同点主要集中在这几个地方: B+树中的节点不存储数据,只是索引,而B树中的节点存储数据; B树中的叶子节点并不需要链表来串联。 也就是说,B树只是一个每个节点的子节点个数不能小于m/2的m叉树。