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:
\timingfuente
psqlno permite esta configuración. Puede hacer esto con algo como:psql --o /dev/null <<EOF \timing select 1 EOFpsql -c '\timing' -c 'select 1'La sincronización se puede activar
\timingen 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 onexplícitamente en una secuencia de comandos donde, de\timinglo contrario, la alternancia sería simple. apagadofuente
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 ;fuente
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 deanalyzeeso se suma al tiempo de consulta. Según los documentos, creo que esoEXPLAIN (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.