B+树理解

数据结构可视化网站:B+ Tree Visualization (usfca.edu)

对于MySQL而言,B+树节点大小为1页=16K,因为对于大部分业务,16K足够。通常1-3层B+树就足以应对常见场景。

为什么足够:

  1. B+树的叶子节点存的是数据行,非叶子节点是key+指针
    • 叶子节点:如果一行数据大小是1K,那么能存16个数据
    • 非叶子节点:如果key用的是bigint,那么8字节,MySQL中指针是6字节,那么需要8+6=14字节,一页16K能存放16*1024/14=1170个key+指针。根节点有1170个key+指针,下一层有1170*1170个key+指针,最底层有1170*1170*16=21902400个数据,达到两千万级别了。

近似满的度为3的高为3的B+树。(0000和0001处没满)

满B+树