硬核剖析 MySQL 索引:从 B+Tree 底层到七大失效场景,一文彻底吃透
一、索引的本质:空间换时间的有序数据结构
索引是数据库中为了加速数据查找和访问而专门创建的有序数据结构。其核心价值在于通过维护一份按特定规则排序的索引数据,替代全表扫描,将磁盘I/O次数从万级降至个位数。
索引的代价:占用额外存储空间;数据增删改时需同步维护索引结构,写入性能下降。
二、底层数据结构:B+Tree
MySQL InnoDB 引擎默认使用 B+Tree 作为索引的底层数据结构。
2.1 B+Tree 核心特性
| 特性 | 说明 |
|---|---|
| 多路平衡树 | 每个节点存储多个键值,树高显著降低 |
| 数据仅存叶子节点 | 非叶子节点只存键值和指针,不存数据 |
| 叶子节点链表 | 叶子节点通过双向指针连接,支持高效范围查询 |
| 磁盘页对齐 | 节点大小匹配磁盘块(InnoDB默认16KB),减少I/O次数 |
