这是数据库索引相关内容的第一篇
复制代码
目录:数据库
正文:数据库设计
什么是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
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
4. 什么状况下使用B树blog
如第一节所述,B树是为磁盘或者其余直接存储的辅助存储设备设计的。
典型的B树使用场景就是数据库。
复制代码
从树的高度公式能够看出,t越大,即节点内关键字越多,树的高度越小,磁盘存取次数越少。排序
树的节点关键字越多,那么多少合适呢?索引
其实,节点中关键字,就是磁盘一次要读取的大小,以磁盘的页为单位,磁盘通常一次会加载1个或多个页,1页的大小通常在4k~8k
因此关键字少了,一次磁盘读取,会形成浪费;关键字多了,一次磁盘读取就读不下。
因此设置合理的t值很重要。而且在动态插入删除中要保证B树也符合B树的上述特征,来知足应用场景须要。
关于B树的插入和删除,下章再说...
其余相关章节
复制代码
数据库索引相关文章之一:《B树,一点都不神秘》
数据库索引相关文章之二:《B树很简单,插入so easy》
数据库索引相关文章之三:《索引》
数据库索引相关文章之四:《什么索引算是好的索引》
数据库索引相关文章之五:《如何发现及替换不合适的索引》
数据库索引相关文章之六:《索引总结》