Me gustaría comparar algunas consultas SQL contra mi base de datos PostgreSQL. ¿Hay alguna forma en que pueda cronometrar consultas SQL usando psql
?
Me gustaría comparar algunas consultas SQL contra mi base de datos PostgreSQL. ¿Hay alguna forma en que pueda cronometrar consultas SQL usando psql
?
Respuestas:
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. apagado
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 ;
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 de analyze
eso se suma al tiempo de consulta. Según los documentos, creo que eso EXPLAIN (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.