Société a lancé une extension homonyme pgsentinel (), ajoutant à PostgreSQL la vue pg_active_session_history — l'historique des sessions actives (similaire à la v$active_session_history d'Oracle).
En réalité, ce sont simplement des instantanés par seconde de pg_stat_activity, mais il y a des points importants :
- Toutes les informations accumulées ne sont stockées qu'en mémoire vive, et le volume de mémoire consommé est régulé par le nombre des dernières entrées stockées.
- Un champ queryid est ajouté — ce fameux queryid de l'extension pg_stat_statements (installation préalable requise).
- Un champ top_level_query est ajouté — le texte de la requête à partir de laquelle la requête actuelle a été appelée (en cas d'utilisation de pl/pgsql)
Liste complète des champs de 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
Il n'y a pas encore de paquet prêt à être installé. Il est suggéré de télécharger les sources et de compiler la bibliothèque soi-même. L'installation d'un paquet 'devel' pour votre serveur et l'ajout du chemin vers pg_config dans la variable PATH sont requises. Compilation :
cd pgsentinel/src
make
make install
Ajoutez les paramètres dans postgres.conf :
shared_preload_libraries = ‘pg_stat_statements,pgsentinel’
track_activity_query_size = 2048
pg_stat_statements.track = all# количество удерживаемых в памяти последних записей
pgsentinel_ash.max_entries = 10000
Redémarrez PostgreSQL et créez l'extension :
create extension pgsentinel;
Les informations accumulées permettent de répondre à des questions telles que :
- Sur quelles attentes de session a-t-on passé le plus de temps ?
- Quelles sessions ont été les plus actives ?
- Quelles requêtes ont été les plus actives ?
Bien sûr, on peut obtenir des réponses à ces questions à l'aide de requêtes SQL, mais il est plus simple de les visualiser sur un graphique en sélectionnant avec la souris les intervalles de temps qui vous intéressent. Vous pouvez le faire avec le logiciel gratuit (les binaires compilés peuvent être téléchargés dans la section ).
Lorsque vous démarrez PASH-Viewer (à partir de la version 0.4.0), il vérifie l'existence de la vue pg_active_session_history et, si elle est présente, il charge toute l'historique accumulé et continue de lire les nouvelles données entrantes, mettant à jour le graphique toutes les 15 secondes.

Source : habr.com
