前言
B+树是对B树的一种变形树,它与B树的差异在于:
1、非叶结点仅具有索引作用,也就是说,非叶子结点只存储key,不存储value。
2、树的所有叶结点构成一个有序链表,可以按照key排序的遍历全部数据。
B+树的优点:
1、由于B+树在非叶子结点上不包含真正的数据,只当做索引使用,因此在内存相同的情况下,能够存放更多的key。
2、B+树的叶子结点都是相连的,因此对整棵树的遍历只需要一次性遍历叶子结点即可。而且由于数据顺序排列并且相连,所以便于区间查找和搜索。而B树则需要进行每一层的递归遍历。
B树的优点:
由于B树的每一个结点都包含key和value,因此我们根据key查找value时,只需要找到key所在位置,就能找到value,但B+树只有叶子结点存储数据,索引每一次查找,都必须一次一次,一直找到树的最大深度处,也就是叶子结点的深度,才能找到value。