目录
B树
B树,也叫做B-树,(B“-”树,不是B减树,“-”是连接符),是N叉搜索树
当节点的子树多了,节点上保存的key多了,意味着在同样的key的个数前提下,B树的高度要比二叉搜索树低很多。
树的高度越高,进行查询比较的时候访问磁盘的次数就越多。(与二叉搜索树相比,高度降低了)
B树的图示
B+树
在B树的基础上进行改进,节点上有几个key,就引出几个分支。
B+树的图示
最后B+树会将叶子节点首位相连,构成了一个像链表的结构。
为了数据库索引量身定制的数据结构
B+树的特点:
1.一个节点可以存储N个key,N个key划分出了N个区间(!!不是N+1个区间)
2.每个节点中国的key的值,都会在子节点中也存在(同时该key是子节点的最大值)
3.B+树的叶子节点,是首尾相连的,类似于一个链表
4.由于叶子节点是完整的数据集合,只在叶子节点这里存储数据表的每一行的数据,而非叶子节点只存key值本身即可。
整个树的所有数据都是包含在叶子节点中的。(所有非叶子节点中的key最终都会出现在叶子节点中)
B+树的优势:
1.当前一个节点保存更多的key,最终树的高度是相对更矮的,查询的时候减少了了IO访问次数(和B树是一样的)
2.所有的查询最终都会落到叶子节点上(查询任何数据经过的IO访问次数,是一样的)
3.B+树所有的叶子节点构成链表,比较方便进行范围查询
4.由于数据都在叶子节点上,非叶子节点,只存储key,导致非叶子节点占用的空间是比较小的。这些非叶子节点就可能在内存中缓存(或者缓存一部分),又进一步减少了IO的次数。