¿Cómo puedo cronometrar consultas SQL usando psql?


Respuestas:


321

Simplemente encienda el tiempo ingresando:

\timing


1
Desde fuera bash, la opción "-c" de psqlno permite esta configuración. Puede hacer esto con algo como: psql --o /dev/null <<EOF \timing select 1 EOF
3manuek

66
O hazlopsql -c '\timing' -c 'select 1'
cdmckay


12

El tiempo que \timingregresa también incluye la latencia de la red, si se está conectando a un servidor remoto.

Cuando no desee eso y no necesite también la salida de la consulta, mejor uso EXPLAIN ANALYZE, que genera el plan de consulta con las estimaciones del planificador más los tiempos de ejecución reales.

por ejemplo, EXPLAIN ANALYZE SELECT foo from bar ;


1
... el único problema es que no recibe la salida de consulta normal.
dezso

2
Usar explain analyzetiempos de rendimiento que son aproximadamente el doble de lo que veo cuando lo uso \timing, que es lo contrario de lo que esperaría en base a los comentarios aquí con respecto a la latencia de la red. Sospecho que hay una sobrecarga en la ejecución normal de analyzeeso se suma al tiempo de consulta. Según los documentos, creo que eso EXPLAIN (ANALYZE, TIMING OFF) SELECT foo FROM barle dará más información útil sobre el tiempo. Consulte postgresql.org/docs/9.6/static/sql-explain.html para más detalles.
larsks
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.