Me gustaría comparar algunas consultas SQL contra mi base de datos PostgreSQL. ¿Hay alguna forma en que pueda cronometrar consultas SQL usando psql
?
postgresql
benchmark
psql
Jonas
fuente
fuente
Respuestas:
Simplemente encienda el tiempo ingresando:
\timing
fuente
psql
no permite esta configuración. Puede hacer esto con algo como:psql --o /dev/null <<EOF \timing select 1 EOF
psql -c '\timing' -c 'select 1'
La sincronización se puede activar
\timing
en el indicador de psql (como ya dijo Caleb).Si tiene la versión 8.4 o superior, puede agregar un argumento opcional de encendido / apagado
\timing
, que puede ser útil si desea poder establecer el tiempo en .psqlrc ; luego puede configurarlo\timing on
explícitamente en una secuencia de comandos donde, de\timing
lo contrario, la alternancia sería simple. apagadofuente
El tiempo que
\timing
regresa 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 ;
fuente
explain analyze
tiempos 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 deanalyze
eso se suma al tiempo de consulta. Según los documentos, creo que esoEXPLAIN (ANALYZE, TIMING OFF) SELECT foo FROM bar
le dará más información útil sobre el tiempo. Consulte postgresql.org/docs/9.6/static/sql-explain.html para más detalles.