MySQL开启慢查询日志

MySQL开启慢查询日志

罗小黑
2021-08-20 / 3 评论 / 68 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2021年08月20日,已超过39天没有更新,若内容或图片失效,请留言反馈。

前言

数据库日志记录了用户对数据库的各种操作及数据库发生的各种事件。能帮助数据库管理员追踪、分析问题。MySQL提供了错误日志、二进制日志、查询日志、慢查询日志。

MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值(long_query_time,单位:秒)的SQL语句。默认情况下,MySQL不启动慢查询日志。本文简单介绍如何开启慢查询日志,如何用mysqldumpslow分析慢查询。

参数说明:

slow_query_log #慢查询开启状态,ON开启,OFF关闭
slow_query_log_file #慢查询日志存放的位置(这个目录需要MySQL的运行帐号的可写权限,一般设置为MySQL的数据存放目录)
long_query_time #查询超过多少秒才记录  默认10s ,查询命令 SHOW VARIABLES LIKE 'long_query_time';
log_queries_not_using_indexes = 1 #表明记录没有使用索引的 SQL 语句

重点说明:开启慢日志版本要高,低版本无法支持,本次版本是: 5.7.34

SELECT VERSION();  #查询版本号  或者  show variables like '%version%'

配置开启慢查询

编辑MySQL配置文件my.cnf
在【mysqld】字段下加入:

long_query_time=1 #表示记录查询超过1s的sql
slow_launch_time=1 #表示如果建立线程花费了比这个值更长的时间,slow_launch_threads 计数器将增加
slow_query_log=ON #开启慢查询日志
slow_query_log_file=/var/lib/mysql/slow_queries.log #慢查询日志记录文件

mysql>  show variables like 'slow_query%';
+---------------------+---------------------------------+
| Variable_name       | Value                           |
+---------------------+---------------------------------+
| slow_query_log      | ON                              |
| slow_query_log_file | /var/lib/mysql/slow_queries.log |
+---------------------+---------------------------------+
2 rows in set (0.00 sec)

mysql> SHOW VARIABLES LIKE 'long_query_time';
+-----------------+----------+
| Variable_name   | Value    |
+-----------------+----------+
| long_query_time | 1.000000 |
+-----------------+----------+
1 row in set (0.00 sec)

测试

mysql> select sleep(2);
+----------+
| sleep(2) |
+----------+
|        0 |
+----------+
1 row in set (2.02 sec)
[root@cs ~]# cat  /var/lib/mysql/slow_queries.log
/usr/sbin/mysqld, Version: 5.7.34-log (MySQL Community Server (GPL)). started with:
Tcp port: 0  Unix socket: /var/lib/mysql/mysql.sock
Time                 Id Command    Argument
# Time: 2021-08-20T10:01:18.841053Z
# User@Host: root[root] @ localhost []  Id:     3
# Query_time: 2.023306  Lock_time: 0.000000 Rows_sent: 1  Rows_examined: 0
SET timestamp=1629453678;
select sleep(2);

删除慢查询日志

慢查询日志的删除方法与通用日志的删除方法是一样的。可以使用 mysqladmin 命令来删除。也可以使用手工方式来删除。mysqladmin 命令的语法如下:

mysqladmin -uroot -p flush-logs

执行该命令后,命令行会提示输入密码。输入正确密码后,将执行删除操作。新的慢查询日志会直接覆盖旧的查询日志,不需要再手动删除。

数据库管理员也可以手工删除慢查询日志,删除之后需要重新启动 MySQL 服务。

1

打赏

评论 (3)

取消
  1. 头像
    D小白
    Windows 10 · Google Chrome
    沙发

    画图

    回复 删除 垃圾
  2. 头像
    小黑666
    Windows 10 · QQ Browser
    板凳

    画图

    回复 删除 垃圾
  3. 头像
    小黑666
    Windows 10 · QQ Browser
    地毯

    画图

    回复 删除 垃圾