Aktive und blockierende Abfragen anzeigen
PostgreSQLSessionsBefehl
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;Was es tut
Listet alle aktiven (nicht idle) Backends, welche PIDs sie blockieren und wie lange sie schon laufen.
Wann einsetzen
Um Sperr-/Blockierungsprobleme und lang laufende Abfragen zu diagnostizieren.
Vorsicht
pg_blocking_pids gibt es ab PostgreSQL 9.6. Ist das Array blocking_pids nicht leer, halten diese PIDs die Sperre; brich diese PID bei Bedarf ab bzw. beende sie.
Verwandte Einträge
- Backend beenden (pg_terminate_backend)
- Laufende Abfrage abbrechen (pg_cancel_backend)
- Blockierungsbaum aufbauen (Root Blocker finden)
- Sperrwartezustände im Detail nach Objekt und Sperrmodus untersuchen (pg_locks)
- Lang laufende und 'idle in transaction'-Transaktionen finden
- Lange 'idle in transaction'-Sessions kontrolliert in großer Zahl beenden