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 -- 全表扫描,最不合理
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)