B-树

1、为什么使用B-树

二叉查找树的结构:

查找10的元素

第1次磁盘IO:

第2次磁盘IO:

第3次磁盘IO:

第4次磁盘IO:

最坏需要进行4次磁盘IO,取决于树的度,为了降低访问IO的次数,我们可以将树的高度降低,增大它的宽度。

下面来具体介绍一下B-树(Balance Tree),一个m阶的B树具有如下几个特征:

1.根结点至少有两个子女。

2.每个中间节点都包含k-1个元素和k个孩子,其中 m/2 <= k <= m

3.每一个叶子节点都包含k-1个元素,其中 m/2 <= k <= m

4.所有的叶子结点都位于同一层。

5.每个节点中的元素从小到大排列,节点当中k-1个元素正好是k个孩子包含的元素的值域分划。

假设为们要查询的是5,树中元素和刚才二叉排序树一样。





第1次磁盘IO:

在内存中定位(和9比较):

第2次磁盘IO:

在内存中定位(和2,6比较):

第3次磁盘IO:

在内存中定位(和3,5比较):

通过整个流程,我们看到B-树的比较次数和二叉排序树没有区别,但是访问磁盘IO的次数下降了,而在磁盘中,一次取一个关键码和取10个关键码没有区别,因此B-树可以帮助我们快速访问磁盘。

在比如说:现在有1G数据,如果使用二叉排序树,最坏的情况下需要进行log(2,1G) = 30次

我们将树的每个节点中的元素为256,最快的情况是log(256,1G) = 4次

可见,访问IO的次数下降了很多

2、特性

具有自平衡的特定,当我们删除或插入,操作完成后,依旧是B-树。

主要应用于部分数据库索引以及文件系统。例如mongodb的文建索引。



猜你喜欢

转载自blog.csdn.net/qq_39158142/article/details/80739058
今日推荐