B树和B+树都是平衡多叉树,它们的异同点如下:
    1.B树中间节点不仅存储关键字,还存储对应的值,这样就导致树的高度会比较高;
    2.B+树所有的数据都是按照按照键值的大小存放在同一层的叶子节点,非叶子节点只存关键字,这样每个非叶节点存储的关键字就会变多,树的高度也会变低。树的高度变高带来的一个问题就是查找的稳定性变差;
    3.B+树的叶子节点是一个双向的有序链表,全表扫描直接顺序的访问叶子节点即可,而B树需要逐层访问,效率相对B+树要低;
    4.B+树天然具备排序功能;

    B+树数据页与数据页之间是通过双向链表关联的,页内的数据之间是通过单向链表关联的。

    B树有如下的特点

    • 所有的键-值分布在整棵树中;
    • 任何一个键有且仅出现在树中的一个节点中;
    • 在搜索时,有可能在非叶节点就结束。

    image.png

    B+树的特点如下:

    • B+树非叶节点不存储数据,数据仅存储在叶节点中;

    image.png