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)».