Подтвердить что ты не робот

Время выполнения запроса Postgres

В интерфейсе командной строки MySQL, когда вы выполняете запрос, он расскажет вам, как долго запрос выполнялся после распечатки результатов.

В интерфейсе командной строки Postgres (psql) он не сообщает вам. Я знаю, как настроить ведение журнала, чтобы я мог получать информацию из журналов, но было бы удобнее, если бы она печаталась на стандартный вывод, как в MySQL.

Можно ли это сделать?

4b9b3361

Ответ 1

Используйте \timing, как объясняется "Как я могу запросить SQL-запросы с помощью psql?" .

См. также руководство для psql.

Если вы хотите время выполнения на стороне сервера, которое не включает время передачи результата клиенту, вы можете установить log_min_duration_statement = 0 в конфигурации, а затем SET client_min_messages = log, чтобы получить информацию о журнале в консоли.

Вы также можете использовать EXPLAIN ANALYZE для получения подробных таймингов выполнения. Для этого есть некоторые временные накладные расходы, если вы не используете EXPLAIN (ANALYZE TRUE, TIMING FALSE), который находится только в более новых версиях, и отключает подробное время, чтобы предоставить вместо него только время выполнения.

PgBadger, особенно в сочетании с модулем auto_explain, может предоставить полезную статистику агрегата из анализа журнала.

Наконец, там pg_stat_statements, который может собирать удобную сводную информацию о текущей системе.

Ответ 2

Я думаю, это может быть полезно для вас.

Синтаксис:

EXPLAIN ANALYSE query;

Пример

EXPLAIN ANALYSE SELECT *FROM demotable;

выход:

"Seq Scan on demotable  (cost=0.00..12.10 rows=210 width=356) (actual time=0.020..0.021 rows=8 loops=1)"
"Planning time: 18.477 ms"
"Execution time: 0.042 ms"