IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration MySQL Discussion :

Activer le "log-queries-not-using-indexes"


Sujet :

Administration MySQL

  1. #1
    Nouveau membre du Club
    Inscrit en
    Octobre 2011
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 26
    Points : 26
    Points
    26
    Par défaut Activer le "log-queries-not-using-indexes"
    Bonjour à tous.

    Je souhaite activer le log : "log-queries-not-using-indexes" afin d'identifier les requêtes n'utilisant pas d'index.

    J'ai rajouté ceci dans le fichier my.cnf :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    [mysqld]
    log-error= /var/log/mysqld.log
    pid-file= /var/run/mysqld/mysqld.pid
    log = mysqld_log.log
    log-slow-queries = /var/log/mysql/mysqld_slow.log
    log-queries-not-using-indexes = Yes
    Est ce de cette façon qu'il faut l'activer ?

    Si oui, et que les requêtes n'utilisant pas d'index sont bien écrites dans le log, comment les reconnaitre dans le fichier mysqld_slow.log parmis les autre requêtes lentes ?

    J'aurai besoin d'un peu aide pour bien comprendre cela, je vous en remercie d'avance.

  2. #2
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 346
    Points : 18 958
    Points
    18 958
    Par défaut
    Salut Chochal.

    Je suis sous Wamp (donc sous windows) et j'utilise MySql 5.7.9.

    Voici un lien expliquant la variable : http://dev.mysql.com/doc/refman/5.7/..._using_indexes
    Pour activer cette variable, il suffit de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    log-queries-not-using-indexes = 1
    Pour vérifier si votre ajout est correcte, il suffit de le tester :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    show global variables like 'log%';
    Pour activer le fichier log_slow, il suffit de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    slow-query-log      = 1
    slow-query-log-file = f:/Wamp/logs/mysql_slow.log
    Comment déclencher (enfin, je devrais plutôt dire alimenter) le fichier 'mysql_slow' ?
    Il faut ajouter la variable suivante qui est dans ce cas-ci initialisé à 10 secondes.
    Donc toutes les requêtes qui durent plus de dix secondes seront signalées dans le fichier 'mysql_slow'.

    Oui, mais voilà, le fichier grossis et devient énorme. Alors comment faire pour ne consever que le ou les derniers tests ?
    Il suffit d'utiliser la variable suivante qui fait office de seuil :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    log_throttle_queries_not_using_indexes = 60
    Ce seuil signifie que l'on stocke par tranche de 60 secondes avant de remettre le fichier à zéro.

    Voici un autre lien donnant un peu plus d'explication : http://dev.mysql.com/doc/refman/5.7/...query-log.html

    Je n'ai pas très bien compris la différence entre les tirets et les soulignés dans les variables.
    Je mets tout avec des tirets et cela semble fonctionner !

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  3. #3
    Nouveau membre du Club
    Inscrit en
    Octobre 2011
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 26
    Points : 26
    Points
    26
    Par défaut
    Salut Artemus et merci.

    Mon log_slow était deja activé et j'avais deja le fichier de log qui se remplit.

    J'ai rajouté la directive "log-queries-not-using-indexes" hier et relancé le serveur, le log_slow continue bien de se remplir mais comment distinguer dans le fichier .log les "simples" requêtes lentes des requêtes qui n'ont pas utilisé d'index ?

    Y'a t'il une indication dans le fichier de log pour différencier les 2 ou bien est ce mélangé ?

    EDIT : Apparemment la facon dont je l'ai déclaré n'est pas correcte (= Yes au lieu de = 1) car quand je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    show global variables like 'log%';
    La valeur de log_queries_not_using_indexes est sur OFF. Il faut donc que je remodifie cette ligne pour que cela soit pris en compte. Malheuresement je ne peux le faire avant ce week end.

    En tout cas un grand merci à toi.

  4. #4
    Nouveau membre du Club
    Inscrit en
    Octobre 2011
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 26
    Points : 26
    Points
    26
    Par défaut
    Bonjour à tous et bonjour Artemus.

    Voila j'ai enfin pu activer ce week end le "log-queries-not-using-indexes".

    Maintenant comment puis je repérer au sein du fichier "mysqld_slow.log" les requêtes n'utilisant pas d'index parmis celles qui sont simplements lentes ?

    Sont elles toutes mélangées ?

    Merci d'avance.

  5. #5
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 346
    Points : 18 958
    Points
    18 958
    Par défaut
    Salut Chocal.

    Oui, elles sont toutes mélangées.

    D'où l'intérêt de mettre un seuil ('long-query-time ') pas trop bas afin de récupérer que ce qui pose problème.

    Je vais être honnête avec toi, je n'utilise pas le 'log-queries-not-using-indexes'.
    Inversement, quand je teste une requête, j'utilise "explain" afin de connaitre les chemins utilisés.
    De même, je teste aussi le temps que met ma requête, hors buffer.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

Discussions similaires

  1. Activation des messages log
    Par lionel84 dans le forum Struts 1
    Réponses: 2
    Dernier message: 19/08/2008, 16h16
  2. USING INDEX TABLESPACE sur des FOREIGN KEY
    Par CaptainCyd dans le forum SQL
    Réponses: 5
    Dernier message: 26/06/2008, 18h26
  3. Error: Could not use '(unknown)';
    Par Identifiant dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 22/01/2008, 22h46
  4. tutoriel : Database.Open-Could not use, file already in use
    Par MARTIN Gérard dans le forum XMLRAD
    Réponses: 2
    Dernier message: 04/05/2005, 12h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo