MySQL慢查询分析

一、开启慢SQL配置

Linux系统在mysql配置文件 /etc/my.cnf 增加

slow_query_log=1
long_query_time=0.1    # 单位秒(100ms)

配置完后重启mysql,systemctl restart mysql

 

二、慢查询查询是否生效

show variable like "%slow_query_log%"

三、慢查询日志分析

/usr/bin 目录下,使用mysql自带命令:mysqldumpslow

常用参数:

1、-s 是order排序,主要有 c、t、l、r和ac、at、al、ar,分别是安装query次数、时间、lock时间、返回的记录数排序

2、-a 倒序排序

3、-t 是top n的意思,即取前面多少条的数据

4、-g 后边可以写一个正则匹配模式,大小写不敏感

 

常用命令:mysqldumpslow -s at -t 50 host-slow.log (显示耗时最长的50个SQL语句的执行信息)

 

四、通过执行计划分析SQL语句

SQL语句前添加 explain

explain select id from user where username="admin";

执行计划结果分析

type 可能的值,自上到下性能越来越差

1、const    -- 只有一个匹配行,用到primary key、unique key

2、Eq_ref   --唯一性索引扫描

3、ref     -- 非唯一性索引扫描,或只使用了联合索引的最左侧前缀

4、range    -- 索引扫描范围,在索引上进行给定范围的检索,如 between、in

5、index     -- 遍历索引

6、ALL        -- 全表扫描,最不合理

possible_keys(可能用到的索引)

keys(真正用到的索引)

posted @ 2022-06-19 16:49  DeyouKong  阅读(60)  评论(0编辑  收藏  举报