[PostgreSQL] 장기 실행 쿼리 확인 & 중단
뭔가 Lock을 잘못 걸거나, 쿼리 최적화를 말아먹었다면 DB가 가사상태에 빠질 수도 있다.
그럴때는 다음과 같은 쿼리로 뭐가 오래 걸리는지 확인할 수 있다.
SELECT
pid,
now() - pg_stat_activity.query_start AS duration,
query,
state,
usename,
datname,
client_addr
FROM pg_stat_activity
WHERE (now() - pg_stat_activity.query_start) > interval '1 minutes'
AND state = 'active'
AND query NOT LIKE '%pg_stat_activity%'
ORDER BY duration DESC;

이 상태에서 저 오래 걸리는 쿼리를 중단시키고 싶다면, 저 pid를 가져다가 pg_terminate_backend 함수를 실행시키면 된다.
SELECT pg_terminate_backend(PID);