Dies hängt mit dieser Frage zusammen . Es hilft, eine bessere Leistung für InnoDB-Tabellen zu erzielen.
Laut MySQL - Handbuch , innodb_flush_log_at_trx_commit
ist eine globale dynamische Variable. Daher kann ich es mit dem Befehl SET GLOBAL ändern und es scheint zu funktionieren.
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
Die tatsächliche MySQL-Einstellung wurde jedoch nicht geändert. Als ich my.cnf aktualisiert und den MySQL-Server neu gestartet habe, hat es funktioniert. Ich kann die globale Variable also zur Laufzeit nicht ändern.
Ich bevorzuge den Standardwert innodb_flush_log_at_trx_commit=1
, muss ihn jedoch auf 2 ändern, bevor ich einen Wiederherstellungsprozess ausführe, damit eine große Datenbank schneller wird. Aber wenn der Vorgang abgeschlossen ist, möchte ich den Wert wieder auf 1 ändern. Ist dies zur Laufzeit möglich?
Ich habe auf meinem gemeinsam genutzten Hosting-Server keinen Zugriff auf my.cnf .
SET GLOBAL max_connections = 1000;
und wenn ichSHOW VARIABLES LIKE 'max_connections';
den alten Wert sehe , oft zu verrückten Nüssen führt, bis ich mich abmelde und wieder anmelde . +1 für diesen Standpunkt, der für selbstverständlich gehalten und oft vergessen wird.