25.06.2025

Расширение pg_wait_sampling

Для расследования проблем производительности в СУБД PostgreSQL, начиная с версий

• PostgreSQL 17.5-3.1C

• PostgreSQL 16.9-16.1C

• PostgreSQL 17.4-10.1C

• PostgreSQL 16.8-40.1C

было добавлено расширение pg_wait_sampling.

 

Установка

 
Для установки расширения pg_wait_sampling необходимо его добавить в переменную shared_preload_libraries в postgresql.conf
shared_preload_libraries = 'pg_wait_sampling'

Далее в базе выполнить 

CREATE EXTENSION pg_wait_sampling;

и перезапустить сервер PostgreSQL.

 

Возможности

 

После запуска сервера будут доступны дополнительные представления:

  

Примеры использования

 

1) Увидеть все текущие ожидания в представлении pg_wait_sampling_current:

Копировать в буфер обмена

SELECT * FROM pg_wait_sampling_current;

2) Отфильтровать представление по одному процессу можно функцией pg_wait_sampling_get_current(), передав ей идентификатор интересующего процесса:

Копировать в буфер обмена

SELECT * FROM pg_wait_sampling_get_current(pid);

3) Для анализа динамики недавних ожиданий, нужно обратиться к представлению pg_wait_sampling_history, показывающему историю ожиданий для последних процессов:

Копировать в буфер обмена

SELECT * FROM pg_wait_sampling_history;

4) Для отслеживания ожиданий в базе данных в течение длительного времени используется представление pg_wait_sampling_profile:

Копировать в буфер обмена

SELECT * FROM pg_wait_sampling_profile;

5) Так как статистика по ожиданиям находится в ОЗУ, важно очищать профиль со статистикой время от времени во избежание переполнения памяти.

Копировать в буфер обмена

pg_wait_sampling_reset_profile();