Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#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
Julien.
https://rjuju.github.io/
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.
Julien.
https://rjuju.github.io/
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
Pages : 1