Unternehmen hat das gleichnamige Erweiterungspacket pgsentinel (), das in PostgreSQL die Ansicht pg_active_session_history hinzufügt — eine Historie aktiver Sitzungen (analog zur Oracle v$active_session_history).
Im Grunde genommen sind dies einfach Sekundenmomentaufnahmen aus pg_stat_activity, aber es gibt wichtige Punkte:
- Alle gesammelten Informationen werden nur im Arbeitsspeicher gespeichert, und der verbrauchte Speicher wird durch die Anzahl der zuletzt gespeicherten Einträge reguliert.
- Es wird ein Feld queryid hinzugefügt — das ist genau das queryid aus der Erweiterung pg_stat_statements (eine vorherige Installation ist erforderlich).
- Ein Feld top_level_query wird hinzugefügt — der Text der Abfrage, von der die aktuelle Abfrage aufgerufen wurde (im Fall der Verwendung von pl/pgsql).
Vollständige Liste der Felder 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
Ein fertiges Installationspaket gibt es bisher nicht. Es wird empfohlen, die Quellcodes herunterzuladen und die Bibliothek selbst zu kompilieren. Zuvor muss das „devel“-Paket für Ihren Server installiert werden, und der Pfad zu pg_config muss in die PATH-Variable aufgenommen werden. Kompilieren:
cd pgsentinel/src
make
make install
Fügen Sie die Parameter in postgres.conf hinzu:
shared_preload_libraries = ‘pg_stat_statements,pgsentinel’
track_activity_query_size = 2048
pg_stat_statements.track = all# количество удерживаемых в памяти последних записей
pgsentinel_ash.max_entries = 10000
Starten Sie PostgreSQL neu und erstellen Sie die Erweiterung:
create extension pgsentinel;
Die gesammelten Informationen ermöglichen Antworten auf Fragen wie:
- Worauf haben die Sitzungen am längsten gewartet?
- Welche Sitzungen waren die aktivsten?
- Welche Abfragen waren die aktivsten?
Die Antworten auf diese Fragen können natürlich mit SQL-Abfragen erhalten werden, aber es ist praktischer, dies visuell in einem Diagramm zu sehen und interessante Zeitintervalle mit der Maus auszuwählen. Sie können dies mit der kostenlosen Software (die gesammelten Binaries können im Abschnitt ).
Beim Start von PASH-Viewer (ab Version 0.4.0) wird überprüft, ob die Ansicht pg_active_session_history vorhanden ist. Falls ja, lädt er die gesamte gesammelte Historie und setzt das Einlesen neuer eintreffender Daten fort, wobei das Diagramm alle 15 Sekunden aktualisiert wird.

Quelle: habr.com
