MySQL 慢日志

1. 简介

慢日志全称为慢查询日志(Slow Query Log),MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。

2. 配置详解

slow_query_log = on                  # 是否启用慢查询日志,默认为off,可设置为off,on,on表示开启。
slow_query_log_file = F:/log.txt     # 新版(5.6及以上版本)MySQL数据库慢查询日志存储路径。
log-slow-queries = F:/log.txt        # 旧版(5.6以下版本)MySQL数据库慢查询日志存储路径。
long_query_time = 1                  # 慢查询执行时间阈值,超过此时间会记录,默认为10,单位为s。
log_output = file                    # 慢查询日志输出目标,默认为file,即输出到文件,可为table、file。
log_timestamps = UTC                 # 主要是控制 error.log、slow.log、genera.log 日志文件中的显示时区,默认使用UTC时区,建议改为 SYSTEM 系统时区。
log_queries_not_using_indexes = off  # 是否记录所有未使用索引的查询语句,默认为off。
min_examined_row_limit = 0           # 对于查询扫描行数小于此参数的SQL,将不会记录到慢查询日志中,默认为0。
log_slow_admin_statements = off      # 慢速管理语句是否写入慢日志中,管理语句包含 alter table、create index 等,默认为 off 即不写入。
mysqld restart						 # 配置完成,重新启动数据库

3. 慢日志实例

命令行开启慢日志
mysql> show variables like 'slow_query%';  # 查看当前慢查询状态(默认为关闭)
+---------------------+------------+
| Variable_name       | Value      |
+---------------------+------------+
| slow_query_log      | ON         |
| slow_query_log_file | F:\log.txt |
+---------------------+------------+
2 rows in set, 7 warnings (0.00 sec)
mysql> set global slow_query_log='ON';  # 开启慢日志查询
Query OK, 0 rows affected (0.45 sec)
mysql> set global long_query_time = 1;  # 设置慢查询SQL执行记录时间为1秒
Query OK, 0 rows affected (0.00 sec)
mysql> show variables like 'slow_query%';  # 查看慢日志开启结果
+---------------------+------------+
| Variable_name       | Value      |
+---------------------+------------+
| slow_query_log      | ON         |
| slow_query_log_file | F:\log.txt |
+---------------------+------------+
2 rows in set, 7 warnings (0.00 sec)
mysql> show variables like 'long_query_time';  # 查看SQL超时时间
+-----------------+----------+
| Variable_name   | Value    |
+-----------------+----------+
| long_query_time | 1.000000 |
+-----------------+----------+
1 row in set, 7 warnings (0.00 sec)
通过MySQL配置文件开启慢查询(永久生效)
slow_query_log = ON
long_query_time = 1
slow_query_log_file = F:\log.txt
查询

为了明显的效果,使用数据蠕虫添加了 2000000 条数据。

mysql> select * from mytable where name='张三';
+---------+--------+------+
| id      | name   | age  |
+---------+--------+------+
| 2490317 | 张三   |   18 |
+---------+--------+------+
1 row in set (2.24 sec)

4. 日志记录结果

F:\phpstudy_pro\COM\..\Extensions\MySQL5.7.26\\bin\mysqld.exe, Version: 5.7.26-log (MySQL Community Server (GPL)). started with:
TCP Port: 3306, Named Pipe: (null)
Time                 Id Command    Argument
# Time: 2022-08-23T08:58:58.005826Z  
# User@Host: root[root] @ localhost [::1]  Id:     4
# Query_time: 2.241859  Lock_time: 0.446724 Rows_sent: 1  Rows_examined: 2097154
use admin;
SET timestamp=1661245138;
select * from mytable where name='张三';
Time :  SQL执行日期时间
User :执行SQL的用户
Query_time :SQL执行时间
Lock_time :SQL上锁时间
Rows_sent :查询到的SQL总条数
Rows_examined :总计查询条数
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龍九^

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值