Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Outils
Outils Forum d'entraide sur les outils pour MySQL. Avant de poster -> Outils MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/09/2007, 21h30   #1
Membre Expert
 
Développeur informatique
Inscription : juillet 2007
Messages : 690
Détails du profil
Informations personnelles :
Âge : 28
Localisation : Canada

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : juillet 2007
Messages : 690
Points : 1 558
Points : 1 558
Par défaut Serveur surchargé - perdu pour trouver la cause

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
ygrim est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2007, 21h49   #2
Membre habitué
 
Avatar de giltonic
 
Inscription : juillet 2002
Messages : 109
Détails du profil
Informations personnelles :
Âge : 38

Informations forums :
Inscription : juillet 2002
Messages : 109
Points : 124
Points : 124
Je te conseil de regarder la commande

Code :
> EXPLAIN (TA REQUETE LA PLUS COMPLEXE)
Il y a des docs bien faites pour t'expliquer comment utiliser les index

http://dev.mysql.com/doc/refman/5.0/fr/explain.html
giltonic est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2007, 22h06   #3
Membre Expert
 
Développeur informatique
Inscription : juillet 2007
Messages : 690
Détails du profil
Informations personnelles :
Âge : 28
Localisation : Canada

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : juillet 2007
Messages : 690
Points : 1 558
Points : 1 558
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
ygrim est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/09/2007, 15h35   #4
Membre Expert
 
Développeur informatique
Inscription : juillet 2007
Messages : 690
Détails du profil
Informations personnelles :
Âge : 28
Localisation : Canada

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : juillet 2007
Messages : 690
Points : 1 558
Points : 1 558
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 ?
Fichiers attachés
Type de fichier : html explain.html (2,7 Ko, 12 affichages)
ygrim est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2007, 15h20   #5
Membre Expert
 
Développeur informatique
Inscription : juillet 2007
Messages : 690
Détails du profil
Informations personnelles :
Âge : 28
Localisation : Canada

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : juillet 2007
Messages : 690
Points : 1 558
Points : 1 558
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
ygrim est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h32.


 
 
 
 
Partenaires

Hébergement Web