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

#1 19/05/2012 10:38:18

odzoue
Membre

exécution de requêtes multiples

Bonjour,
je travaille avec l'outil pgAdmin 3 de PostgreSQL 9 sous windows 7. J'ai un certain nombre de requêtes dont je voudrais évaluer individuellement les performances à l'aide de la commande  EXPLAIN ANALYZE. Je voudrais savoir comment automatiser(exécuter une seule fois) ce traitement dans une requête unique et retourner les résultats  dans un seul fichier.
merci pour vos réactions.

Hors ligne

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

rjuju
Administrateur

Re : exécution de requêtes multiples

Bonjour,
je ne pense pas que cela soit possible avec pgAdmin. Si vous voulez faire ça je vous conseillerai plutôt de vous tourner vers un script bat utilisant l'outil psql et en redirigeant la sortie standard.
Sinon, pourquoi faire un explain analyze sur un grand nombre de requête ? Si vous voulez optimiser une procédure stockée lançant de nombreuse requête, je vous conseille de jeter un oeil à : http://www.depesz.com/2010/03/18/profil … functions/
Vous pouvez également regarder le module auto_explain : http://docs.postgresqlfr.org/9.1/auto-explain.html

Hors ligne

#3 19/05/2012 12:04:57

odzoue
Membre

Re : exécution de requêtes multiples

Merci pour votre réaction,
En fait je ne voudrais pas faire le EXPLAIN ANALYZE sur un groupe de requetes à la fois. ce que je voudrais c'est exécuter successivement des EXPLAIN ANALYZE sur chacune des requêtes et récolter tous les résultats individuels dans un même fichier. par exemple:

Begin

EXPLAIN ANALYZE query1;
EXPLAIN ANALYZE query2;

End;

dans le fichier resultat je voudrais pouvoir recueillir les statistiques de chaque requête (query1, query2); le but n'est pas vraiment d'optimiser mais juste d'avoir une idée des coûts mais étant donné que ces requêtes prennent trop de temps, je ne peux pas rester devant le serveur pendant toute la durée de leur exécution pour les lancer les unes à la suite des autres.

Hors ligne

#4 19/05/2012 12:33:57

rjuju
Administrateur

Re : exécution de requêtes multiples

J'avais bien compris votre demande sur les explain mais pgAdmin ne peut pas gérer ce genre de chose à ma connaissance.
Vous pouvez par exemple faire un fichier explain.sql :

begin;
explain analyze select ... ;
explain analyze select ... ;
rollback;

Et ensuite faire psql -f c:/.../explain.sql > c:/.../explain.out
et vous aurez vos explain concaténés dans un seul fichier.

Hors ligne

#5 19/05/2012 13:27:17

gleu
Administrateur

Re : exécution de requêtes multiples

Je confirme que pgAdmin ne peut pas gérer ce genre de chose, tout simplement parce que pgAdmin, bien qu'il puisse exécuter plusieurs requêtes à la fois, ne récupère que le dernier flux de résultats. En fait, ce n'est tout simplement pas le bon outil pour ça. Le meilleur outil, comme le dit rjuju, c'est psql.


Guillaume.

Hors ligne

#6 20/05/2012 10:00:29

odzoue
Membre

Re : exécution de requêtes multiples

Merci à tous pour vos réactions. rjuju, ta commande 

 plsql -f fichier.sql > fichier.out 

marche comme du papier à musique sur l'invite de commande windows, j'ai ajouté au préalable le répertoire \bin de postgresql dans le path Windows.
Merci encore à tous

Hors ligne

Pied de page des forums