História aktívnych relácií v PostgreSQL – nové rozšírenie pgsentinel

Spoločnosť pgsentinel uvedla rovnomenné rozšírenie pgsentinel (github repozitár), ktoré do PostgreSQL pridáva pohľad pg_active_session_history – históriu aktívnych relácií (analogicky ku v$active_session_history v Oracle).

V podstate ide o snímky z pg_stat_activity každú sekundu, ale sú tu dôležité aspekty:

  1. Všetky zhromaždené informácie sa uchovávajú iba v operačnej pamäti a objem spotrebovanej pamäte sa reguluje počtom posledných uložených záznamov.
  2. Pridáva sa pole queryid – ten istý queryid z rozšírenia pg_stat_statements (je potrebné predchádzajúce nainštalovanie).
  3. Pridáva sa pole top_level_query – text dotazu, z ktorého bol vyvolaný aktuálny dotaz (v prípade použitia pl/pgsql)


Celý zoznam 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 pre inštaláciu zatiaľ nie je. Odporúča sa stiahnuť zdrojové kódy a skompilovať knižnicu samostatne. Predtým je potrebné nainštalovať „devel“ balík pre svoj server a do premennej PATH zapísať cestu k pg_config. Skompilujeme:

cd pgsentinel/src
make
make install

Pridávame parametre 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

Reštartujeme PostgreSQL a vytvoríme rozšírenie:

create extension pgsentinel;

Zhromaždené informácie umožňujú odpovedať na takéto otázky, ako sú:

  • Na akých očakávaniach relácie strávili najviac času?
  • Ktoré relácie boli najaktívnejšie?
  • Ktoré dotazy boli najaktívnejšie?

Na tieto otázky je možné získať odpovede samozrejme SQL dotazmi, ale pohodlnejšie je vidieť to prehľadne na grafe, zvýrazňovaním zaujímavých časových intervalov myšou. Môžete to urobiť pomocou bezplatného programu PASH-Viewer (stiahnite si zostavené binárne súbory v sekcii Vydania).

Pri spustení PASH-Viewera (od verzie 0.4.0) overuje prítomnosť zobrazenia pg_active_session_history a ak existuje, načíta z neho celú nahromadenú históriu a naďalej číta nové prichádzajúce údaje, aktualizujúc graf každých 15 sekúnd.

História aktívnych relácií v PostgreSQL – nové rozšírenie pgsentinel

Zdroj: habr.com

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster