MySQL B+ 树与索引
一句话结论 MySQL InnoDB 用 B+ 树作为索引结构——非叶子节点只存键不存数据、叶子节点存完整行并通过双向链表连接。千万级数据只需 3-4 层,范围查询顺序 I/O 极快。 核心原理 为什么 B+ 树 二叉树千万数据约 24 层(24 次随机 I/O),B+ 树每节点存 1000 个键
一句话结论 MySQL InnoDB 用 B+ 树作为索引结构——非叶子节点只存键不存数据、叶子节点存完整行并通过双向链表连接。千万级数据只需 3-4 层,范围查询顺序 I/O 极快。 核心原理 为什么 B+ 树 二叉树千万数据约 24 层(24 次随机 I/O),B+ 树每节点存 1000 个键
一句话结论 InnoDB 有三种锁:行锁(锁定具体行)、间隙锁(锁定行之间的间隙,防插入)、临键锁(行锁+间隙锁,InnoDB 默认)。RR 隔离级别通过临键锁解决幻读。 核心原理 三种锁 表数据: [id=5] ...(间隙)... [id=10] ...(间隙)... [id=15] SELE
一句话结论 MySQL 索引优化围绕一个核心目标:减少回表。手段是覆盖索引、联合索引、索引下推,工具是 EXPLAIN。 覆盖索引 一句话: 查询所需字段全部能从索引中获得,不需要回表查聚簇索引。 -- 索引: (user_id, status, created_at) SELECT user_id
一句话结论 MySQL InnoDB 通过 MVCC(多版本并发控制) 实现非锁定的一致性读——每个事务看到的是快照数据,读写互不阻塞。隔离级别决定了快照的"新鲜程度"。 核心原理 四大隔离级别