MySQL慢日志的介绍以及如何使用问题

一,慢查询日志的介绍

MySQL数据库有一个“慢查询日志”功能,用来记录查询时间超过某个设定值的SQL,可以快速帮助我们找到需要优化的SQL位置。

二,慢查询日志开启

第一步,先通过指令查看一下自己的慢查询日志是否已经开启,如下:

slow_query_log 字段对应的value值为OFF,则表示慢查询日志为关闭状态。

slow_query_log_file 字段的value值代表的是MySQL数据库慢查询日志的存储路径,可不设置该参数,系统会自动给一个缺省文件。

查看慢查询的阈值

long_query_time 慢查询阈值,当查询时间多于设定的阈值时,记录日志,单位为秒

 第二步 ,就是开启慢查询日志功能,一般分为临时开启和永久开启;

临时开启

指令:set global slow_query_log = ON;

指令:set global long_query_time = 10;

临时开启慢查询日志功能,设置查询时间超过10秒的语句记录日志,重启MySQL后失效。

永久开启

修改/etc/mysql/my.cnf配置,重启Mysql,永久生效。配置如下:

[mysqld]

slow_query_log = ON

slow_query_log_file= /var/log/mysql/slow.log

long_query_time = 10

第三步:慢查新日志的内容如何看

# Time: 2018-08-16T00:00:04.821003+08:00# User@Host: zwfwroot[zwfwroot] @ 19.15.0.30 [19.15.0.30]  Id: 67508# Schema: gdqlk  Last_errno: 0  Killed: 0# Query_time: 14.344185  Lock_time: 0.000028  Rows_sent: 237064  Rows_examined: 237064  Rows_affected: 0# Bytes_sent: 96078006SETtimestamp=1534348804;SELECT*FROM`audit_catalog_lobby`;

如上是慢日志里其中一条SQL的记录内容,可以看到有时间戳,用户,查询时长及具体的SQL等,内容其实是很齐全的。但是存在一个问题,慢日志里往往有许多SQL,不可能一条一条SQL看过去,我们需要将所有的慢SQL分组统计后在进行分析。

Query_time:sql执行的时间,越长则代表越慢

Lock_time:mysql服务器阶段(不是在存储引擎阶段)等待表锁的时间

Rows_sent:查询返回的行数

Rows_examined:查询检查的行数

第四步:如何在慢查询日志中筛选特定的慢查询语句,有个mysqldumpslow命令可以在慢查询日志里筛选特定的慢查新语句。执行环境为:Linux下的shell下执行。

mysqldumpslow-s t-t 10-g"select"/var/lib/mysql/conf-db-fat-slow.log

指令中的参数说明:

-s:表示按照何种方式排序

c:访问次数

l:锁定时间

r:返回记录

t:查询时间

al:平均锁定时间

ar:平均返回记录数

at:平均查询时间

-t:top n的意思,返回前面多少条数据

-g:后边可以写一个正则匹配模式,大小写不敏感的其他具体用法可以使用mysqldumpslow -h去学习。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容