Voir les requêtes SQL qui tournent sur le serveur ?

WRInaute discret
Bonjour,

Suite à un problème de performances de mon site, mon hébergeur m'a indiqué que cela provenait d'un nombre trop important de requêtes SQL simultanées (notamment une requête qui mettait à jour des stats à chaque visite d'une page)

Afin de ne plus rencontrer ce problème, j'aimerais savoir s'il existe un outil GRATUIT (en payant je connais TOAD) qui permettre de suivre les requêtes SQL qui s'exécutent à un instant T sur ma base de données MySQL ?

Merci de vos réponses :wink:
 
WRInaute occasionnel
phpMyAdmin le fait, et il fait plein d'autres trucs aussi : il est indispensable en fait :) et gratuit de surcroit :)
 
WRInaute occasionnel
si tu es sur un mutualisé il ya de fortes chances pour que tu ne puisse pas acceder a cette fonctionnalité depuis le phpMyAdmin de ton hebergeur, voir meme depuis un phpMyAdmin perso (sécurité oblige).

sinon c'est sur la page d'accueil de phpMyAdmin, tu as un lien "afficher les process en cours"
 
WRInaute discret
Effectivement j'ai bien ce lien, mais lorsque je clique dessus je ne vois qu'un processus... alors qu'il y a 70 visiteurs sur mon site !

Je suis effectivement sur un serveur mutualisé, peut-être que l'hébergeur a inhibé certaines fonctions pour que l'on ne puisse voir les requêtes qui tournent sur la BDD ? Ca serait dommage car cela peut-être très utile pour détecter un problème ou optimiser un script...
 
WRInaute occasionnel
oui c'est probable qu'il ai viré la fonction dans mysql meme, sinon tu pourrai lire les requetes des autres et vice versa , ça serait bien qu'ils fassent un filtre pour ce genre de fonctions au lieu de faire un systeme on/off .

sinon pour optimiser un base de donnée, c'est souvent une affaire de clés, bien comprendre le concept et adapter au mieux selon les cas donnés.
 
WRInaute occasionnel
spijoelx a dit:
sans passer par phpmyadmin tu as la vraie commande mysql:

SHOW PROCESSLIST

qui affiche les processus mysql en cours d'utilisation avec la requete sql atachée à chacun

http://dev.mysql.com/doc/mysql/fr/SHOW_PROCESSLIST.html

vi mais si la commande sous phpMyAdmin ne retourne rien de concret c'est que le fonction a probablement été bypassée dans mysql même, sinon ça aurait été plus simple de virer le lien dans l'admin , ce qui n'est pas vraiment sécure de toutes façons :)
 
WRInaute discret
J'ai testé la commande suivante :

SHOW FULL PROCESS LIST

Ca me retourne un résultat avec les colonnes suivantes :
Id User Host db Command Time State Info

Command affiche "Query", Time "0" et State "NULL"

Ca ne me donne pas plus d'indications sur les requêtes en cours d'exécution... Je cherche dans la doc que tu as indiqué Spijoelx pour voir s'il ne faut pas ajouter une extension à cette requête pour voir les requêtes SQL lancées ou sortir une log des requêtes exécutée au cours de la dernière heure par exemple...
 
WRInaute discret
oui si ça ne marche pas avec phpmyadmin ça ne marchera pas avec la commande directement, mais c'était pour donner le vrai moyen sans passer par phpmyadmin :)

essaie de voir avec ton hébergeur pour qu'il t'envoie la liste puisque apparemment lui seul peut éxécuter cette commande
 
Nouveau WRInaute
Merci pour cette info.

J'ai regarder sur le serveur et le sql indique une moyenne de 9 requettes / secondes ...

C'est beaucoup ou il y a de la marge ?
 
WRInaute occasionnel
ça va encore, enfin ça depend de la machine et de sa frequentation, mais d'une manière générale il faut une bonne 50aine de process pour commencer a s"inquietter, normalement a 100 le serveur rejette les requette (c parametrable).
 
H
Haq
Guest
Faites du cache !!! Ca économise mysql, votre serveur, et ça permet au visiteur d'avoir des pages qui s'affichent plus vite...

Sur mes sites, même les forums sont en cache...
 
H
Haq
Guest
hervelaf a dit:
Bonjour,

Le fait de mettre les pages en cache, ne peut-il pas poser problème si l'on a des Adsence sur son site ?

Ben non... si tu veux un exemple, le site de mon url est quasiment à 100% en cache (fichiers qui ne sont mis à jour que tous les x jours ou quand le contenu change dans le cas du forum).

Les utilisateurs d'adsense ont d'ailleurs 2 fois plus de raisons de faire du cache: le robot d'adsense visite chaque page qui affiche leur pub, donc ça double quasiment le nombre de requêtes...
 
WRInaute accro
Ouai ba moi le cache de mon-blog.org c'est des dizaines de mega octet ^^ merci pour les sauvegardes, 20 000 30 000 fichiers lol.
 
H
Haq
Guest
JeunZ a dit:
Ouai ba moi le cache de mon-blog.org c'est des dizaines de mega octet ^^ merci pour les sauvegardes, 20 000 30 000 fichiers lol.

Je suppose que tu es sur un serveur dédié... si c'est le cas, ce ne sont pas quelques dizaines de Mo qui doivent te faire peur... par contre, ça soulagerait mysql.
 
H
Haq
Guest
Et puis j'oubliais l'essentiel: tes fichiers de cache tu ne dois pas les sauvegarder, puisque tout est généré depuis ta BDD.

Bref, aucune excuse ;-)
 
WRInaute discret
Pour en revenir à ma question initiale : mon hébergeur m'a confirmé avoir inhibé la fonction qui permet de voir les requêtes SQL qui tournent sur ma base ... Je ne vois pas vraiment l'intérêt ?!?

C'est dommage car très intéressant pour optimiser un site !

L'idée du cache est également très intéressante, reste à voir comment se fait la mise en oeuvre pratique : les modifs sont à faire au niveau de PHP ou du serveur web (Apache) ?
 
H
Haq
Guest
MoiG1smart a dit:
L'idée du cache est également très intéressante, reste à voir comment se fait la mise en oeuvre pratique : les modifs sont à faire au niveau de PHP ou du serveur web (Apache) ?

Rien à modifier si ce n'est ton code php: tu enregistres le code généré dans un fichier texte stocké sur ton serveur.

Par après, un simple
Code:
if( file_exists(cache/fichierx.txt) ) { include (cache/fichierx.txt); }

else { "je fais tous mes calculs et je l'enregistre dans un fichier texte"; };
 

➡️ Offre MyRankingMetrics ⬅️

pré-audit SEO gratuit avec RM Tech (+ avis d'expert)
coaching offert aux clients (avec Olivier Duffez ou Fabien Faceries)

Voir les détails ici

coaching SEO
Discussions similaires
Haut