B 树的变种。
B树:所有节点(非叶子节点 + 叶子节点),都存储真正的行数据,所以一个数据页能存储的数量,相较于 B + 树,就少很多。
B+ 树:
● 只有叶子节点存储具体的行数据,非叶子节点只存储索引值 和 指向下一个数据页的指针。
● B + 树的叶子节点相连,形成双向链表。各个数据页之间是通过双向链表连接的,每个数据页中的行数据是通过单向链表连接的
使用B + 树有什么好处呢?为啥不使用 B 树呢?
● 最主要的:相同的数据量,B + 树的层数肯定是低于 B 树的。这样 IO 次数就少了
● 查询的稳定性:B + 树每次查询都会查到叶子节点,而B树的查询具有不稳定性,可能在非叶子节点就查到了
● 更好的支持范围查询:B + 树的叶子节点是通过双向链表连接的,范围查询很方便