Перейти к основному содержимому

psql_extended_stat. Расширенная статистика активности сессий

В исходном дистрибутиве установлено по умолчанию: да.

Связанные компоненты: pg_stat_activity, Performance Insights.

Схема размещения: pg_catalog.

Сведения

Функциональность доступна только для редакций Enterprise и Enterprise для ERP-систем.

Расширение psql_extended_stat предназначено для расширения системной статистики активности сессий в СУБД Pangolin.

Расширение добавляет представление pg_stat_activity_ext, которое является копией системного представления pg_stat_activity и дополнено полем wait_event_start, содержащим время фиксации начала текущего события ожидания.

Поле используется для оценки длительности текущего ожидания процесса и для вычисления показателей длительности ожиданий в HTML-отчетах Performance Insights.

Доработка

Доработка не проводилась.

Ограничения

Поле wait_event_start может принимать значение NULL, если в момент наблюдения у процесса отсутствует событие ожидания и значение wait_event равно NULL, а также если сбор времени начала ожидания отключен параметром конфигурации monitor_wait_event_start.

Значение wait_event_start фиксирует фактическое время начала текущего события ожидания в рамках статистического среза. Само значение поля не является оценочным и отражает момент начала ожидания, зафиксированный системой.

Оценочный характер имеют показатели длительности ожиданий, используемые в HTML-отчетах Performance Insights, включая минимальное, максимальное и медианное время ожидания. Оценочность обусловлена тем, что статистика для формирования отчетов собирается периодически, а не непрерывно. Между моментами сбора статистики значение wait_event_start может измениться без попадания в отчет, что влияет на точность расчета агрегированных показателей.

Если запрос выполняется без событий ожидания, значение wait_event_start остается NULL даже при включенном сборе времени начала ожиданий.

Для событий ожидания типа Lock возможно расхождение времени начала ожидания, отображаемого в представлениях pg_stat_activity и pg_locks, после истечения времени, заданного параметром deadlock_timeout. Это связано с тем, что по истечении deadlock_timeout ожидание временно снимается системой для выполнения проверки на наличие взаимных блокировок и после завершения проверки устанавливается повторно. В результате для pg_stat_activity такое ожидание фиксируется как новое событие, и значение wait_event_start обновляется, тогда как pg_locks отражает фактическое время первоначального начала ожидания.

Счетчики количества событий ожидания в отчетах Performance Insights основываются на количестве статистических срезов, в которые попали соответствующие события, и не учитывают факт того, что одно и то же событие ожидания может присутствовать в нескольких последовательных срезах.

Установка

Расширение входит в поставку СУБД Pangolin и устанавливается автоматически.

При необходимости расширение можно подключить вручную:

CREATE EXTENSION IF NOT EXISTS psql_extended_stat;

Настройка

Сбор времени начала события ожидания управляется параметром конфигурации monitor_wait_event_start (тип boolean). По умолчанию значение равно off. Для применения требуется перечитать конфигурацию (контекст PGC_SIGHUP).

Пример включения:

ALTER SYSTEM SET monitor_wait_event_start = 'on';
SELECT pg_reload_conf();

Пример выключения:

ALTER SYSTEM SET monitor_wait_event_start = 'off';
SELECT pg_reload_conf();

Использование

Текущее значение параметра, управляющего сбором времени начала события ожидания, определяется командой:

SHOW monitor_wait_event_start;

Для просмотра текущих ожиданий и оценочной длительности ожидания используется расширенное представление активности сессий:

SELECT
pid,
usename,
datname,
wait_event_type,
wait_event,
wait_event_start,
now() - wait_event_start AS wait_duration_estimate,
query
FROM pg_catalog.pg_stat_activity_ext
WHERE wait_event_start IS NOT NULL
ORDER BY wait_event_start
LIMIT 20;

При значении monitor_wait_event_start = off поле wait_event_start присутствует в результатах запросов, но для всех строк имеет значение NULL. При значении monitor_wait_event_start = on поле wait_event_start заполняется ненулевым значением для строк, в которых wait_event не равно NULL.

Поле wait_event_start включается в срезы статистики активности и сохраняется в истории Performance Insights. На его основе при формировании HTML-отчетов аналитики производительности вычисляются оценочные длительности ожиданий: минимальное, максимальное и медианное время (min/max/med) в секциях Top Wait Events, Top SQL with Top Events, Top Sessions, Top Blocking Sessions и Activity Over Time.

Подробное описание использования поля wait_event_start в составе Performance Insights и в HTML-отчетах приведено в документе «Аналитика производительности (Performance Insights)».