Я хотел бы сравнить некоторые SQL-запросы с моей базой данных PostgreSQL. Можно ли как-то рассчитывать время использования SQL-запросов psql
?
postgresql
benchmark
psql
Jonas
источник
источник
Ответы:
Просто включите время, введя:
\timing
источник
psql
не разрешает эту настройку. Вы можете сделать это с чем-то вроде:psql --o /dev/null <<EOF \timing select 1 EOF
psql -c '\timing' -c 'select 1'
Время можно включить с
\timing
помощью приглашения psql (как уже сказал Калеб).Если у вас 8.4 или выше, вы можете добавить необязательный аргумент включения / выключения для
\timing
, который может быть полезен, если вы хотите иметь возможность установить синхронизацию в .psqlrc - тогда вы можете\timing on
явно установить в сценарии, где в\timing
противном случае обычное переключалось бы это отисточник
Время , которое
\timing
возвращает также включает в себя сетевую задержку, если вы подключаетесь к удаленному серверу.Если вы не хотите этого и не нуждаетесь в выводе запроса тоже, лучше используйте
EXPLAIN ANALYZE
, который выводит план запроса с оценками планировщика плюс фактическое время выполнения.например,
EXPLAIN ANALYZE SELECT foo from bar ;
источник
explain analyze
дает примерно вдвое больше времени, чем я вижу при использовании\timing
, что противоположно тому, что я ожидал, основываясь на комментариях, касающихся задержки в сети. Я подозреваю, что при обычном выполнении накладные расходыanalyze
увеличивают время запроса. Основываясь на документах, я думаю, чтоEXPLAIN (ANALYZE, TIMING OFF) SELECT foo FROM bar
это даст вам более полезную информацию о времени. См. Postgresql.org/docs/9.6/static/sql-explain.html для получения подробной информации.