mysql 慢查询
原创 mysql 慢查询 2023-07-02 08:38:13
2 收藏 1 浏览2200 评论0
琴朗
已发34篇
有侵犯版权请及时联系我们,我们将在24小时内删除文章。
投诉举报

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';

man2.png

开启慢查询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';

man1.png

修改阈值时间

set global long_query_time= N;


5.未使用索引是否开启日志

查询未使用索引是否开启记录慢查询日志: 

show variables like 'log_queries_not_using_indexes';

man3.png

开启记录未使用索引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%';

man4.png


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

man5.png


解决办法:

ln -s /www/server/mysql/bin/mysqldumpslow /usr/bin

其中 /www/server/mysql/bin/mysqldumpslow 是mysqldumpslow的安装目录




评论(0) 我要评论