Mostrar consultas ativas e bloqueadoras
PostgreSQLSessõesComando
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;O que faz
Lista todos os backends que não estão ociosos, quais PIDs os estão bloqueando e há quanto tempo estão rodando.
Quando usar
Para diagnosticar problemas de lock/bloqueio e consultas longas.
Atenção
pg_blocking_pids está disponível no PostgreSQL 9.6+. Se o array blocking_pids não estiver vazio, esses PIDs seguram o lock; cancele/encerre esse PID se necessário.
Relacionados
- Encerrar um backend (pg_terminate_backend)
- Cancelar uma consulta em execução (pg_cancel_backend)
- Montar a árvore de bloqueios (encontrar o bloqueador raiz)
- Inspecionar em detalhe as esperas de lock por objeto e modo de lock (pg_locks)
- Encontrar transações longas e 'idle in transaction'
- Encerrar em massa, de forma controlada, sessões 'idle in transaction' longas