Afficher les requêtes actives et bloquantes
PostgreSQLSessionsCommande
SELECT pid, usename, state, wait_event_type, wait_event, pg_blocking_pids(pid) AS blocking_pids, now() - query_start AS duration, left(query, 100) AS query FROM pg_stat_activity WHERE state <> 'idle' AND pid <> pg_backend_pid() ORDER BY duration DESC;Ce que fait la commande
Liste tous les backends non inactifs, quels PID les bloquent et depuis combien de temps ils s'exécutent.
Quand l'utiliser
Pour diagnostiquer les problèmes de verrouillage/blocage et les requêtes longues.
Attention
pg_blocking_pids est disponible dans PostgreSQL 9.6+. Si le tableau blocking_pids n'est pas vide, ces PID détiennent le verrou ; annulez/terminez ce PID si nécessaire.
Voir aussi
- Terminer un backend (pg_terminate_backend)
- Annuler une requête en cours (pg_cancel_backend)
- Construire l'arbre de blocage (trouver le bloqueur racine)
- Examiner en détail les attentes de verrous par objet et mode de verrou (pg_locks)
- Trouver les transactions longues et 'idle in transaction'
- Terminer en masse, de façon contrôlée, les longues sessions 'idle in transaction'