Comment puis-je chronométrer les requêtes SQL avec psql?


Réponses:


321

Il suffit d’allumer le timing en entrant:

\timing


1
A partir de bash, l'option "-c" de psqln'autorise pas ce réglage. Vous pouvez le faire avec quelque chose comme: psql --o /dev/null <<EOF \timing select 1 EOF
3manuek

6
Ou fairepsql -c '\timing' -c 'select 1'
cdmckay


12

L'heure qui \timingrevient inclut également la latence du réseau, si vous vous connectez à un serveur distant.

Si vous ne le souhaitez pas et que vous n'avez pas besoin de la sortie de la requête, utilisez plutôt EXPLAIN ANALYZEle plan de requête avec les estimations du planificateur plus les temps d'exécution réels.

par exemple, EXPLAIN ANALYZE SELECT foo from bar ;


1
... le seul problème est que vous ne recevez pas la sortie de requête normale.
dezso

2
Utiliser des explain analyzetemps de rendement environ deux fois plus élevés que ce que je vois lors de l’utilisation \timing, ce qui est l’inverse de ce que j’attendais en me basant sur les commentaires formulés ici concernant la latence du réseau. Je soupçonne qu'il y a une surcharge dans l'exécution normale analyzequi ajoute au temps de requête. Sur la base de la documentation, je pense que EXPLAIN (ANALYZE, TIMING OFF) SELECT foo FROM barcela vous donnera des informations de chronométrage plus utiles. Voir postgresql.org/docs/9.6/static/sql-explain.html pour plus de détails.
larsks
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.