《MySQL系列-InnoDB引擎15》慢查询日志拓展-mysqldumpslow日志分析工具
Posted DATA数据猿
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《MySQL系列-InnoDB引擎15》慢查询日志拓展-mysqldumpslow日志分析工具相关的知识,希望对你有一定的参考价值。
慢查询日志拓展-mysqldumpslow日志分析工具
1.mysqldumpslow
[root@zxy_master mysql]# mysqldumpslow --help
Usage: mysqldumpslow [ OPTS... ] [ LOGS... ]
Parse and summarize the MySQL slow query log. Options are
#分析并总结MySQL慢速查询日志。选项包括
--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, at, ar, c, l, r, t),默认为'at'
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
# NUM仅显示前n个查询
-a don't abstract all numbers to N and strings to 'S'
# 不要将所有数字抽象为N,将字符串抽象为S
-n NUM abstract numbers with at least n digits within names
# NUM个抽象数字,名称中至少有n个数字
-g PATTERN grep: only consider stmts that include this string
# grep:只考虑此字符串的stmts
-h HOSTNAME hostname of db server for *-slow.log filename (can be wildcard),
default is '*', i.e. match all
# hostname数据库服务器的主机名,用*-slow.log filename(可以是通配符),默认为*,即匹 配所有
-i NAME name of server instance (if using mysql.server startup script)
# 服务器实例的名称(如果使用MySQL.server启动脚本)
-l don't subtract lock time from total time
# 不要从总时间中减去锁定时间
2.mysqldumpslow结果介绍
[root@zxy_master mysql]# mysqldumpslow -s r -t 10 /var/lib/mysql/zxy_master-slow.log
Reading mysql slow query log from /var/lib/mysql/zxy_master-slow.log
Count: 2 Time=11.00s (22s) Lock=0.00s (0s) Rows=1.0 (2), root[root]@localhost
select sleep(N)
Died at /usr/bin/mysqldumpslow line 167, <> chunk 1.
# Count:2 --出现次数
# Time=11.00s (22s) --执行最长时间,累计总耗费时间
# Lock=0.00s (0s) --等待锁的时间
# Rows=1.0 (2) --发送给客户端的行总数,扫描行总数
# root[root]@localhost --执行用户及地址
2.mysqldumpslow使用案例
# 得到返回记录集最多的10个SQL
mysqldumpslow -s r -t 10 /var/lib/mysql/zxy_master-slow.log
# 得到访问次数最多的10个SQL
mysqldumpslow -s c -t 10 /var/lib/mysql/zxy_master-slow.log
# 得到根据查询时间排序后的前10个SQL
mysqldumpslow -s t -t 10 /var/lib/mysql/zxy_master-slow.log
# 得到根据查询时间排序后,并包含'zxy'的前10个SQL
mysqldumpslow -s t -t 10 -g "zxy" /var/lib/mysql/zxy_master-slow.log
3.2.3 查询日志
查询日志记录了所有对MySQL数据库请求的信息,无论这些请求是否得到了正确的执行。默认文件名为:hostname.log。
# 1.查询日志未开启
mysql> show variables like 'general_log%';
+------------------+-------------------------------+
| Variable_name | Value |
+------------------+-------------------------------+
| general_log | OFF |
| general_log_file | /var/lib/mysql/zxy_master.log |
+------------------+-------------------------------+
2 rows in set (0.00 sec)
# 2.日志保存类型为table,查询日志存储在mysql.general_log表
mysql> show variables like 'log_output';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_output | TABLE |
+---------------+-------+
1 row in set (0.00 sec)
# 3.开启查询日志
mysql> set global general_log = ON;
Query OK, 0 rows affected (0.00 sec)
# 4.查看查询日志
mysql> select * from mysql.general_log\\G;
*************************** 1. row ***************************
event_time: 2023-01-12 16:56:32.154346
user_host: root[root] @ localhost []
thread_id: 1664
server_id: 1
command_type: Query
argument: select * from mysql.general_log
通过上述步骤可以看到,开启查询日志后,当日志存储类型为TABLE的时候,可以直接在mysql.general_log
表中查询到。也可以尝试将日志存储类型改为FILE,那么就需要查看/var/lib/mysql/zxy_master.log
文件。
以上是关于《MySQL系列-InnoDB引擎15》慢查询日志拓展-mysqldumpslow日志分析工具的主要内容,如果未能解决你的问题,请参考以下文章
《MySQL系列-InnoDB引擎15》慢查询日志拓展-如何开启MySQL慢查询日志?
《MySQL系列-InnoDB引擎15》慢查询日志拓展-如何开启MySQL慢查询日志?
《MySQL系列-InnoDB引擎15》慢查询日志拓展-mysqldumpslow日志分析工具
《MySQL系列-InnoDB引擎15》慢查询日志拓展-mysqldumpslow日志分析工具