MySQL 慢查询排查的五个固定动作
一、先看慢查询日志
没有开启慢查询日志的话,一切讨论都是猜。先把 slow_query_log 打开,设置合理的 long_query_time。
二、EXPLAIN 看执行计划
重点看三列:type、rows、Extra。出现 ALL 基本就是全表扫描,Using filesort 说明排序没走索引。
三、检查索引是否失效
索引列上做函数运算、隐式类型转换、前置模糊匹配,都会让索引失效。
四、控制返回的列和行
只查需要的列,避免大字段参与排序。分页很深的场景,用游标分页替代 offset。
五、最后才考虑加缓存
慢查询是结果,不是原因。缓存只是把问题遮住,写多读少的场景反而更容易出问题。
评论(0)
还没有评论,来说两句吧。