B树和B+树

B树(B-tree)数据库

概念:
	B树又称多叉平衡查找树,B指的是Balance。
	B树中全部结点的子结点数的最大值称为B数的阶,一般用m表示。

定义:
	一棵非空的m阶B树知足如下条件:
	1)树中每一个结点最多有m棵子树。
	2)若根结点不是叶子结点,则至少有两棵子树。
	3)全部分支结点至少有m/2棵子树。
	4)有n棵子树的非叶子结点刚好有n-1个关键字,关键字按递增次序排列。
	5)全部的叶子结点都出如今同一层上,而且不带信息(注:实际上,这些叶子结点并不存在,即:指向叶子结点的指针为空!)
	
特色:
	1)B树是全部结点的平衡因子均等于0的多路查找树。

B+树指针

概念:B+树是应文件系统和数据库所需而出的一种B树的变型

结构:
	根节点:  包含key和next,next指向索引里其余的分支节点或者是叶子节点。
	分支节点:包含key和next,next指向索引里其余的分支节点或者是叶子节点。
	叶子节点:包含key和value,value直接指向表里的数据。

定义:
	1)树中每一个结点最多有m棵子树。
	2)若根结点不是叶子结点,则至少有两棵子树。
	3)全部分支结点至少有m/2棵子树。
	4)有n棵子树的结点刚好有n个关键字。
	5)全部的分支结点仅包含了它各个子节点中最大的那个关键字 及 指向其子节点的指针,并无包含该关键字对应记录的存储地址。
	6)全部的叶子结点中包含了所有关键字的信息 及 指向含这些关键字记录的指针,且叶子结点自己依关键字的大小自小而大顺序连接。
		说明:B+树中分支结点中出现的关键字也会出如今叶子节点中,而B树中分子节点和叶子节点包含的关键字是不重复的。

说明:
	1)在数据库中,B+树的高度通常在2到3层。也就是说查找某一键值的记录,最多只须要2到3次IO开销。按磁盘每秒100次IO来计算,查询时间只需0.02到0.03秒。
	2)B+树索引并不能找到一个键值对应的具体行。b+树索引只能查到被查找数据行所在的页,而后数据库经过把页读入内存,再在内存中查找,最后获得结果。	
			
B树和B+树的比较:
	1)B树由于其分支结点一样存储着数据,咱们要找到具体的数据,须要进行一次中序遍历按序来扫,因此B树经常使用于文件索引。
	2)B+树的数据都存储在叶子结点中,分支结点均为索引,方便扫库,只须要扫一遍叶子结点便可,因此B+树更加适合在区间查询的状况,因此B+树经常使用于数据库索引。