为什么用B+树而不用B树呢

B+树相比B树有3个显著优势:

  1. B树的每个节点既存储键值,又存储数据和指针,导致单节点存储的键值数量较少。

  2. B树的范围查询需要通过中序遍历逐层回溯;
    而B+树的叶子节点通过双向链表顺序连接,范围查询只需要定位起始点后顺序遍历链表即可,没有回溯开销。

  3. B树的数据可能存储在任意节点

  • 假如目标数据恰好位于根节点或上层节点,查询仅需1-2次I/O;

  • 但如果数据位于底层节点,则需多次I/O,导致查询时间波动大。

  • 而B+树的所有数据都存储在叶子节点,查询路径的长度是固定的,时间稳定为O(log N), 对MySQL在高并发场景下的稳定性至关重要。

posted @ 2025-05-27 15:15  kuki'  阅读(17)  评论(0)    收藏  举报