MySQL性能分析思路总结
总结一下对mysql性能分析的大概思路。
分析
-
开启慢查询日志(slow_query_log)
设定一个阈值,通过查询日志记录下这些慢的SQL语句,然后进行分析
1、是否建立了索引?
2、建立了索引,是否有达到走索引的效果?
如:遵循最左前缀原则;
是否使用了范围查找(>、<、in、between);
是否使用了not in、!=、<>导致全表扫描;
是否使用了is null、is not null导致索引失效;
是否使用了like 并且以%开头导致索引失效(可以通过覆盖索引查询进行优化)
是否在使用VARCHAR字符串类型查找时没有加单引号;
是否使用了OR导致索引失效;
使用order by和group by是遵循使用规范(按照符合索引顺序);
3、多表查询分析是否遵循小表驱动大表,要合理使用 in 和 exists(解析) -
通过
explain
进行性能分析,主要观察字段有type、key、key_len、ref、Extra字段查看,查看是否达到了走索引的目的,分析并调整SQL语句或索引设计
1、出现using filesort
:没有使用到索引实现排序