|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre Expert
![]() ![]() Développeur informatique Inscription : juillet 2007 Messages : 690 ![]() |
Bonjour,
Le site Web de ma boite est down de plus en plus fréquement, a cause de requêtes (des select) qui surchargent, puis bloquent le serveur mysql. C'est vrai que les tables sont assez volumineuses (150 000 lignes pour la table principale) mais ces derniers temps sa devient de plus en plus fréquent et sa me fait pousser des cheveux blancs ! Comment puis je diagnostiquer La cause de cette surcharge (je connais le script qui génère les requêtes problématiques) ?? Merci pour votre aide je suis un peu pérdu sur ce coup Ps : la bd est hébergée chez un fournisseur de service avec une machine dédiée edit : un bon tuto ou un bon outil pour l'analyse des requêtes sous mysql |
|
|
00
|
|
|
#2 |
|
Membre habitué
![]() Inscription : juillet 2002 Messages : 109 ![]() |
Je te conseil de regarder la commande
Code :
> EXPLAIN (TA REQUETE LA PLUS COMPLEXE) http://dev.mysql.com/doc/refman/5.0/fr/explain.html |
|
|
00
|
|
|
#3 |
|
Membre Expert
![]() ![]() Développeur informatique Inscription : juillet 2007 Messages : 690 ![]() |
Merci beaucoup, je vais commencer par ça, mais j'ai tellement peur de loader le serveur avec mes requêtes que je vais d'abord répliquer ma bd en local avant de commencer les analyses.
ps : j'ai trouvé aussi sqlYog qui fait l'analyse de requêtes aussi. a tester |
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() ![]() Développeur informatique Inscription : juillet 2007 Messages : 690 ![]() |
Re bonjour !
Merci pour la commande explain, elle m'a été très utile ! En fait j'ai joint à ce post le résultat du explain de ma requête et je voudrais votre avis sur ce que j'ai fait : Sur la première ligne du explain (qui correspond à une clause de where) je vois dans la colonne extra (voir la piece jointe) : Using temporary; Using filesort...donc pas bon ! ce que j'ai fait : j'ai complétement enlevé la table en question de la requête et je l'ai mise dans une requête indépendante (un simple select sur une table), resultat : la première ligne de mon explain disparait et je me retrouve avec une requête beaucoup plus rapide. Je sais que coté php ce n'est pas une bonne pratique de programmation mais est ce que sa va me jouer des mauvais tours coté mysql ? |
|
|
00
|
|
|
#5 |
|
Membre Expert
![]() ![]() Développeur informatique Inscription : juillet 2007 Messages : 690 ![]() |
J'ajoute ce poste pour dire ce que j'ai fait et cloturer cette discussion
![]() Après de multiples EXPLAIN (merci giltonic !!!) et des tests, j'ai remarqué que ma requête parcourait à chaque enregistrement une table de 4000 lignes pour en récupérer un seul champ ! et la jointure ne se faisait pas sur la clé primaire et pas sur un champ doté d'un index (bonjour la lenteur). J'ai simplement modifié ma bd de tel sorte à ce que à chaque chargement (journalier), le champ en question soit copié dans la table principale. Conceptuellement c'est pas très propre mais le résultat est la : 0.5 secondes en moyennes au lieu de ..... au lieu d'un plantage de serveur à chaque fois Merci beaucoup pour votre aide et longue vie à développez.com |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com