SQL高级之慢查询日志

简介

  1. 他是一种日志记录,用来记录在MySql中响应时间超过阈值的语句,具体指运行时间超过long_query_time值的SQL,会被记录到慢查询日志中
  2. long_query_time的默认值为10,运行超过10s以上的语句就会被记录
  3. 默认情况下,MYSQL数据库不会开启慢查询日志,需要我们手动来设置这个参数。
  4. 一般不需要调优的话,不建议启动该参数,因为开启慢查询日志或多或少带来一定的性能影响。慢查询日志支持将日志记录写入文件

查看

SHOW VARIABLES LIKE '%slow_query_log%';

在这里插入图片描述

我们输入一个慢的sql

SELECT SLEEP(20);

查看日志如下

# Time: 2023-06-21T01:15:18.324013Z
# User@Host: root[root] @ localhost [127.0.0.1]  Id:     8
# Query_time: 20.000378  Lock_time: 0.000000 Rows_sent: 1  Rows_examined: 1
use hcm_test;
SET timestamp=1687310098;
select sleep(20);

开启

SET GLOBAL slow_query_log=1;
  1. 开启后只针对当前数据库生效,如果mysql重启后,那么就会失效
  2. 如果想要永久生效,那么必须修改my.cnf文件(其他的系统变量也是如此)
    1. [mysqld]下增加或修改参数,slow_query_logslow_query_log_file后,然后重启MySQL服务器
    2. slow_query_log =1
    3. slow_query_log_file=/var/lib/mysql/xxx.log
    4. long_query_time=3;
    5. log_output=FILE

slow_query_log_file

  1. 它指定慢查询日志文件的存放路径
  2. 系统默认会给一个缺省的文件host_name-slow.log(如果没有指定参数slow_query_log_file的话)
  3. 通过一下命令可以查看日志存放的路径
SHOW VARIABLES LIKE 'slow_query_log_file%';

使用

查看多少秒算慢

SHOW VARIABLES LIKE 'long_query_time%';

在这里插入图片描述

修改

SET GLOBAL long_query_time=1;

这个命令是修改成1s,但是我们再次查询会发现他的值还是10s,这个时候我们需要新打开一个会话的窗口才行,或者我们可以修改当前会话的变量

SET SESSION long_query_time=1;

查询

SHOW VARIABLES LIKE '%long_query_time%';

在这里插入图片描述

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

模仿一下慢查询

SELECT SLEEP(20);

查询慢查询记录

SHOW GLOBAL STATUS LIKE '%Slow_queries%';

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值