Подтвердить что ты не робот

Почему я не мог изменить переменную long_query_time во время выполнения

Я использую MySQL версии 5.1.66. Я видел, что переменная long_query_time является динамической, но когда я попытался

set GLOBAL long_query_time=1; 

После этой операции снова я попробовал

mysql> show variables like 'long_query_time';
+-----------------+-----------+
| Variable_name   | Value     |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
1 row in set (0.00 sec)

Из консоли mysql он не изменяется, почему?

4b9b3361

Ответ 1

Вы устанавливаете системную переменную GLOBAL, но вы запрашиваете переменную SESSION. Чтобы значение переменной GLOBAL вступила в силу для текущего сеанса, вам нужно повторно подключиться или установить переменную @@SESSION.long_query_time. (Обратите внимание, что SHOW VARIABLES по умолчанию показывает переменные сеанса.)

Вот пример:

mysql> SHOW SESSION VARIABLES LIKE "long_query_time";
+-----------------+-----------+
| Variable_name   | Value     |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+

mysql> SET @@GLOBAL.long_query_time = 1;

mysql> SHOW GLOBAL VARIABLES LIKE "long_query_time";
+-----------------+----------+
| Variable_name   | Value    |
+-----------------+----------+
| long_query_time | 1.000000 |
+-----------------+----------+

mysql> SHOW VARIABLES LIKE "long_query_time";
+-----------------+-----------+
| Variable_name   | Value     |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+

Ответ 2

Изменение значения системной переменной в mysql (cfr. http://dev.mysql.com/doc/refman/5.1/en/set-statement.html) не изменяет значение для клиентов, уже подключенных к сеансу.

Изменение будет продолжаться до перезагрузки сервера, последующих изменений или истечения срока действия сеанса.

обратитесь к http://bugs.mysql.com/bug.php?id=38704 для получения более подробной информации