【mysql】开启慢查询日志

本文介绍了解决MySQL慢查询日志无法生成的问题,并详细记录了开启慢查询日志的具体步骤,包括配置文件的修改、文件权限设置等。同时推荐了两个用于分析慢查询日志的有效工具。
      虽然操作简单,由于一开始没注意到mysql对文件的读写权限问题,结果发现虽然修改了配置文件my.cnf并开启了慢查询,但是实际上该日志文件总是没有创建;打开mysql的error.log,提示could not use 'slowquery.log'。
    后来把权限问题改好,终于可以打印慢查询日志了。为免重蹈覆辙,以下记录开启慢查询日志的步骤:

   (1)修改/etc/mysql/my.cnf,在[mysqld]后加上如下两行代码:
           
    这样当查询耗时超过3秒时,会记录到slowquery.log中。

   (2)确保mysql对slowquery.log本件本身及所在的路径有读写权限。由于/var/log本来为error.log所在的路径,mysql具有读写权限,因此当日志文件不存在时mysql会自动创建。
    如果是其它路径,可通过chown修改文件的属性,通过chmod修改文件的读写权限等等。    

   (3) 对于分析慢查询日志,一般情况下用mysql自带的mysqldumpslow已经足够,使用可参考这个: http://www.ccvita.com/410.html
    另外一个慢查询分析工具mysqlsla也不错,功能较齐全,参数设定也较简单易用,可参考这个: http://my.oschina.net/alexwu/blog/71058

### 如何在 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、付费专栏及课程。

余额充值