pg_query_state. Мониторинг состояния запросов в реальном времени
Версия: 1.0
В исходном дистрибутиве установлено по умолчанию: нет.
Связанные компоненты: отсутствуют.
Схема размещения:
ext.
Расширение pg_query_state предоставляет механизм наблюдения за текущим состоянием выполняющихся SQL-запросов в реальном времени.
В отличие от команды EXPLAIN ANALYZE, которая показывает план и статистику только после завершения запроса, pg_query_state предоставляет вариант просмотра активного состояния плана, включая вложенные вызовы и параллельные процессы.
Описание функциональности
pg_query_state возвращает одну или несколько строк, отражающих текущее состояние выполнения запроса в процессе СУБД.
pg_query_state возвращает результат в виде таблицы:
Поле | Тип | Описание |
|---|---|---|
|
| Идентификатор бэкенд-процесса |
|
| Уровень вложенности (0 – основной запрос, >0 – вложенные операции, например вызовы внутри функций) |
|
| Текст текущего SQL-запроса (маскируется согласно |
|
| Текущее состояние плана выполнения |
|
| Идентификатор ведущего процесса для параллельного запроса, |
Построение данных отражает дерево выполнения запроса:
- основной процесс (
leader_pid = NULL); - его рабочие процессы, связанные по
leader_pid; - вложенные запросы, вызванные функциями.
Аргументы функции (все необязательные):
pg_query_state(
verbose boolean DEFAULT false,
costs boolean DEFAULT false,
timing boolean DEFAULT false,
buffers boolean DEFAULT false,
triggers boolean DEFAULT false,
format text DEFAULT 'text'
)
verbose– вывод расширенных деталей плана;costs– отображение стоимостей;timing– отображение времени выполнения узлов;buffers– статистика использования буферов;triggers– статистика по триггерам;format– формат вывода (text,xml,json,yaml).
Ограничения
- Если процесс не исполняет запрос (state =
idle), отображаются данные изpg_stat_activity. - Запуск функции разрешен только суперпользователям или владельцам бэкенд-процесса.
- При отсутствии доступа возвращается сообщение
permission denied.
Установка
Установка расширения может быть произведена в процессе развертывания СУБД СУБД Pangolin при использовании настроек по умолчанию (смотрите документ «Руководство по установке», раздел «Автоматизированная установка при помощи Ansible-скриптов»). При необходимости расширение можно включить вручную.
Для установки pg_query_state вручную, выполните следующие действия.
-
Добавьте имя библиотеки в параметр
shared_preload_librariesв конфигурационном файлеpostgresql.confкластера:shared_preload_libraries = 'pg_query_state'Если параметр уже содержит другие библиотеки, добавьте
pg_query_stateчерез запятую, например:shared_preload_libraries = 'pg_stat_statements, pg_query_state' -
Перезапустите сервер баз данных, чтобы изменения вступили в силу.
-
Создайте расширение
pg_query_stateв каждой базе данных, где планируется его использовать. Рекомендуем размещать объекты в схемеext:CREATE EXTENSION IF NOT EXISTS pg_query_state
WITH SCHEMA ext; -
Для обновления версии расширения выполните:
ALTER EXTENSION pg_query_state UPDATE;
Настройка
Не требуется.
Ссылки на документацию разработчика
Дополнительно поставляемый модуль pg_query_state: https://github.com/postgrespro/pg_query_state?tab=readme-ov-file.