B树,一点都不神秘

这是数据库索引相关内容的第一篇
复制代码

B树

目录:数据库

  1. 什么是B树
  2. B树的最小度数
  3. B树的高度
  4. 什么状况下使用B树
  5. B树的插入
  6. B树的删除

正文:数据库设计

  1. 什么是B树post

    1>  是一种平衡搜索树
    2>  为磁盘或者其余直接存储的辅助存储设备设计
    3>  相似于红黑树,可是更下降磁盘操做I/O
    4>  节点分为内部节点(非叶子节点)和叶子节点
    5>  节点能够不止一个关键字
    6>  假设节点中的关键字个数为n,则该节点的孩子数必定是n+1
    7>  每一个节点内部的排序必定是从左到右增大(以下图30 < 80,50 < 60)
    8>  假设节点x的关键字的个数为n,从左到右为x1,x2,...xn(以下图n=2,x1=50,x2=60)
        由第6>条得知其孩子数为n+1,从左到右为c1,c2,...cn+1(以下图c1=(35,40),c2=55,c3=70)
        那么排序规则必定是c1<x1<c2<x2<..xn<cn+1
    9>  每一个叶子节点必定具备相同的深度,即树的高度是一致的。
    10> 每一个节点关键字的个数有上限和下限,取决于树设定的最小度数t。
    		t -1 <= n <= 2t -1
    	根节点不受最小t -1的限制,若是树非空,根节点至少有1个关键字
    复制代码

典型的B树以下图 spa

在这里插入图片描述
2. B树的最小度数

1> 每一个节点关键字的个数有上限和下限,取决于树设定的最小度数t。
			t -1 <= n <= 2t -1
	   根节点不受最小t -1的限制,若是树非空,根节点至少有1个关键字
	
	2> 当一个节点刚好有2t-1个关键字,则该节点是满的(在插入B树时用到该概念)
	3> 当一个节点刚好是t-1个关键字时,则该节点是最小状态(在删除B树时用到该概念)
复制代码

3. B树的高度设计

为何咱们要关心B树的高度,由于B树主要是为磁盘访问设计的,B树的高度与磁盘存取次数成正比。code

由于根节点最小关键字数目为1,其余节点最少为t-1,则树上的关键字个数n知足:cdn

在这里插入图片描述
则树的高度知足:

在这里插入图片描述
因此随着t的增大,h减小,磁盘的存取次数也减小。

4. 什么状况下使用B树blog

如第一节所述,B树是为磁盘或者其余直接存储的辅助存储设备设计的。
典型的B树使用场景就是数据库。
复制代码

从树的高度公式能够看出,t越大,即节点内关键字越多,树的高度越小,磁盘存取次数越少。排序

树的节点关键字越多,那么多少合适呢?索引

其实,节点中关键字,就是磁盘一次要读取的大小,以磁盘的页为单位,磁盘通常一次会加载1个或多个页,1页的大小通常在4k~8k

因此关键字少了,一次磁盘读取,会形成浪费;关键字多了,一次磁盘读取就读不下。

因此设置合理的t值很重要。而且在动态插入删除中要保证B树也符合B树的上述特征,来知足应用场景须要。

关于B树的插入和删除,下章再说...

写在最后,学好B树还有助于咱们理解数据库设计


其余相关章节
复制代码

数据库索引相关文章之一:《B树,一点都不神秘》
数据库索引相关文章之二:《B树很简单,插入so easy》
数据库索引相关文章之三:《索引》
数据库索引相关文章之四:《什么索引算是好的索引》
数据库索引相关文章之五:《如何发现及替换不合适的索引》
数据库索引相关文章之六:《索引总结》

相关文章
相关标签/搜索