wait_timeout recommended query modificar cambiar bulk_insert_buffer_size aumentar mysql global-variables session-variables

mysql - recommended - wait_timeout mariadb



MySQL wait_timeout Variable-GLOBAL vs SESSION (3)

Como señaló Riedsio , las variables de la sesión no cambian después de conectarse a menos que las establezca específicamente; establecer la variable global solo cambia el valor de la sesión de su próxima conexión.

Por ejemplo, si tiene 100 conexiones y baja el wait_timeout global, entonces no afectará las conexiones existentes, solo las nuevas después de que la variable haya cambiado.

Específicamente para la variable wait_timeout , hay un giro. Si está utilizando el cliente mysql en el modo interactivo, o el conector con CLIENT_INTERACTIVE configurado a través de mysql_real_connect() entonces verá el juego interactive_timeout establecido para @@session.wait_timeout

Aquí puedes ver esto demostrado:

> ./bin/mysql -Bsse ''select @@session.wait_timeout, @@session.interactive_timeout, @@global.wait_timeout, @@global.interactive_timeout'' 70 60 70 60 > ./bin/mysql -Bsse ''select @@wait_timeout'' 70 > ./bin/mysql Welcome to the MySQL monitor. Commands end with ; or /g. Your MySQL connection id is 11 Server version: 5.7.12-5 MySQL Community Server (GPL) Copyright (c) 2009-2016 Percona LLC and/or its affiliates Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type ''help;'' or ''/h'' for help. Type ''/c'' to clear the current input statement. mysql> select @@wait_timeout; +----------------+ | @@wait_timeout | +----------------+ | 60 | +----------------+ 1 row in set (0.00 sec)

Entonces, si está probando esto usando el cliente, es el wait_timeout que verá al conectarse y no el valor de wait_timeout

SHOW VARIABLES LIKE "%wait%" Result: 28800 SET @@GLOBAL.wait_timeout=300 SHOW GLOBAL VARIABLES LIKE "%wait%" Result: 300 SHOW SESSION VARIABLES LIKE "%wait%" Result:28800

Estoy confundido por los resultados. ¿Por qué la última consulta da Resultado: 28800?


El estado de su sesión se establece una vez que inicia una sesión y, de forma predeterminada, toma el valor GLOBAL actual.

Si desconectó después de SET @@GLOBAL.wait_timeout=300 , luego volvió a conectar, verá

SHOW SESSION VARIABLES LIKE "%wait%"; Result: 300

Del mismo modo, en cualquier momento, si lo hizo

mysql> SET session wait_timeout=300;

Tendrás

mysql> SHOW SESSION VARIABLES LIKE ''wait_timeout''; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | wait_timeout | 300 | +---------------+-------+


SHOW SESSION VARIABLES LIKE "wait_timeout"; -- 28800 SHOW GLOBAL VARIABLES LIKE "wait_timeout"; -- 28800

Al principio, wait_timeout = 28800, que es el valor predeterminado. Para cambiar el valor de la sesión, debe establecer la variable global porque la variable de sesión es de solo lectura.

SET @@GLOBAL.wait_timeout=300

Después de establecer la variable global, la variable de sesión automáticamente toma el valor.

SHOW SESSION VARIABLES LIKE "wait_timeout"; -- 300 SHOW GLOBAL VARIABLES LIKE "wait_timeout"; -- 300

La próxima vez que se reinicie el servidor, las variables de la sesión se establecerán en el valor predeterminado, es decir, 28800.

PD Estoy usando MySQL 5.6.16