【数据库】MySQL慢查询常用分析方法

系统慢慢越来越卡了,怎么定位系统慢的原因,大部分是因为服务器资源占用耗费高引起的,如CPU,内存和带宽等等。MySQL在日常开发工作中可能会遇到某个新功能在测试时需要很久才返回结果,这时就应该分析是不是慢查询导致的,如果确实有慢查询,就需要来学习怎么找到慢查询和怎么分析 SQL 执行效率? 定位慢 SQL 有如下两种解决方案: 查看慢查询日志确定已经执行完的慢查询 show processlist 查看正在执行的慢查询 定位到慢查询语句后,可以通过 explain、show profile 和 trace 等诊断工具来分析慢查询

定位慢 SQL 有如下解决方案

  • 查看慢查询日志

  • 使用 explain 分析慢查询

  • show profile 分析慢查询

  • show processlist 查看正在执行的慢查询

怎样开启慢查询

开启命令

#开启慢查询
set global slow_query_log = on;
set global long_query_time = 1; #单位s

查询数据存放位置

show global variables like "datadir";
show global variables like "slow_query_log_file";

使用 explain 分析慢查询

使用命令explain关键字

explain select * from A where a.=''

关键指标说明 

列名    解释
id    查询编号
select_type    查询类型:显示本行是简单还是复杂查询
table    涉及到的表
partitions    匹配的分区:查询将匹配记录所在的分区。仅当使用 partition 关键字时才显示该列。对于非分区表,该值为 NULL。
type    本次查询的表连接类型
possible_keys    可能选择的索引
key    实际选择的索引
key_len    被选择的索引长度:一般用于判断联合索引有多少列被选择了
ref    与索引比较的列
rows    预计需要扫描的行数,对 InnoDB 来说,这个值是估值,并不一定准确
filtered    按条件筛选的行的百分比
Extra    附加信息

show profile 分析慢查询

猜你喜欢

转载自blog.csdn.net/wenchun001/article/details/131422763