Virksomheden udgav en tilsvarende udvidelse pgsentinel (), som tilføjer visningen pg_active_session_history til PostgreSQL — historik over aktive sessioner (på samme måde som Oracle's v$active_session_history).
I bund og grund er det blot sekvensfotos fra pg_stat_activity, men der er vigtige detaljer:
- Al den indsamlede information opbevares kun i RAM, og den forbrugte hukommelsesmængde reguleres af antallet af de seneste gemte poster.
- Et felt queryid tilføjes — den samme queryid fra udvidelsen pg_stat_statements (kræver installation på forhånd).
- Et felt top_level_query tilføjes — teksten fra forespørgslen, der kaldte den aktuelle forespørgsel (i tilfælde af brug af pl/pgsql)
Den komplette liste over felter i pg_active_session_history:
Kolonne | 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
Der er endnu ikke en færdig pakke til installation. Det anbefales at downloade kilden og samle biblioteket selv. Først skal du installere "devel"-pakken til din server og tilføje stien til pg_config i variablen PATH. Vi samler:
cd pgsentinel/src
make
make install
Tilføj parametre til postgres.conf:
shared_preload_libraries = ‘pg_stat_statements,pgsentinel’
track_activity_query_size = 2048
pg_stat_statements.track = all# количество удерживаемых в памяти последних записей
pgsentinel_ash.max_entries = 10000
Genstart PostgreSQL og opret udvidelsen:
create extension pgsentinel;
Den indsamlede information gør det muligt at besvare spørgsmål som:
- Hvor lang tid har sessionerne brugt på de største ventepunkter?
- Hvilke sessioner har været mest aktive?
- Hvilke forespørgsler har været mest aktive?
Det er klart, at man kan få svar på disse spørgsmål med SQL-forespørgsler, men det er lettere at se det visuelt på et diagram ved at markere de interessante tidsintervaller med musen. Du kan gøre dette ved hjælp af det gratis program (de samlede binære filer kan downloades under ).
Ved opstart af PASH-Viewer (fra version 0.4.0) kontrolleres der for tilstedeværelsen af visningen pg_active_session_history, og hvis den er der, indlæses al den akkumulerede historie fra den og fortsætter med at læse nye indkommende data, opdaterer grafen hvert 15. sekund.

Kilde: habr.com
