J'ai remarqué que, dans Mysql, lors de l'activation de log_queries_not_using_indexes
, slow_query_log
et long_query_time
, le fichier journal des requêtes lentes généré contiendra beaucoup de requêtes même si le temps de requête est bien inférieur à long_query_time
.
Il semble qu'une fois que le log_queries_not_using_indexes
est activé, Mysql enregistrera toutes les requêtes qui n'utilisent pas d'index quel que soit le "long_query_time".
Y a-t-il un moyen de surmonter cela? Je veux dire, existe-t-il un moyen de consigner toutes les requêtes qui prennent plus de temps que long_query_time
, qu'ils utilisent ou non des index?
C'est un comportement attendu. Reportez-vous à la documentation en ligne, mais en résumé:
long_query_time
est le seuil de temps d'exécution de la requête au-delà duquel il est enregistré. Toutes les requêtes prenant plus de temps que le seuil sont enregistrées, qu'elles utilisent ou non un index.
log_queries_not_using_indexes
indique à MySQL de consigner en outre toutes les requêtes qui n'utilisent pas d'index pour limiter le nombre de lignes analysées. La journalisation de cette condition se produit indépendamment du temps d'exécution.
J'espère que cela explique ce que vous voyez. Il semble que vous vouliez probablement simplement long_query_time
et pas log_queries_not_using_indexes
si votre objectif est de capturer uniquement les requêtes qui prennent plus de temps qu'un certain seuil.
Liens vers les documents: http://dev.mysql.com/doc/refman/5.5/en/server-options.html#option_mysqld_log-queries-not-using-indexes
http://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html#sysvar_long_query_time