MySQL开启慢查询日志

开启慢查询日志(查询sql执行超过一秒以上sql的写入日志)

这一般适应于小的项目、项目未上线或者紧急情况下采用这种方式,一旦开启慢日志查询会增加数据库的压力。需定期清除日志。

说明:

slow_query_log 慢查询开启状态,ON开启,OFF关闭
slow_query_log_file 慢查询日志存放的位置(这个目录需要MySQL的运行帐号的可写权限,一般设置为MySQL的数据存放目录)
long_query_time 查询超过多少秒才记录。

开启慢日志版本要高,低版本无法支持,我使用的版本是:5.6

登录MySQL: mysql -u root -p

mysql> show databases;
mysql> use test;   //指定一个数据库

mysql> show variables like 'slow_query%';

+---------------------+------------------------------+
| Variable_name       | Value                        |
+---------------------+------------------------------+
| slow_query_log      | OFF                          |
| slow_query_log_file | /home/wwwlogs/mysql-slow.log |
+---------------------+------------------------------+

mysql> show variables like 'long_query_time';

+-----------------+----------+
| Variable_name   | Value    |
+-----------------+----------+
| long_query_time | 10.000000 |
+-----------------+----------+

设置慢查询日志

方法1:全局变量设置(该方式数据库重启全部失效,重启后得重新配置)
将 slow_query_log 全局变量设置为“ON”状态

mysql> set global slow_query_log='ON'; 
设置慢查询日志存放的位置

mysql> set global slow_query_log_file='/home/wwwlogs/mysql-slow.log '; 
设置查询超过1秒就记录(如果有时候用命令不起作用,那么可以关闭再打开)

mysql> set global long_query_time=1;

方法2:配置文件设置(服务器重启不影响)
修改配置文件my.cnf,在[mysqld]下的下方加入

slow_query_log=on
slow_query_log_file = /tmp/mysql-slow.log
long_query_time = 1

重启MySQL服务

systemctl restart mysql

或者service mysqld restart

 

如果log目录不是mysql用户权限,将无法生成日志文件,mysql用户无权写入数据。

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

余额充值