mysqldumpslow工具

来源:这里教程网 时间:2026-03-01 11:51:39 作者:

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

相关推荐