Debe observar qué valores predeterminados existen para los tiempos de espera:
mysql> show variables like '%timeout';
+----------------------------+-------+
| Variable_name | Value |
+----------------------------+-------+
| connect_timeout | 10 |
| delayed_insert_timeout | 300 |
| innodb_lock_wait_timeout | 50 |
| innodb_rollback_on_timeout | OFF |
| interactive_timeout | 60 |
| net_read_timeout | 30 |
| net_write_timeout | 60 |
| slave_net_timeout | 3600 |
| table_lock_wait_timeout | 50 |
| wait_timeout | 60 |
+----------------------------+-------+
10 rows in set (0.00 sec)
Por lo general, miro varias variables de tiempo de espera. Esto es muy imprescindible si utiliza MySQL de forma remota desde MySQL Workbench, cliente mysql o aplicación PHP en un servidor de aplicaciones que se pone en contacto con MySQL en un servidor DB.
Esto es lo que dice la documentación de MySQL una de estas configuraciones:
- wait_timeout (Predeterminado 28800 [8 horas]): el número de segundos que el servidor espera actividad en una conexión no interactiva antes de cerrarla. Este tiempo de espera se aplica solo a las conexiones de archivos de socket TCP / IP y Unix, no a las conexiones realizadas mediante canalizaciones con nombre o memoria compartida. En el inicio del subproceso, el valor de la sesión wait_timeout se inicializa a partir del valor global wait_timeout o del valor global interactive_timeout, según el tipo de cliente (según lo definido por la opción de conexión CLIENT_INTERACTIVE a mysql_real_connect ()). Ver también interactive_timeout.
- interactive_timeout (Predeterminado 28800 [8 horas]): la cantidad de segundos que el servidor espera actividad en una conexión interactiva antes de cerrarla. Un cliente interactivo se define como un cliente que usa la opción CLIENT_INTERACTIVE para mysql_real_connect (). Ver también wait_timeout.
- net_read_timeout (Predeterminado 30): el número de segundos para esperar más datos de una conexión antes de cancelar la lectura. Cuando el servidor está leyendo desde el cliente, net_read_timeout es el valor de tiempo de espera que controla cuándo abortar. Cuando el servidor escribe al cliente, net_write_timeout es el valor de tiempo de espera que controla cuándo abortar. Ver también slave_net_timeout.
- net_write_timeout (Predeterminado 60): El número de segundos para esperar a que se escriba un bloque en una conexión antes de cancelar la escritura. Ver también net_read_timeout.
Asegúrese de que estos tiempos de espera estén configurados lo suficientemente alto como para dar cabida a las consultas que pueden ejecutarse durante mucho tiempo, que pueden incluir:
- Masa
UPDATEs
- Masa
DELETEs
ENABLE KEYS
en un gran MyISAM
Para lidiar con las consultas que siguen ejecutándose después de perder el contacto, debe ejecutar KILL contra el ID de proceso de la consulta de ejecución prolongada. Incluso con el comando KILL, tendrá que esperar cualquier consulta que esté en medio de pasos intensivos en disco o que tenga mutexes internos en progreso.