Esto está relacionado con esta pregunta . Ayuda a obtener un mejor rendimiento para las tablas InnoDB.
Según el manual de MySQL , innodb_flush_log_at_trx_commit
es una variable dinámica global. Por lo tanto, puedo cambiarlo usando el comando SET GLOBAL y parece estar funcionando.
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
Pero no modificó la configuración real de MySQL. Cuando actualicé my.cnf y reinicié el servidor MySQL, funcionó. Entonces, ¿no puedo cambiar la variable global en tiempo de ejecución?
Prefiero el valor predeterminado innodb_flush_log_at_trx_commit=1
, pero necesito cambiarlo a 2 antes de ejecutar un proceso de restauración para que una base de datos grande sea más rápida. Pero cuando finalice el proceso, quiero volver a cambiar el valor a 1. ¿Es posible hacer esto en tiempo de ejecución?
No tengo acceso a my.cnf en mi servidor de alojamiento compartido.
SET GLOBAL max_connections = 1000;
y cuando corroSHOW VARIABLES LIKE 'max_connections';
para ver el valor anterior me volvería loco hasta que cierre la sesión y vuelva a iniciarla. +1 para este punto de vista que se da por sentado y a menudo se olvida.