• 在线开启慢日志查询


    有时候我们会遇到线上突然运行比较慢,需要查看一下是否有慢查询。正常情况配置中是不会打开慢日志查询的,因为这个是消耗性能的,如果线上临时打开,又不能重启数据库,就需要通过命令在线设置。

    查询当前慢日志开启状态

    mysql> show variables like 'slow_query%';
    +---------------------+---------------------------------+
    | Variable_name       | Value                           |
    +---------------------+---------------------------------+
    | slow_query_log      | OFF                             |
    | slow_query_log_file | D:MysqlDataslow.log |
    +---------------------+---------------------------------+
    2 rows in set (0.01 sec)
    
    mysql> show variables like 'long_query_time';
    +-----------------+-----------+
    | Variable_name   | Value     |
    +-----------------+-----------+
    | long_query_time | 10.000000 |
    +-----------------+-----------+
    1 row in set (0.01 sec)
    

    可以看到当前慢日志查询开启状态是OFF,目录是D:MysqlDataslow.log,查询时间是10秒。

    开启慢日志查询设置对应参数

    mysql> set global slow_query_log='ON';
    Query OK, 0 rows affected (0.03 sec)
    
    mysql> set global slow_query_log_file='D:\MysqlData\slow1.log';
    Query OK, 0 rows affected (0.02 sec)
    
    mysql> set global long_query_time=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 | D:MysqlDataslow1.log |
    +---------------------+------------------------+
    2 rows in set (0.00 sec)
    
    mysql> show variables like 'long_query_time';
    +-----------------+-----------+
    | Variable_name   | Value     |
    +-----------------+-----------+
    | long_query_time | 10.000000 |
    +-----------------+-----------+
    1 row in set (0.00 sec)
    

    我们发现long_query_time还是10秒,这个更新需要我们重新连接一下。退出当前链接,重新登录查看:

    mysql> show variables like 'long_query_time';
    +-----------------+----------+
    | Variable_name   | Value    |
    +-----------------+----------+
    | long_query_time | 1.000000 |
    +-----------------+----------+
    1 row in set (0.01 sec)
    

    我们看到查询时间已经变了。

    测试

    执行一条慢查询

    select sleep(2);
    

    查看D:MysqlDataslow1.log文件,如下:

    # Time: 2020-11-05T05:55:44.393317Z
    # User@Host: root[root] @ localhost [::1]  Id:     4
    # Query_time: 2.000115  Lock_time: 0.000000 Rows_sent: 1  Rows_examined: 0
    SET timestamp=1604555744;
    select sleep(2);
    

    配置文件

    除了在线打开,也可以在配置文件中配置,一般不建议打开,会影响性能。

    [mysqld]
    slow-query-log=1
    slow_query_log_file="slow.log"
    long_query_time=10
    

    配置文件会随着数据库的启动而加载,如果修改了配置文件,想要起作用需要重启数据库服务。

  • 相关阅读:
    一些常用的 Git 进阶知识与技巧
    自动充值平台开发进程之联通卡密一最终实现
    自动充值平台开发进程之联通卡密一准备阶段
    自动充值平台开发进程之联通卡密一显示界面
    [注入] 突破 SESSION 0 隔离的远线程注入
    git 撤销 push 提交
    [C#] 获取时间戳(秒/毫秒)
    html判断浏览器是否支持,不支持则输出
    [C#] MD5 加密
    [Windows驱动开发] 进程的pid handle eprocess之间相互转换的方法
  • 原文地址:https://www.cnblogs.com/studywithallofyou/p/13931358.html
Copyright © 2020-2023  润新知