Jest to związane z tym pytaniem . Pomaga uzyskać lepszą wydajność dla tabel InnoDB.
Według instrukcji MySQL , innodb_flush_log_at_trx_commit
to zmienna globalna dynamiczny. Dlatego mogę to zmienić za pomocą polecenia SET GLOBAL i wydaje się, że działa.
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
Ale nie zmieniło to faktycznego ustawienia MySQL. Kiedy zaktualizowałem my.cnf i zrestartowałem serwer MySQL, zadziałało. Więc nie mogę zmienić globalnej zmiennej w czasie wykonywania?
Wolę wartość domyślną innodb_flush_log_at_trx_commit=1
, ale muszę ją zmienić na 2, zanim uruchomię proces przywracania dużej bazy danych, aby przyspieszyć. Ale gdy proces się zakończy, chcę zmienić wartość z powrotem na 1. Czy można to zrobić w czasie wykonywania?
Nie mam dostępu do pliku my.cnf na moim udostępnionym serwerze hostingowym.
SET GLOBAL max_connections = 1000;
kiedy biegnę,SHOW VARIABLES LIKE 'max_connections';
aby zobaczyć starą wartość, doprowadzałaby do szału, aż wyloguję się i wrócę. +1 za ten punkt widzenia, który jest oczywisty i często zapominany.