在线开启慢日志查询
有时候我们会遇到线上突然运行比较慢,需要查看一下是否有慢查询。正常情况配置中是不会打开慢日志查询的,因为这个是消耗性能的,如果线上临时打开,又不能重启数据库,就需要通过命令在线设置。
查询当前慢日志开启状态
mysql> show variables like 'slow_query%';
+---------------------+---------------------------------+
| Variable_name | Value |
+---------------------+---------------------------------+
| slow_query_log | OFF |
| slow_query_log_file | D:\MysqlData\slow.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:\MysqlData\slow.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:\MysqlData\slow1.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:\MysqlData\slow1.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
配置文件会随着数据库的启动而加载,如果修改了配置文件,想要起作用需要重启数据库服务。
版权声明:本文版权归作者所有,如需转载,请标明出处
分类:
MySQL
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏