硬核剖析 MySQL 索引:从 B+Tree 底层到七大失效场景,一文彻底吃透

硬核剖析 MySQL 索引:从 B+Tree 底层到七大失效场景,一文彻底吃透

一、索引的本质:空间换时间的有序数据结构

索引是数据库中为了加速数据查找和访问而专门创建的有序数据结构。其核心价值在于通过维护一份按特定规则排序的索引数据,替代全表扫描,将磁盘I/O次数从万级降至个位数。

索引的代价:占用额外存储空间;数据增删改时需同步维护索引结构,写入性能下降。


二、底层数据结构:B+Tree

MySQL InnoDB 引擎默认使用 B+Tree 作为索引的底层数据结构。

2.1 B+Tree 核心特性

特性说明
多路平衡树每个节点存储多个键值,树高显著降低
数据仅存叶子节点非叶子节点只存键值和指针,不存数据
叶子节点链表叶子节点通过双向指针连接,支持高效范围查询
磁盘页对齐节点大小匹配磁盘块(InnoDB默认16KB),减少I/O次数

2.2 为什么是 B+Tree 而不