我已经通过慢速查询日志跟踪了一些有关慢速查询的教程。
为了测试目的,我尝试将long_query_time更改为值1,但无论我做什么,只有在达到默认时间10时,查询才会进入日志。
我试过了:
set @@GLOBAL.long_query_time = 1;
set global long_query_time = 1;
使用以下任一命令时:
show variables like '%long%';
show global variables like '%long%';
我得到变量已更改的结果。
我运行完全相同的查询,只需添加更多LEFT JOIN
个条目以使其运行更长时间。每当查询运行10秒或更长时间时,它都会被记录,但是当它运行得不到时,它不会显示在日志中,即使我的所有变量看起来都说它们已被更改。
我以root身份登录MySQL,因为我做了这些更改。
我重新启动了Apache和MySQL,仍然没有骰子。
我的版本信息是:
服务器版本:5.1.63-log SUSE MySQL RPM
当我查询会话和全局变量时(我都试过),我得到了这个:
mysql> show variables like '%long%';
+--------------------+----------+
| Variable_name | Value |
+--------------------+----------+
| long_query_time | 1.000000 |
| max_long_data_size | 1048576 |
+--------------------+----------+
2 rows in set (0.00 sec)
mysql> show global variables like '%long%';
+--------------------+----------+
| Variable_name | Value |
+--------------------+----------+
| long_query_time | 1.000000 |
| max_long_data_size | 1048576 |
+--------------------+----------+
2 rows in set (0.00 sec)
一般日志记录功能显然已启用,并且会重定向到TABLE
,否则我根本不会在日志中输入任何条目。
如果开启设置log_queries_not_using_indexes
,即使不执行1秒钟,也会开始记录每个查询。
我错过了什么?
谢谢!
答案 0 :(得分:0)
以下配置将MySQL转换为记录执行时间超过半秒的查询:
slow_query_log = 1
long_query_time = 0.5
log-slow-queries = /var/log/mysql/log-slow-queries.log
log_queries_not_using_indexes = 0