mysqldumpslow工具
开启慢查询
查看慢查询相关参数
slow_query_log:慢查询是否开启
slow_query_log_file:慢查询文件位置
long_query_time:超过多长时间记录
log_queries_not_using_indexes:没有使用索引的sql
mysql> show variables like ‘slow_query%’;
±--------------------±---------------------------+
| Variable_name | Value |
±--------------------±---------------------------+
| slow_query_log | ON |
| slow_query_log_file | /var/lib/mysql/db-slow.log |
±--------------------±---------------------------+
2 rows in set (0.01 sec)
mysql> show variables like ‘long_query_time’;
±----------------±---------+
| Variable_name | Value |
±----------------±---------+
| long_query_time | 2.000000 |
±----------------±---------+
1 row in set (0.00 sec)
mysql> show variables like ‘log_queries_not%’;
±------------------------------±------+
| Variable_name | Value |
±------------------------------±------+
| log_queries_not_using_indexes | OFF |
±------------------------------±------+
1 row in set (0.00 sec)
设置方法
方法1:全局变量设置
mysql> set global slow_query_log=‘ON’;
mysql> set global slow_query_log_file=’/var/lib/mysql/db-slow.log’;
mysql> set global long_query_time=2;
mysql> set global log_queries_not_using_indexes=1;
方法2:配置文件设置
修改配置文件my.cnf在[mysqld]下加入如下内容
slow_query_log = ON
slow_query_log_file = /var/lib/mysql/db-slow.log
long_query_time = 2
log_queries_not_using_indexes=1
修改后重启mysql服务
测试
mysql> select sleep(3);
[root@db ~]# tail -f /var/lib/mysql/db-slow.log
Time: 2018-12-25T08:00:48.199670Z
User@Host: root[root] @ localhost [] Id: 2443797
Query_time: 3.000198 Lock_time: 0.000000 Rows_sent: 1 Rows_examined: 0
SET timestamp=1545724848;
select sleep(3);
[root@db ~]# mysqldumpslow --help
Usage: mysqldumpslow [ OPTS… ] [ LOGS… ]
Parse and summarize the MySQL slow query log. Options are
–verbose verbose
–debug debug
–help write this text to standard output
-v verbose
-d debug
-s ORDER what to sort by (al, at, ar, c, l, r, t), ‘at’ is default
al: average lock time
ar: average rows sent
at: average query time
c: count
l: lock time
r: rows sent
t: query time
-r reverse the sort order (largest last instead of first)
-t NUM just show the top n queries
-a don’t abstract all numbers to N and strings to ‘S’
-n NUM abstract numbers with at least n digits within names
-g PATTERN grep: only consider stmts that include this string
-h HOSTNAME hostname of db server for *-slow.log filename (can be wildcard),
default is '*', i.e. match all
-i NAME name of server instance (if using mysql.server startup script)
-l don’t subtract lock time from total time
常用参数
-s 排序方式 后面跟排序列
al 平均锁定时间
ar 平均返回记录时间
at 平均查询时间(默认)
c 计数
l 锁定时间
r 返回记录
t 查询时间
-r 反向排序,最大的在最后
-t 后面跟数字,返回行数
-a 不将所有的数字抽象为N,字符串抽象为S
-n 后面跟数字,在名称中至少有n个数字抽象为数字
-g 正则后边可以写一个正则匹配模式,大小写不敏感的
案例:
1.根据计数返回5条记录
mysqldumpslow -s c -t 5 /var/lib/mysql/db-slow.log
2.根据返回记录返回5条记录
mysqldumpslow -s r -t 5 /var/lib/mysql/db-slow.log
3.根据查询时间返回5条记录
mysqldumpslow -s t -t 5 /var/lib/mysql/db-slow.log
4.根据计数统计,不抽象数字及字符串
mysqldumpslow -s c -a -t 5 /var/lib/mysql/db-slow.log
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28282660/viewspace-2286399/
转载自原文链接, 如需删除请联系管理员。
原文链接:mysqldumpslow工具,转载请注明来源!