如果你在做后台开发,那 mysql 优化场景肯定会碰到的,优化场景中首先上手的就是慢日志。

慢日志使用前的准备工作

使用慢日志之前,需要确定服务器的 MySQL 是否开启了慢日志,使用下述 SQL 语句进行查询(需要有权限,如果你是 root 账户,直接操作即可)

show variables  like '%slow_query_log%';

查询结果如下所示,只有开启了日志,才能进行慢日志文件查看。

看一篇就学会系列,mysql慢日志查看,本地mysql是使用phpstudy安装的

除此之外,在使用下述命令查看一下,当前服务器配置的慢日志记录时间,即SQL查询超过多长时间才会被记录。

show variables like 'long_query_time';

例如下图所示,当前慢日志记录的时间为 3+ 秒。

看一篇就学会系列,mysql慢日志查看,本地mysql是使用phpstudy安装的

如果服务器没有开启慢日志,在搜索引擎寻找开启颁发,然后重启 MySQL 即可。

慢日志开启之后,服务器运行几天,就可以去下载慢日志文件了,例如当前我(橡皮擦)使用的慢日志如下所示。

看一篇就学会系列,mysql慢日志查看,本地mysql是使用phpstudy安装的

慢日志的格式如下图所示:

看一篇就学会系列,mysql慢日志查看,本地mysql是使用phpstudy安装的

上图中的相关参数说明如下:

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 工具。

出现下图输出,即表示配置成功。

看一篇就学会系列,mysql慢日志查看,本地mysql是使用phpstudy安装的

其中涉及到很多关键字,稍微需要记忆一下:

  • -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条。

看一篇就学会系列,mysql慢日志查看,本地mysql是使用phpstudy安装的

输出内容如上所示,其中 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

除了慢日志以外,日常运维还要关注 MySQL二进制日志MySQL通用查询日志MySQL错误日志 ……
在写 SQL 语句的时候,注意 explain 的使用哦~

支持博主时间

今天是持续写作的第 279 / 365 天。
可以关注我,点赞我、评论我、收藏我啦。

更多精彩


看一篇就学会系列,mysql慢日志查看,本地mysql是使用phpstudy安装的

👇👇👇扫码加入【78技术人】~ Python 事业部👇👇👇
Logo

更多推荐