PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 19/02/2012 01:34:39

palex
Membre

Pgfouine

Bonjour
J analyze souvent des requetes pgfouine qui sont remontes comme etant lente, jusqu a 70 secondes pourtant elles sont executes pres de 1000 fois ou plus et la moyenne d execution est correct sauf une 20ene de fois ou les temps sont explose sur la requete. Si je reprend la requete dans pgfouine et la rejoue sur le serveur elle met 200ms ce qui reste correct vu la requete. Ce phenomene ce produit quasiment tout les jours. J aimerais donc que cette requete arrete de sortir dans pgfouine et qu elle s execute tout le temps correctement. mais j ai l impression que le temps affiche dans pgfouine n est pas significatif et que la requete a ete execute et puis peut etre bloque par une autre du coup sont temps d execution va etre long si la requete bloquante ne rend pas la main de suite. Est il possible d isoler ce genre de chose? De savoir si une requete a vraiment mis 70sec a s executer et quel requete la peut etre bloque?

merci

Hors ligne

#2 19/02/2012 11:39:19

gleu
Administrateur

Re : Pgfouine

Est il possible d isoler ce genre de chose?

D'isoler le temps d'exécution par rapport au temps d'attente des verrous ? non. De toute façon, pour l'utilisateur, ça n'a aucun intérêt. Pour lui, la requête a mis ce temps à s'exécuter (ie le temps de planification, le temps de récupération des verrous et le temps d'exécution de la requête).

De savoir si une requete a vraiment mis 70sec a s executer et quel requete la peut etre bloque?

Pour l'utilisateur qui a exécuté la requête, elle a réellement mis 70 secondes à s'exécuter. Si vous pensez que c'est à cause de verrous, vous pouvez configurer log_lock_waits à on pour savoir si des verrous longs (en tout cas plus long que deadlock_timeout) l'ont empêché de s'exécuter. Vous pouvez aussi mettre en place l'extension auto_explain pour qu'un EXPLAIN soit automatiquement exécuté pour les requêtes longues et voir ainsi si le plan change entre le moment où elle s'exécute en 70 secondes et le moment où elle s'exécute en 200ms. Une supervision du système vous dira si le serveur est particulièrement chargé à un moment particulier.


Guillaume.

Hors ligne

#3 19/02/2012 13:11:53

palex
Membre

Re : Pgfouine

Ca marche je vais essayer tout ca demain! Merci beaucoup

Hors ligne

Pied de page des forums