MySQL
MySQL 是关系型数据库代表。索引、事务、优化是三块必会内容。
一、索引与 B+ 树
InnoDB 用 B+ 树:叶子有序且链表相连,便于范围查询;二级索引叶子存主键,可能回表,能用覆盖索引避免。联合索引遵循最左前缀原则。
二、事务与隔离
ACID 中,隔离级别解决脏读、不可重复读、幻读。默认可重复读(RR)靠 MVCC 实现。间隙锁进一步防止幻读。
三、优化思路
- 用
EXPLAIN看执行计划,关注 type/key/rows。 - 避免索引失效:函数运算、前导 %、隐式转换、范围后列失效。
- 慢查询日志 + 索引优化,而非盲目加机器。
索引是"用空间换时间",不是越多越好。冗余索引会拖慢写入,应按真实查询模式设计。