看到慢查询、死锁、索引失效,顺藤摸瓜找到根因
EXPLAIN 看 type 和 key —— type=ALL(全表扫)就是索引没用上,key=NULL 就是没走索引。
EXPLAIN → 看 type(ALL=全表扫最差,ref/range=走索引)、key(实际用的索引,NULL=没用)、rows(预估扫多少行)、Extra(Using index=覆盖索引好,Using filesort/temporary=差)SHOW ENGINE INNODB STATUS 的 LATEST DETECTED DEADLOCK| 现象 | 本质 | 第一反应 |
|---|---|---|
| SQL 慢 | 扫的数据太多 | EXPLAIN 看 type/key,全表扫就查索引失效 |
| 索引失效 | 优化器判断不走索引更划算 | 查六种失效场景(运算/类型/左模糊...) |
| 死锁 | 相反顺序加锁,循环等待 | SHOW ENGINE INNODB STATUS,统一加锁顺序预防 |
| 脏读/幻读 | 并发事务互相干扰 | 隔离级别 + MVCC 快照读 |
| 缓存不一致 | 数据存两份没同步 | Cache Aside + 延迟双删,强一致别用缓存 |