慢日志使用前的准备工作
使用慢日志之前,需要确定服务器的 MySQL 是否开启了慢日志,使用下述 SQL 语句进行查询(需要有权限,如果你是 root 账户,直接操作即可)
show variables like '%slow_query_log%';
查询结果如下所示,只有开启了日志,才能进行慢日志文件查看。
除此之外,在使用下述命令查看一下,当前服务器配置的慢日志记录时间,即SQL查询超过多长时间才会被记录。
show variables like 'long_query_time';
例如下图所示,当前慢日志记录的时间为 3+ 秒。
如果服务器没有开启慢日志,在搜索引擎寻找开启颁发,然后重启 MySQL 即可。
慢日志开启之后,服务器运行几天,就可以去下载慢日志文件了,例如当前我(橡皮擦)使用的慢日志如下所示。
慢日志的格式如下图所示:
上图中的相关参数说明如下:
User@Host: 账号[密码] @ 服务器地址 [] Id: 570368
Query_time: 7.025717 Lock_time: 0.000000 Rows_sent: 286349 Rows_examined: 286349
Query_time
表示用了 7.025717 秒, Lock_time
表示锁了 0.000000 秒, Rows_sent
表示返回 286349 行, Rows_examined
表示一共查到 286349 行。
解析慢日志
从远程服务器下载慢日志文件之后,就可以对其进行分析了,这里重点使用的工具是 mysqldumpslow
,此时需要注意,分析是在本地电脑实施的,所以需要检查本地 mysqldumpslow
是否正常运行。
进入 MySQL 安装目录的 bin 文件夹,寻找 mysqldumpslow.exe
程序,如果发现仅有 mysqldumpslow.pl
文件(该文件一般是由于你的 MySQL 是使用 PhpStudy 工具安装的),需要再安装一个工具,名称为 ActivePerl
,这是由于 mysqldumpslow.pl
是 perl 程序,我们需要 perl 编译器。
安装 ActivePerl
时,注意配置 Path 环境变量,然后通过控制台进入到 MySQL 下的 bin 目录,首先使用 perl mysqldumpslow.pl --help
,查看是否能正常使用 mysqldumpslow
工具。
出现下图输出,即表示配置成功。
其中涉及到很多关键字,稍微需要记忆一下:
-
-s
:是表示按照何种方式排序,ORDER
参数可以为c:访问次数
,l:锁定时间
,r: 返回记录
,t: 查询时间
,al: 平均锁定时间
,ar: 平均返回记录数
,at: 平均查询时间
; -
-t
:表示top n
的意思,返回前面多少条数据; -
-g
:后面可以编写正则表达式,进行数据筛选;
有了上述内容之后,就可以进行慢日志相关检索了,例如下述命令,其中 log 文件为慢日志文件路径。
perl mysqldumpslow.pl -s c -t 20 C:\Users\Administrator\Downloads\mysql-slow.log
按照访问此处排序获取前20条。
输出内容如上所示,其中 LIMIT N,N
是由于 mysqldumpslow
会认为这是一种类型的语句,合并显示。
上述红框内的数据为:
Count: 47 Time=3.20s (150s) Lock=0.00s (0s) Rows=0.0 (0), username[password]@localhost
解释如下:
Count: 47(执行总次数) Time=3.20s(单次执行时间) (150s)(总执行时间) Lock=0.00s (0s)(等待锁的时间) Rows=0.0(单次返回记录数) (0)(总返回记录数), username[password]@localhost