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

Requêtes MySQL Discussion :

MySQL indisponible lors d'une grosse requête


Sujet :

Requêtes MySQL

  1. #1
    Futur Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 6
    Points : 7
    Points
    7
    Par défaut MySQL indisponible lors d'une grosse requête
    Bonjour,

    J'ai besoin d'extraire des données d'une base MySQL pour les intégrer dans une base décisionnelle.

    Lors de l'exécution de la requête, qui dure 8 minutes, le serveur MySQL est complètement injoignable jusqu'à ce qu'il est finis le traitement de la requête.

    J'ai activé le slow_query_log, toutes les requêtes loggées durent entre 0 et 1 secondes (comme le premier exemple) sauf une qui durent anormalement 131 secondes (cf deuxième exemple).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    # Time: 090722 15:36:59
    # User@Host: jiralect[jiralect] @  [10.252.176.126]
    # Query_time: 1  Lock_time: 0  Rows_sent: 8  Rows_examined: 7037

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    # Time: 090722 15:39:11
    # User@Host: jiralect[jiralect] @  [IP]
    # Query_time: 131  Lock_time: 0  Rows_sent: 10481  Rows_examined: 1078564
    Bon, je sais que c'est pas le même nombre de lignes retournées mais c'est complètement anormal qu'ils prennent 131 secondes à parcourir 1 million de lignes.

    La requête contient 21 Outer join, dont un seul va taper une colonne non-indexées. A chacune de ses entrées de cette requête, on exécute 6 petites requêtes imbriquées.

    Quelqu'un a une idée d'où ça peut venir ?

    Merci beaucoup,

    Guireg

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par Guireg Voir le message
    c'est complètement anormal qu'ils prennent 131 secondes à parcourir 1 million de lignes.

    La requête contient 21 Outer join, dont un seul va taper une colonne non-indexées.
    2 minutes et 11 secondes pour 1 millions de lignes avec 21 jointures externes, ça dépend de la puissance du serveur mais ça ne choque pas forcément.

    Il faut examiner le plan d'exécution de la requête pour voir comment sont parcourus les index.

    Pour plus d'infos sur l'indexage, voir le tuto de SQLPro.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

Discussions similaires

  1. Renvoyer des infos lors de l’exécution d'une grosse requête
    Par jimmypage dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 02/10/2012, 05h17
  2. Message d'erreur lors d'une grosse requete
    Par tony8716 dans le forum Développement
    Réponses: 9
    Dernier message: 03/01/2008, 10h34
  3. Extension mysql absente lors d'une exécution CLI
    Par chauss printemp dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 10/12/2007, 14h16
  4. Réponses: 2
    Dernier message: 17/07/2006, 21h24
  5. Réponses: 14
    Dernier message: 17/03/2003, 18h31

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