我希望 MySQL 将所有查询视为慢查询并将它们记录到表中。
MySQL 版本是 5.1.69。我做了以下事情:
set global log_output = "TABLE";
set global log_slow_queries = 1;
set global long_query_time = 0;
mysql.slow_log
但是,尽管已执行查询,但该表是空的。为什么?general_log 也已启用并mysql.general_log
包含所有查询。
我希望 MySQL 将所有查询视为慢查询并将它们记录到表中。
MySQL 版本是 5.1.69。我做了以下事情:
set global log_output = "TABLE";
set global log_slow_queries = 1;
set global long_query_time = 0;
mysql.slow_log
但是,尽管已执行查询,但该表是空的。为什么?general_log 也已启用并mysql.general_log
包含所有查询。
Did you restart the server after updating the `my.cnf` file?
Please issue:
SELECT @@global.general_log;
SELECT @@global.general_log_file;
SELECT @@global.log_output;
These are the de-facto variables as the server sees them.
You may change tgem dynamically as follows:
SET GLOBAL general_log:=1;
SET GLOBAL log_output := 'FILE';
Also, as last resort, try:
FLUSH LOGS;
to close+reopen log file descriptor.
动态设置这些全局变量的问题在于它不会影响现有会话。
任何现有会话都已@@session.long_query_time
设置,不会被@@global.long_query_time
.
如果在您进行全局更改后创建了任何新会话,它们将继承新值,因此在这种情况下,您应该看到对新会话的查询,而不是旧会话。