MySQL慢查询日志

186 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第3天,点击查看活动详情

前言

上篇我们学习了MySQL中的数据库优化。有兴趣的小伙伴可以阅读(MySQL数据库优化(二))。
下面我们继续学习MySQL中的数据库优化之慢查询日志。

慢查询日志

开启慢查询日志参数

  1. 开启slow_query_log
set global slow_query_log='ON';

然后我们查看慢查询日志是否开启,以及慢查询日志文件的位置:

show variables like '%slow_query_log%';
Variable_nameValue
slow_query_logON
slow_query_log_file/var/lib/mysql/slow.log

这里能看到这时慢查询分析已经开启,同时文件保存在/var/lib/mysql/slow.log文件中。

  1. 修改long_query_time阈值
    查看慢查询的时间阈值设置(即超过多少的执行时间算是慢查询),使用如下命令:
show variables like '%long_query_time%';
Variable_nameValue
long_query_time10.000000

如果想把时间缩短,比如设置为1s,可以进行如下设置:

set global long_query_time = 1;
set long_query_time = 1;

这里设置global后,再设置一遍的原因是global的方式对当前session的long_query_time失效,对新客户端有效,所以需要再设置一次当前的session。

再次查看时间:

Variable_nameValue
long_query_time1.000000

查看慢查询数目

查询当前系统中有多少条慢查询记录

SHOW GLOBAL STATUS LIKE '%slow_queries%';

慢查询日志分析工具

MySQL提供了日志分析工具mysqldumpslow。通过mysqldumpslow可以查看慢查询日志。常用的命令的具体参数如下:

  1. -a:不将数字抽象成N,字符串抽象成S。
  2. -s:表示按照以下哪种方式排序:
    c:访问次数
    l:锁定时间
    r:返回记录
    t:查询时间
    al:平均锁定时间
    ar:平均返回记录数
    at:平均查询时间(默认)
    ac:平均查询次数
  3. -t:返回前面多少条的数据。
  4. -g:后跟正则模式,大小写不敏感。

关闭慢查询日志

MySQL服务器停止慢查询日志功能有两种方法:

  1. 永久性方式

修改配置文件:

[mysqld]
slow_query_log=OFF

或者把slow_query_log注释掉或删除

[mysqld]
#slow_query_log=OFF
  1. 临时性方式

使用SET语句设置。

SET GLOBAL slow_query_log=off;

今天先学习到这里,明天继续