Компанията пусна едноименното разширение pgsentinel (), добавящо в PostgreSQL представление pg_active_session_history — история на активните сесии (по аналогия с Oracle v$active_session_history).
По същество, това са просто ежесекундни снимки от pg_stat_activity, но има важни моменти:
- Цялата натрупана информация се съхранява само в оперативната памет, а обемът на използваната памет се регулира от броя на последните съхранявани записи.
- Добавя се поле queryid — точно този queryid от разширението pg_stat_statements (необходимо е предварително инсталиране).
- Добавя се поле top_level_query — текстът на заявката, от която е извикана текущата заявка (в случай на използване на pl/pgsql)
Пълен списък на полетата pg_active_session_history:
Column | Type
------------------+--------------------------
ash_time | timestamp with time zone
datid | oid
datname | text
pid | integer
usesysid | oid
usename | text
application_name | text
client_addr | text
client_hostname | text
client_port | integer
backend_start | timestamp with time zone
xact_start | timestamp with time zone
query_start | timestamp with time zone
state_change | timestamp with time zone
wait_event_type | text
wait_event | text
state | text
backend_xid | xid
backend_xmin | xid
top_level_query | text
query | text
queryid | bigint
backend_type | text
Готов пакет за инсталиране все още не е наличен. Предлага се да се свалят изходните файлове и да се събере библиотеката самостоятелно. Предварително е необходимо да се инсталира „devel“-пакет за своя сървър и в променливата PATH да се запише пътя до pg_config. Събираме:
cd pgsentinel/src
, затова потребителите на Windows трябва да инсталират Cygwin или да се справят сами с Visual Studio и библиотеките.
make install
Добавяме параметри в postgres.conf:
shared_preload_libraries = ‘pg_stat_statements,pgsentinel’
track_activity_query_size = 2048
pg_stat_statements.track = all# количество удерживаемых в памяти последних записей
pgsentinel_ash.max_entries = 10000
Презареждаме PostgreSQL и създаваме разширението:
create extension pgsentinel;
Натрупаната информация позволява да се отговори на такива въпроси като:
- На какви очаквания сесиите прекараха най-много време?
- Кои сесии бяха най-активни?
- Кои заявки бяха най-активни?
Получаването на отговори на тези въпроси е възможно, разбира се, със SQL заявки, но е по-удобно да се види визуално на графика, като се избират интересуващите интервали от време. Можете да направите това с помощта на безплатната програма (можете да изтеглите събраните бинарни файлове в раздела ).
При стартиране на PASH-Viewer (от версия 0.4.0 нататък) проверява наличието на представление pg_active_session_history и ако то съществува, зарежда всичката натрупана история от него и продължава да чете новите постъпващи данни, обновявайки графика на всеки 15 секунди.

Източник: habr.com
