为什么用B+树而不用B树呢
B+树相比B树有3个显著优势:
-
B树的每个节点既存储键值,又存储数据和指针,导致单节点存储的键值数量较少。
-
B树的范围查询需要通过中序遍历逐层回溯;
而B+树的叶子节点通过双向链表顺序连接,范围查询只需要定位起始点后顺序遍历链表即可,没有回溯开销。 -
B树的数据可能存储在任意节点
-
假如目标数据恰好位于根节点或上层节点,查询仅需1-2次I/O;
-
但如果数据位于底层节点,则需多次I/O,导致查询时间波动大。
-
而B+树的所有数据都存储在叶子节点,查询路径的长度是固定的,时间稳定为O(log N), 对MySQL在高并发场景下的稳定性至关重要。

浙公网安备 33010602011771号