Come notato da Riedsio, le variabili di sessione non cambiano dopo aver effettuato la connessione, a meno che non le imposti specificamente; l'impostazione della variabile globale modifica solo il valore della sessione della prossima connessione.
Ad esempio, se si dispone di 100 connessioni e si riduce il valore globale wait_timeout
, questo non influirà sulle connessioni esistenti, ma solo su quelle nuove dopo la modifica della variabile.
In particolare per la variabile wait_timeout
, tuttavia, c'è una svolta. Se si utilizza il client mysql
in modalità interattiva, o il connettore con CLIENT_INTERACTIVE
impostato tramite mysql_real_connect()
poi si vedrà il set interactive_timeout
per @@session.wait_timeout
Qui si può vedere questo ha dimostrato:
> ./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)
Quindi, se stai testando questo utilizzando il client, è lo interactive_timeout
che vedrai quando ti connetti e non il valore di wait_timeout
La tua risposta contraddice direttamente l'OP e non affronta la contraddizione. – klaar