设置步骤
1. 查看慢查询相关参数
mysql> show variables like 'slow_query%';+---------------------+--------------------------------------+| Variable_name | Value |+---------------------+--------------------------------------+| slow_query_log | OFF || slow_query_log_file | /var/lib/mysql/9e598ca46b66-slow.log |+---------------------+--------------------------------------+2 rows in set (0.00 sec)mysql> show variables like 'long_query_time';+-----------------+-----------+| Variable_name | Value |+-----------------+-----------+| long_query_time | 10.000000 |+-----------------+-----------+1 row in set (0.00 sec)
2. 设置
- 全局变量设置
开启慢查询
mysql> set global slow_query_log='ON';
设置慢查询日志存放位置
mysql> set global slow_query_log_file='/var/lib/mysql/slow.log';
设置超时时间
mysql> set global long_query_time=2;
ps1: 使用命令 set global long_query_time=2
修改后,需要重新连接或新开一个会话才能看到修改值
ps2: 不知道为啥,我用全局设置的方法总是写不了慢查询日志,重启也不行
- 配置文件设置
修改配置文件my.cnf
,在[mysqld]下添加
[mysqld]slow_query_log = ONslow_query_log_file = /var/lib/mysql/slow.loglong_query_time = 2
重启MySQL服务
service mysqld restart
慢查询分析
mysqldumpslow -s [Parameter] -t [Parameter] /var/lib/mysql/slow.log
参数
-s : 排序方式
- c:query执行的次数
- t:sql执行的时间
- l:lock锁表的时间
- r:sql返回的行数
-t: top,返回前n条数据
-g: 正则匹配,大小写不敏感
返回执行时间最长的前两个query
mysqldumpslow -s t -t 2 /var/lib/mysql/slow.log
显示执行次数最多的前两个query
mysqldumpslow -s c -t 2 /var/lib/mysql/slow.log
返回按照时间排序的前10条里面含有左连接的查询语句
mysqldumpslow -s t -t 10 -g "left join" /database/mysql/slow-log
注:本文内容来自互联网,旨在为开发者提供分享、交流的平台。如有涉及文章版权等事宜,请你联系站长进行处理。