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 04/12/2015 14:39:40

mortimer.pw
Membre

Tracer appel fonction retournant curseur

Bonjour,
Je travaille avec un moteur 9.3.2 sous Cent-OS 6.5.
J'ai des procédures stockées qui renvoie des curseurs.
J'avais paramétré LOG_MIN_DURATION_STATEMENT à 0 pour tracer les durées de toutes les instructions. Ainsi je voyais :
     2015-12-03 07:34:39 CET [28722]: [3331-1] user=toto 127.0.0.1 2015-12-02 10:39:53 CET LOG:  duration: 25.174 ms  statement: select monschema.maprocedure('FR', 'LENS', '40054',30) as data
     2015-12-03 07:34:39 CET [28722]: [3332-1] user=toto 127.0.0.1 2015-12-02 10:39:53 CET LOG:  duration: 162.360 ms  statement: fetch all in "<unnamed portal 959>"
J'ai aujourd'hui, paramétré LOG_MIN_DURATION_STATEMENT à 100, pour réduire le volume des traces.
Problème, je ne vois plus les appels aux procédures stockées, mais uniquement la durée "du retour du curseur" s'il est supérieur à 100ms :
     2015-12-04 10:30:20 CET [26419]: [18068-1] user=toto 127.0.0.1 2015-11-29 06:33:12 CET LOG:  duration: 366.774 ms  statement: fetch all in "<unnamed portal 5359>"
De ce fait, je ne sais plus quel appel à quelle procédure stockée est "long".
Y-a-t'il un moyen de retrouver cette information sans réactiver la trace de toutes les instructions ?
D'avance merci.

Hors ligne

#2 04/12/2015 15:19:15

gleu
Administrateur

Re : Tracer appel fonction retournant curseur

Non, il faut réactiver la trace de toutes les requêtes.


Guillaume.

Hors ligne

#3 04/12/2015 15:24:54

mortimer.pw
Membre

Re : Tracer appel fonction retournant curseur

Bonjour Guillaume,

J'avais pensé mettre LOG_MIN_MESSAGE à NOTICE et mettre un RAISE NOTICE 'select monschema.maprocedure(%,%,%,%)',$1,$2,$3,$4; avant le RETURN de mes procédures stockées.
C'est une petite "bidouille" mais pourquoi pas ?

Hors ligne

#4 04/12/2015 15:56:47

Marc Cousin
Membre

Re : Tracer appel fonction retournant curseur

J'ai tendance à préférer utiliser auto_explain dans ce genre de contexte… ça permet non seulement de tracer la fonction, mais surtout la sous-requête qui merdoie dedans… et les paramètres. (positionner auto_explain.log_min_duration, log_nested_statements).


Marc.

Hors ligne

Pied de page des forums