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 25/08/2010 11:24:36

Tinaby
Membre

Afficher le temps d'exécution d'une requête

Bonjour,

je voulais savoir s'il était possible d'afficher le temps effectif d'exécution d'une requête (a priori, EXPLAIN se contente d'une approximation en fonction des données qu'il possède concernant la base). Comme il y a de fortes chances que ce ne soit pas le cas directement dans psql , existe-t-il un utilitaire ?

Merci !

Hors ligne

#2 25/08/2010 11:30:22

arthurr
Membre

Re : Afficher le temps d'exécution d'une requête

bonjour,

dans psql : \timing permet de donner le temps d'execution de chaque requete

\timing [on|off]       toggle timing of commands (currently on)

Dernière modification par arthurr (25/08/2010 11:33:00)

Hors ligne

#3 25/08/2010 11:33:32

Marc Cousin
Membre

Re : Afficher le temps d'exécution d'une requête

Exact. Et il y a aussi un mode EXPLAIN ANALYZE, qui permet de mesurer le temps d'exécution de chaque étape du plan.


Marc.

Hors ligne

#4 25/08/2010 11:35:00

Tinaby
Membre

Re : Afficher le temps d'exécution d'une requête

Merci bien !

J'utilise explain analyze de temps en temps, mais comme cela reste un explain, j'ai supposé que c'était également une estimation de chaque étape et non une mesure du temps mis effectivement par la requête.

Dernière modification par Tinaby (25/08/2010 11:37:27)

Hors ligne

#5 25/08/2010 11:51:15

Marc Cousin
Membre

Re : Afficher le temps d'exécution d'une requête

Ce n'est pas le temps exact d'exécution de la requête, parce que l'analyze doit relever très fréquemment l'heure sur la machine pour faire ses mesures. Cela ralentit un peu l'exécution de la requête. L'autre différence, c'est qu'explain analyze ne comptabilise que le temps d'exécution de la requête, alors que \timing comptabilise aussi le temps d'analyse et de planification.


Marc.

Hors ligne

#6 07/09/2010 11:09:30

Tinaby
Membre

Re : Afficher le temps d'exécution d'une requête

Sous SQLPlus (sur ma base oracle), j'utilise "SET timing ON" afin d'obtenir plus ou moins la même chose que \timing sous postgres. Le résultat s'affiche sous la forme HH:MI:SS.FF (heures:minutes:secondes.fractionnal_second) avec une précision du 100ème de seconde.

Je souhaiterais, afin de pouvoir voir quelque chose, obtenir une précision en FF6 (6 chiffres après la virgule) et non FF2. D'après ce que j'ai lu on peut préciser FF1 à FF9, mais je n'arrive pas à trouver comment faire pour le cas du timing : dans un appel à une fonction de transformation ou d'affichage on peut préciser le format directement en argument, ici, on ne peut pas.

Quelqu'un sait-il comment régler ce format pour l'affichage du "timing" ?

Hors ligne

#7 07/09/2010 11:19:43

gleu
Administrateur

Re : Afficher le temps d'exécution d'une requête

Vous parlez du \timing ? il n'y a pas de moyen pour personnaliser la sortie de cette variable spécifique à psql. Ce sera toujours du %.3f ms (donc un flottant affiché avec trois chiffres après la virgule, en millisecondes).


Guillaume.

Hors ligne

#8 07/09/2010 11:22:12

Tinaby
Membre

Re : Afficher le temps d'exécution d'une requête

Le \timing me convient parfaitement, c'est le format sous SQLplus que je souhaite changer.

Hors ligne

#9 07/09/2010 12:09:30

gleu
Administrateur

Re : Afficher le temps d'exécution d'une requête

SQLplus, c'est du Oracle. Il serait donc mieux de demander sur un forum Oracle, non ? smile


Guillaume.

Hors ligne

#10 07/09/2010 13:50:19

Tinaby
Membre

Re : Afficher le temps d'exécution d'une requête

Bah j'ai demandé partout, histoire d'avoir plus de chances de réponse x) Mais pour le moment toujours rien hmm

Hors ligne

#11 07/09/2010 17:04:47

Marc Cousin
Membre

Re : Afficher le temps d'exécution d'une requête

Peut-être que cette date dépend aussi du paramètre nls_date_format ? Vous pouvez toujours essayer de le modifier. Sinon je crains que cela ne soit en dur dans sqlplus. Si vous voulez vraiment des mesures de durées avec Oracle, le plus précis est habituellement obtenu via tkprof, même si c'est pénible à manipuler et à mettre en place.


Marc.

Hors ligne

Pied de page des forums