B+树是由二叉查找树,平衡二叉树和B树三种数据结构演化而来。
一.二叉查找树
二叉查找树中任何节点的左子节点的值小于当前节点的值,右节点的值大于当前节点的值。
但是极端情况下二叉查找树会以链表的形式呈现:
二.平衡二叉树
平衡二叉树在二叉查找树的基础上,要求每个节点的左右子树高度差不能超过1。当插入或者删除数据导致平衡二叉树不平衡时,会调整树上的节点来保持平衡。每查找一个就进行一次磁盘IO,当数据量太大时导致树太高,导致查找效率变低。
三.B树
B树中的每个节点也叫一个磁盘页,B树中的每个节点存储了多个索引和数据,并且每个节点有多个子节点,高度也更低。因此B树在查找时读取磁盘的次数更少,查找效率比平衡二叉树高。
四.B+树
B+树的非叶子节点只存储索引,不存储数据,叶子节点存储数据,因此非叶子节点能存储更多的索引,从而树高更小,查找速度更高。B+树节点内的索引是有序排列,叶子节点之间通过双向链表连接,叶子节点内的数据之间通过单向链表连接。