在第一篇介绍慢查询的文章中,提到了什么是慢查询,如何解读慢日志,如何使用pt-query-digest工具快速分析慢日志,本篇文章接着分享慢查询的常见原因和处理思路。
一、慢查询的常见原因
1、大事务
2、无主键表
3、未有效创建索引
4、统计信息未及时收集导致执行计划不准确
5、多个大表关联
6、大表DDL操作
7、操作系统负载高
8、内存或是磁盘故障导致os性能降低
二、慢查询的处理思路
步骤一:掌握慢SQL语句信息
1、了解该SQL是新上的还是以前就有
2、该SQL以前执行情况如何,现在执行耗时多少
3、该SQL是批量还是联机交易,能容忍的耗时是多少
4、该SQL单次提交是否有限制行数,是哪种类型的SQL
5、该SQL所在事务是否还有其他SQL,其他SQL涉及行数是多少
步骤二:分析慢SQL执行计划
通过explain语句,分析执行计划,检查是否走了索引,对比扫描行数和返回行数。若走了索引,分析索引区分度。
步骤三:优化慢SQL
sql优化和索引优化可以参考前面的文章。