Según lo observado por Riedsio, las variables de la sesión no cambian después de la conexión 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 global wait_timeout
, entonces no afectará las conexiones existentes, solo las nuevas después de que se haya cambiado la variable.
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
establecido a través de mysql_real_connect()
A continuación podrá ver la interactive_timeout
conjunto de @@session.wait_timeout
Aquí se puede 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)
Por lo tanto, Si está probando esto usando el cliente, es el interactive_timeout
que verá cuando conecte y no el valor de wait_timeout
Su respuesta contradice directamente al OP y usted no aborda la contradicción. – klaar