J'essaie de résoudre un problème que je pense peut être aidé en modifiant la variable Wait_timeOUT dans MySQL (5.1.67) sur ma machine Centos.
Donc, j'ai mis à jour /etc/my.cnf avec la valeur que je veux (180) et redémarrer MySQL, mais maintenant je suis surpris de constater que je reçois des valeurs différentes pour WAIT_TIMEOUT en fonction de la façon dont je l'affiche (voir ci-dessous) :
mysql> show global variables like "%wait%";
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| innodb_lock_wait_timeout | 50 |
| table_lock_wait_timeout | 50 |
| wait_timeout | 180 |
+--------------------------+-------+
3 rows in set (0.00 sec)
mysql> show variables like "%wait%";
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| innodb_lock_wait_timeout | 50 |
| table_lock_wait_timeout | 50 |
| wait_timeout | 28800 |
+--------------------------+-------+
3 rows in set (0.00 sec)
Je suppose que la deuxième requête montre des variables de session, par opposition à des variables mondiales, mais je ne comprends pas pourquoi ils seraient différents, après avoir quitté ma session MySQL, redémarré MySQL, puis connecté. Comment se fait-il qu'ils ne sont pas les mêmes? Et, je suppose, comment je m'assurer que la même valeur (180) est cohérente à travers tout?
Toute suggestion/aide appréciée. Merci.
Le documentation états
Sur le démarrage du fil, la valeur de session wait_timeout est initialisée à partir de la valeur globale wait_timeout ou de la valeur globale interactive_timeout, en fonction du type de client (défini par l'option Client_interactive Connect à MySQL_REAL_Connect ()). Voir aussi interactive_timeout.
Puisque vous vous connectez via la ligne de commande, plutôt qu'un script, il est logique que le client_interactive est utilisé comme option de connexion automatiquement. En tant que tel, le interactive_timeout
La valeur est utilisée, qui correspond à 28800.
Faire la session wait_timeout
valeur soit 180, mettez à jour le interactive_timeout
valeur à 180.
Quant à ce que c'est le cas, je ne peux que spéculer. Cependant, en tant que programmeur, je sais qu'il est plus utile de ne pas avoir à rechercher une valeur lorsque vous vérifiez pour effectuer une certaine action, plutôt que d'avoir à vérifier plusieurs valeurs et que je vérifie toujours toutes ces valeurs chaque fois que je vouloir vérifier quelque chose.
Plus explicitement, dans ce cas, chaque fois que le wait_timeout
La valeur est nécessaire, il est préférable de simplement vérifier cela, plutôt que les deux wait_timeout
et interactive_timeout
. Il aide à garder le code maintenu en ayant la session wait_timeout
être automatiquement initialisé avec la valeur appropriée, puis de vérifier qu'une seule valeur. Pour faire autrement, invitez les erreurs, en défaillant potentiellement de vérifier les deux valeurs à chaque fois que quelque chose doit être fait qui implique ce délai d'attente.