DB

[postgreSQL] DB LOCK 조회 및 해제

앳홍 2023. 8. 31. 18:49
반응형
LOCK 조회
lock 걸린 테이블 조회
SELECT  t.relname,
        l.locktype,
        page,
        virtualtransaction,
        pid,
        mode,
        granted
FROM pg_locks l,
	 pg_stat_all_tables t
WHERE l.relation = t.relid
ORDER BY relation ASC;
현재 수행중인 sql 전체 조회
select  datname, 
        pid, 
        usename, 
        application_name, 
        client_addr, 
        client_port, 
        backend_start, 
        query_start, 
        wait_event_type, 
        state, 
        backend_xmin
        query 
from pg_stat_activity;
해당 유저명 db에서 수행중인 sql 조회
SELECT * FROM pg_stat_activity where usename ='DB명';

조회 후 state, wait event 컬럼 확인

state (상태 정보)

active : 쿼리 실행중

idle : 새로운 명령 대기중

idle in transaction : 트랜잭션은 있지만 현재 실행중인 쿼리 없음

idle in transaction (aborted) : 트랜잭션은 있고 실행중인 쿼리는 없으나 트랜잭션에 오류가 발생

fastpath function call : 함수 실행중

disabled : track_activities 무효

 

 

해당 작업 종료
pid 중지 
SELECT pg_cancel_backend(pid);
pid와 연계된 모든 상위 쿼리 프로세스 종료 (강제 종료)
SELECT pg_terminate_backend(pid) FROM pg_stat_activity;

pg_cancel_backend로 해당 작업이 종료 되는지 확인 후, 중지 되지 않는다면

pg_terminate_backend를 수행하여 해당 프로세스를 종료 시도