Назад | Перейти на главную страницу

Postgres: Как я могу увидеть все операторы SQL, выполняемые сервером базы данных?

Я нахожусь в процессе проверки каждого оператора SQL, который приложение делает для базы данных, по соображениям производительности. Есть ли простой способ регистрировать все операторы, выполняемые сервером базы данных PostgreSQL? Спасибо.

Вариант конфигурации, который вы ищете: log_statement = "all" (если вам просто нужны заявления) или log_min_statement_duration = <some number> если вы сразу после "медленных" запросов (для некоторого значения "медленный"). Видеть http://www.postgresql.org/docs/current/static/runtime-config-logging.html для получения дополнительных сведений о настройке журналирования.

В auto_explain модуль очень полезен для этого. Он не только регистрирует операторы, но и записывает их планы выполнения и даже может записывать операторы, выполняемые в функциях PL / PgSQL. Падение производительности будет довольно низким, если вы не включите анализ, и в этом случае вы понесете изрядные накладные расходы по времени для всех запросов.

Видеть auto_explain в документации.

Конечно, вы можете самостоятельно определить самые медленные запросы, но я советую использовать pgFouine - анализатор логов PostgreSQL. Его легко установить и он действительно полезен.

Образцы отчетов: Вот и Вот.