psql lock 풀기

햄도·2020년 12월 3일
0
  1. 테이블명으로 pid 조회
select * 
from pg_locks l 
join pg_class t 
on l.relation=t.oid 
and t.relkind='r' 
where t.relname = '{table_name}';
  1. pid로 kill
select pg_cancel_backend({pid})
  1. 위 방법으로 안되면 상위 query부터 중지
SELECT pg_terminate_backend({pid}) 
FROM pg_stat_activity ;

pg_cancel_backend는 해당 PID만 중지시키려고 하고, pg_terminate_backend는 해당 PID와 연계된 모든 상위 Query Process를 모두 중지시킵니다. 따라서 pg_cancel_backend로 해당 작업이 중지되는지 먼저 확인해 보고, 그래도 중지되지 않는다면 pg_terminate_backend를 수행해 보시면 됩니다.

주의사항

위의 모니터링 쿼리 및 작업을 Kill하는 쿼리도 사실 Transaction을 탈 수 있습니다. 따라서 Rollack, Commit이 되는 DB도구를 활용하시거나, 터미널에서 transaction으로 처리하시고, 이상없는지 확인하신 다음 Commit을 하시는 것이 DB를 안전하게 사용하시고, 데이터를 잘 관리할 수 있는 방법이라고 할 수 있습니다.

참고

https://m.blog.naver.com/admass/220900485272

profile
developer hamdoe

0개의 댓글