Společnost uvolnila stejnojmenné rozšíření pgsentinel (), které přidává do PostgreSQL pohled pg_active_session_history — historii aktivních relací (podobně jako v oraklovém v$active_session_history).
V podstatě to jsou jen snímky z pg_stat_activity každou sekundu, ale jsou zde důležité aspekty:
- Veškeré shromážděné informace se uchovávají pouze v paměti a objem paměti, který se používá, se řídí počtem posledních uchovávaných záznamů.
- Bylo přidáno pole queryid — ten samý queryid z rozšíření pg_stat_statements (vyžaduje předchozí instalaci).
- Bylo přidáno pole top_level_query — text dotazu, ze kterého byl současný dotaz vyvolán (v případě použití pl/pgsql)
Úplný seznam polí 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
Hotový balíček pro instalaci zatím není. Je navrženo stáhnout zdrojové kódy a sestavit knihovnu samostatně. Nejprve je třeba nainstalovat „devel“ balíček pro váš server a do proměnné PATH zapsat cestu k pg_config. Sestavujeme:
cd pgsentinel/src
make
make install
Přidáme parametry do postgres.conf:
shared_preload_libraries = ‘pg_stat_statements,pgsentinel’
track_activity_query_size = 2048
pg_stat_statements.track = all# количество удерживаемых в памяти последних записей
pgsentinel_ash.max_entries = 10000
Restartujeme PostgreSQL a vytváříme rozšíření:
create extension pgsentinel;
Nasbírané informace umožňují odpovědět na následující otázky:
- Na jakých čekáních relací bylo stráveno nejvíce času?
- Které relace byly nejaktivnější?
- Které dotazy byly nejaktivnější?
Odpovědi na tyto otázky lze samozřejmě získat pomocí SQL dotazů, ale je pohodlnější to vidět jasně na grafu, když myší zvýrazňujete zajímavé časové intervaly. Můžete to provést pomocí bezplatného programu (sestavené binární soubory lze stáhnout v sekci ).
PASH-Viewer při spuštění (od verze 0.4.0) zkontroluje existenci zobrazení pg_active_session_history, a pokud existuje, načte z něj veškerou nahromaděnou historii a pokračuje ve čtení nově příchozích dat, aktualizujíc graf každých 15 sekund.

Zdroj: habr.com
