J'utilise MySQL version 5.1.66. J'ai vu que la variable long_query_time est dynamique, mais quand j'ai essayé
set GLOBAL long_query_time=1;
Après l'opération ci-dessus, j'ai essayé à nouveau
mysql> show variables like 'long_query_time';
+-----------------+-----------+
| Variable_name | Value |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
1 row in set (0.00 sec)
Depuis la console mysql, il ne se modifie pas, pourquoi?
Vous définissez une variable système GLOBAL, mais vous recherchez la variable SESSION. Pour que le paramètre de variable GLOBAL prenne effet pour la session en cours, vous devez vous reconnecter ou définir la variable @@ SESSION.long_query_time. (Notez que SHOW VARIABLES affiche par défaut les variables de session.)
Voici un exemple:
mysql> SHOW SESSION VARIABLES LIKE "long_query_time";
+-----------------+-----------+
| Variable_name | Value |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
mysql> SET @@GLOBAL.long_query_time = 1;
mysql> SHOW GLOBAL VARIABLES LIKE "long_query_time";
+-----------------+----------+
| Variable_name | Value |
+-----------------+----------+
| long_query_time | 1.000000 |
+-----------------+----------+
mysql> SHOW VARIABLES LIKE "long_query_time";
+-----------------+-----------+
| Variable_name | Value |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
La modification d'une valeur de variable système dans mysql (cfr. http://dev.mysql.com/doc/refman/5.1/en/set-statement.html ) ne modifie pas la valeur pour les clients déjà connectés à une session.
La modification durera jusqu'au redémarrage du serveur, les modifications ultérieures ou l'expiration de la session.
veuillez vous référer http://bugs.mysql.com/bug.php?id=38704 pour plus de détails