显示活动查询和阻塞查询
PostgreSQL会话命令
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;作用
列出所有非 idle 的后端进程、哪些 PID 阻塞了它们以及它们已运行多久。
适用场景
用于诊断锁/阻塞问题和长时间运行的查询。
注意
pg_blocking_pids 在 PostgreSQL 9.6+ 中可用。如果 blocking_pids 数组非空,说明这些 PID 持有锁;必要时取消/终止该 PID。