Mostrar consultas activas y bloqueantes
PostgreSQLSesionesComando
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;Qué hace
Lista todos los backends no inactivos, qué PID los están bloqueando y cuánto tiempo llevan ejecutándose.
Cuándo usarlo
Para diagnosticar problemas de bloqueos y consultas de larga duración.
Precaución
pg_blocking_pids está disponible en PostgreSQL 9.6+. Si el array blocking_pids no está vacío, esos PID retienen el bloqueo; cancele/termine ese PID si es necesario.
Relacionado
- Terminar un backend (pg_terminate_backend)
- Cancelar una consulta en ejecución (pg_cancel_backend)
- Construir el árbol de bloqueos (encontrar el bloqueador raíz)
- Inspeccionar en detalle las esperas de bloqueo por objeto y modo de bloqueo (pg_locks)
- Encontrar transacciones de larga duración e 'idle in transaction'
- Terminar de forma masiva y controlada las sesiones 'idle in transaction' largas