PostgreSQL

PostgreSQL: 락 체크 쿼리

dewstream 2025. 1. 7. 15:30

※ PostgreSQL: Lock check query.

 

안녕하세요. 듀스트림입니다.

 

운영용 쿼리에 대한 문의가 많아서 하나씩 올려보겠습니다.

이번 포스팅은 테이블에 걸린 락과 락, 홀더를 확인 할 수 있는 쿼리입니다.


1. 테이블 락 체크

테이블에 걸려있는 락을 확인할 수 있는 쿼리입니다.

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;

[그림 1] 테이블 락 체크 예시


2. 락, 블로킹 세션(홀더) 체크

대기 중인 락과 블로킹 세션을 확인할 수 있는 쿼리입니다.

select 
  pid,
  wait_event_type||': '||wait_event wait,
  pg_blocking_pids(pid) holder,
  query
from pg_stat_activity
where wait_event_type = 'Lock';

[그림 2] 락, 블로킹 세션 체크 예시

 

 

+ \watch [interval] 명령으로 설정된 인터벌 타임에 따라 쿼리를 반복 실행하여 모니터링할 수 있습니다.

select 
  pid,
  wait_event_type||': '||wait_event wait,
  pg_blocking_pids(pid) holder,
  query
from pg_stat_activity
where wait_event_type = 'Lock'; \watch 3 -- 3초마다 해당 쿼리 실행

[그림 3] watch 예시


그럼 오늘은 이만~

다음 포스팅도 기대해주세요 :)