1.什么是慢查询
慢查询就是执行查询比较慢的sql语句,这种语句必须要进行优化,long_query_time是设定的时间阈值,默认是10秒,只要执行超过10秒就需要进行优化。
慢查询默认是不开启的,需要手动开启。
2.登录mysql
mysql -h localhost -P 3306 -u root -proot -h:host 主机名/IP地址 -P:port端口号 -u:user 用户名 -p:password密码
3.是否开启慢查询日志以及开启和关闭
show variables like 'slow_query_log';
开启慢查询sql,两个都有效
set global slow_query_log = 1; set global slow_query_log = on;
关闭慢查询sqll,两个都有效
set global slow_query_log = 0; set global slow_query_log = off;
也可以一次性查询是否开启和时间阈值
show variables like '%slow_query_log%';
4.慢查询时间设置
查询时间阈值
show variables like 'long_query_time';
修改阈值时间
set global long_query_time= N;
5.未使用索引是否开启日志
查询未使用索引是否开启记录慢查询日志:
show variables like 'log_queries_not_using_indexes';
开启记录未使用索引sql,两个都有效
set global log_queries_not_using_indexes = 1; set global log_queries_not_using_indexes = on;
关闭记录未使用索引sql,两个都有效
set global log_queries_not_using_indexes = 0; set global log_queries_not_using_indexes = off;
6.日志路径
查询MySQL慢查询日志的路径:
show variables like 'slow_query_log_file%';
7.日志分析
一般使用mysqldumpslow工具分析慢查询日志
查询用时最多的10条慢sql:
mysqldumpslow -s t -t 10 -g 'select' F:\soft\phpstudy_pro\Extensions\MySQL5.7.26\data\DESKTOP-EH8BBAJ-slow.log
下面是代表的意思
Count:sql总共执行了多少次 Time:执行的时间,括号是累计时间 Lock:锁定的时间,括号是累计时间 Rows:返回的记录数,括号是累计记录数
执行mysqldumpslow时可能会出现
-bash: mysqldumpslow: command not found
首先查找mysqldumpslow
find / -name mysqldumpslow
解决办法:
ln -s /www/server/mysql/bin/mysqldumpslow /usr/bin
其中 /www/server/mysql/bin/mysqldumpslow 是mysqldumpslow的安装目录