Это связано с этим вопросом . Это помогает повысить производительность таблиц InnoDB.
Согласно руководству MySQL , innodb_flush_log_at_trx_commit
это глобальная динамическая переменная. Таким образом, я могу изменить его с помощью команды SET GLOBAL, и это, похоже, работает.
mysql> SET GLOBAL innodb_flush_log_at_trx_commit=2;
Query OK, 0 rows affected
mysql> SHOW VARIABLES LIKE 'innodb_flush_log_at_trx_commit';
+--------------------------------+-------+
| Variable_name | Value |
+--------------------------------+-------+
| innodb_flush_log_at_trx_commit | 2 |
+--------------------------------+-------+
1 row in set
Но это не изменило фактические настройки MySQL. Когда я обновил my.cnf и перезапустил сервер MySQL, он заработал. Итак, я не могу изменить глобальную переменную во время выполнения?
Я предпочитаю значение по умолчанию innodb_flush_log_at_trx_commit=1
, но мне нужно изменить его на 2, прежде чем запустить процесс восстановления для большой базы данных, чтобы ускориться. Но когда процесс завершен, я хочу изменить значение обратно на 1. Возможно ли это сделать во время выполнения?
У меня нет доступа к my.cnf на сервере общего хостинга.
SET GLOBAL max_connections = 1000;
и когда я запускаю,SHOW VARIABLES LIKE 'max_connections';
чтобы увидеть старое значение, приводит к сумасшествию, пока я не выйду из системы и не вернусь обратно. +1 для этой точки зрения, которая считается само собой разумеющейся и часто забываемой.