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

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

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

решение1

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

решение2

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

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

решение3

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

Примеры отчетов:здесьиздесь.

Связанный контент