MySQL 索引为什么没按预期生效:SQL 明明走了索引,怎么还是慢
线上排查慢 SQL 时,经常会遇到一种很别扭的情况:
Java
这里按页继续往后翻,仍然围绕接口变慢、数据库等待、线程池、JVM 与线上问题排查这些问题。
线上排查慢 SQL 时,经常会遇到一种很别扭的情况:
很多人第一次排查 order by 慢,会下意识把问题理解成:SQL 只是多写了一句排序,为什么接口时间会差这么多。
慢 SQL 这件事,最容易把人带进一个很熟悉的动作:先把 SQL 拿出来,跑一遍 EXPLAIN,然后开始盯 type、rows、key。
很多缓存事故一出现场,群里第一句就是:“是不是雪崩了?”
热 key 这个词大家都熟,但真到现场,很多人还是会先把它当成“Redis 不够扛”的容量问题。其实两者差别很大。集群容量不够时,通常是整体一起吃紧;热 key 更常见的样子,是 只有某个分片先红,别的节点还挺安静。
Spring Boot 启动慢,在本地也许只是开发体验问题;放到扩容、滚动发布和故障恢复里,它影响的就是可用性窗口。
很多事务问题,团队里第一句都会先说成:@Transactional 失效了。
SQL 优化这件事,很容易在面试里被问成一个宽泛的问题:做过哪些 SQL 优化?如果只按“加索引、改写 SQL、看执行计划”这种关键词去回答,虽然不算错,但通常很难真正说明自己理解了什么。