2

我希望 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包含所有查询。

4

2 回答 2

2
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.
于 2013-10-24T16:19:40.210 回答
1

动态设置这些全局变量的问题在于它不会影响现有会话。

任何现有会话都已@@session.long_query_time设置,不会被@@global.long_query_time.

如果在您进行全局更改后创建了任何新会话,它们将继承新值,因此在这种情况下,您应该看到对新会话的查询,而不是旧会话。

于 2013-10-24T17:51:27.467 回答