Mysql开启慢查询日志

本文将指导您如何配置MySQL的慢查询日志、调整慢查询条件和使用mysqldumpslow工具分析日志,以优化数据库性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 修改/etc/my.cnf文件

    1. long_query_time=1                     \\查询超时1秒即为慢查询

    2. slow_query_log_file=/tmp/slow.log     \\慢查询日志存放位置


  2. 在mysql控制台设置

    1. mysql> set long_query_time=1;                        \\设置查询超时1秒即为慢查询
    2. mysql> set global slow_query_log_file='日志位置'     \\设置慢查询日志存放位置
    3. mysql> show variables like 'long%';                  \\查看慢查询的条件
    4. mysql> show variables like 'slow%';                  \\查看慢查询详细信息
    5. mysql> set global slow_query_log='ON'                \\开启慢查询


  3. mysqldumpslow慢查询工具

    选项: 

      -s    是表示按照何种方式排序;
            c    按照记录次数来排序
            t    按照时间来排序
            l    按照查询时间来排序
            r    按照返回的记录数来排序
            ac   按照记录次数来倒序
            at   按照时间来倒序
            al   按照查询时间来倒序
            ar   按照返回的记录数来倒序;
            
      -t    是top n的意思,即为返回前面多少条的数据;
      -g    后边可以写一个正则匹配模式,大小写不敏感的;

    例:

    mysqldumpslow -s c -t 10 slow.log
    输出记录次数最多的10条SQL语句
    mysqldumpslow -s r -t 10 slow.log
    得到返回记录集最多的10个查询。
    mysqldumpslow -s t -t 10 -g “left join” slow.log
    得到按照时间排序的前10条里面含有左连接的查询语句。


### 如何在 MySQL 8.0 中配置和开启慢查询日志 #### 开启慢查询日志的基础设置 默认情况下,MySQL慢查询日志功能处于关闭状态[^1]。可以通过修改 MySQL 配置文件 `my.cnf` 或者通过动态调整系统变量来启用该功能。 #### 修改配置文件的方法 编辑 MySQL 配置文件 `my.cnf` 并添加或更新以下参数: ```ini [mysqld] slow_query_log = 1 long_query_time = 0.1 slow_query_log_file = /usr/local/mysql/mysql_slow.log ``` 其中: - 参数 `slow_query_log = 1` 表示启用慢查询日志。 - 参数 `long_query_time = 0.1` 定义了超过多少秒的 SQL 查询会被记录到慢查询日志中。 - 参数 `slow_query_log_file` 指定了慢查询日志存储的位置和名称。 完成以上更改后,重启 MySQL 服务使配置生效[^2]。 #### 动态调整系统变量的方式 如果不想立即重启数据库实例,可以使用以下命令动态开启慢查询日志设置相关参数: ```sql SET GLOBAL slow_query_log = 'ON'; SET GLOBAL long_query_time = 0.1; SET GLOBAL slow_query_log_file = '/usr/local/mysql/mysql_slow.log'; ``` 这些命令会即时生效而无需重启服务器。需要注意的是,这种方式仅适用于当前运行周期,在下次启动时仍需依赖配置文件中的设定[^3]。 #### 查看慢查询日志的状态 确认慢查询日志是否已成功开启以及其具体配置情况,可执行如下SQL语句: ```sql SHOW VARIABLES LIKE 'slow_query%'; ``` 此操作将返回有关慢查询日志的相关信息,包括它是否被激活(`slow_query_log`)及其对应的文件路径(`slow_query_log_file`)[^1]。 #### 查询慢 SQL 日志的内容 为了查看已经被记录下来的较慢 SQL 请求,可以从表 `mysql.slow_log` 中读取数据: ```sql SELECT CONVERT(sql_text USING utf8) AS sql_text FROM mysql.slow_log; ``` 这条指令能够帮助管理员分析哪些查询消耗时间过长从而优化性能。 ### 注意事项 当定义 `long_query_time` 值的时候,请依据实际需求合理选择数值大小;太低可能会导致大量正常范围内的请求也被标记成“缓慢”,增加不必要的负担;太高则可能遗漏一些潜在问题所在之处。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值