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

Shell et commandes GNU Discussion :

[Script] Nombre de requêtes SQl supérieur à 600s


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2012
    Messages : 49
    Par défaut [Script] Nombre de requêtes SQl supérieur à 600s
    Bonjour,

    Etant débutant dans le monde du Shell, je fais appel à vous.

    J'ai un fichier de log qui recenses les requêtes SQL (d'une bdd sur mon serveur) qui prennent plus de 10 secondes d’exécution.
    Dans ce fichier se trouve plusieurs informations sur les requêtes dont la durée d’exécution (en seconde).

    J'ai extrait via la commande ci-dessous les différentes durées de chaque requêtes, mais maintenant je bloque.

    je dois resortir (via un script) le nombre de requêtes mettant plus de 10 minutes à s'executer (soit > 600 secondes).

    La commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cat /var/log/mysql/mysql_slow_queries.log | cut -f2 -d":" | cut -f1 -d"L"
    Celle-ci me donne comme resultat :

    16
    12
    23
    35
    22
    11
    ...

    Se sont les durées de chaque requêtes. Ce qu'il me faut maintenant, c'est connaitre le nombre de requêtes supérieur à 600, mais je vous avoue que je ne sais pas comment comparer chaque colonne à ce chiffre et compter celles supérieurs.

    Merci de votre aide,

    Cdlt,

    Malik.

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Salut,

    En déduction de ta syntaxe avec "cut" essaies ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk 'BEGIN { n=1 } { if ($2 >= 600) n++ } END { print "Total : " n }'  /var/log/mysql/mysql_slow_queries.log
    Si le résultat n'est pas bon, affiches un bout de ton fichier qu'on adapte en fonction...


  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2012
    Messages : 49
    Par défaut
    Le résultat n'est pas bon, elle retourne 260 et je n'est que 75 requêtes dans le fichier de log.

    Voici un morceau du fichier :


    SELECT /*!40001 SQL_NO_CACHE */ * FROM `event_data9942`;
    # Time: 120224 0:19:17
    # User@Host: root[root] @ localhost []
    # Query_time: 12 Lock_time: 0 Rows_sent: 679591 Rows_examined: 679591
    SELECT /*!40001 SQL_NO_CACHE */ * FROM `event_data9943`;
    # Time: 120224 0:19:28
    # User@Host: root[root] @ localhost []
    # Query_time: 11 Lock_time: 0 Rows_sent: 607592 Rows_examined: 607592
    SELECT /*!40001 SQL_NO_CACHE */ * FROM `event_data9944`; /usr/sbin/mysqld, Version: 5.0.68-enterprise-log (MySQL Enterprise Server (Commercial)). started with:
    Tcp port: 0 Unix socket: (null)
    Time Id Command Argument
    # Time: 120224 10:08:28
    # User@Host: sdw[sdw] @ localhost [127.0.0.1]
    # Query_time: 85 Lock_time: 0 Rows_sent: 1 Rows_examined: 43163973
    On y retrouve ici 3 requêtes avec les durées au niveau du champ "Query_time: n"

    Merci beaucoup de votre aide.

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Ok. Essaies donc avec ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk 'BEGIN { n=0 } /Query_time:/ { if ($3 >= 600) n++ } END { print "Total : " n }'
    J'ai rectifié le champ ($3) et matché que les lignes contenant "Query_time:". J'en ai profité pour initialiser le compteur à zéro et non pas à un comme dans mon exemple précédent


  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2012
    Messages : 49
    Par défaut
    Parfait, c'est ce que je voulais

    Merci beaucoup de ton aide

    Malik.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Nombre de requêtes SQL
    Par mozzrigui dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 20/08/2014, 13h06
  2. [AC-2010] Probleme CAST nombre dans requête SQL vers Access
    Par GreatTeacherOnizuka dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 22/07/2014, 14h12
  3. [MySQL] Script php avec requête SQL
    Par Thibault85 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 05/06/2014, 11h01
  4. [PDO] Compter le nombre de requête SQL
    Par CactO_o's dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 12/04/2010, 20h37
  5. Réponses: 4
    Dernier message: 14/11/2006, 19h03

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