叶子节点与叶子页

在 InnoDB 的聚簇索引中,叶子“页”和叶子“节点”本质上是同一物理存储单元的逻辑与物理视角的表述,但两者在概念层次上有细微差异:

1. 叶子节点:逻辑结构视角

  • 叶子节点是 B+ 树数据结构中的逻辑概念,表示索引树的最底层单元,直接存储完整的行数据(包含主键值、事务 ID、回滚指针和其他所有列的数据)。
  • 每个叶子节点通过双向链表连接,支持范围查询的高效遍历。

2. 叶子页:物理存储视角

  • 叶子页是 InnoDB 存储引擎管理数据的最小物理单元,对应磁盘上的一个固定大小(默认 16KB)的数据块。在聚簇索引中,每个叶子节点对应一个叶子页,即逻辑上的叶子节点在物理上表现为一个页。
  • 页内数据按主键顺序紧凑存储,保证物理顺序与逻辑顺序一致。

3. 两者的关系

  • 一一对应:每个叶子节点对应一个叶子页,两者是同一数据载体的不同抽象层次描述。例如,当提到“叶子节点存储数据行”时,实际是指这些数据行被组织在叶子页中。
  • 功能差异
    • 叶子节点强调 B+ 树的逻辑结构,关注数据关联性(如双向链表关系)。
    • 叶子页关注物理存储细节(如页分裂、空间利用率等),例如插入新数据时若页已满,会触发页分裂操作。

总结

在 InnoDB 的实现中,叶子节点和叶子页指向同一实体,但前者属于逻辑结构术语,后者属于物理存储术语。这种设计使得聚簇索引既能利用 B+ 树的高效查询特性,又能通过页管理机制优化磁盘 I/O 性能。