SELECT pid, now() - pgstatactivity.querystart AS duration, query, state
FROM pgstatactivity
WHERE (now() - pgstatactivity.querystart) > interval '1 minute'
AND state = 'active';
SELECT bl.pid AS blockedpid, a.usename AS blockeduser, ka.query AS blockingstatement,
now() - ka.querystart AS blockingduration, kl.pid AS blockingpid, ka.usename AS blockinguser,
a.query AS blockedstatement
FROM pgcatalog.pglocks bl
JOIN pgcatalog.pgstatactivity a ON a.pid = bl.pid
JOIN pgcatalog.pglocks kl ON kl.transactionid = bl.transactionid AND kl.pid != bl.pid
JOIN pgcatalog.pgstatactivity ka ON ka.pid = kl.pid
WHERE NOT bl.granted;
EXPLAIN or EXPLAIN ANALYZE before your query to see the execution plan and where the query might be inefficient.EXPLAIN ANALYZE SELECT * FROM yourtable WHERE yourconditions;
SET statement_timeout = '10min';
SHOW work_mem;
SET work_mem = '256MB'; -- Adjust based on your server's capacity
SHOW max_connections;
SELECT pg_cancel_backend(pid);
SELECT pg_terminate_backend(pid);
(Perfect for DevOps & SREs)
(Perfect for DevOps & SREs)



