[PostgreSQL] 테이블 lock 조회 및 kill하기

2021. 6. 30. 09:49· [DB] POSTGRESQL
목차
  1. 현재 수행중인 SQL 전체 조회 
  2. LOCK 걸린 테이블 확인
  3. 해당 작업(process) kill
반응형

현재 수행중인 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 전체를 조회할 수 있다.

datid oid 데이터베이스oid
datname name 데이터베이스 이름
pid integer 프로세스id
usesysid oid 사용자고유번호
usename name 사용자이름
application_name text 응용프로그램이름
client_addr inet 접속ip
client_hostname text 접속 호스트 이름
client_port integer 접속한 TCP 포트
backend_start timestamp 서버 접속시간
xact_start timestamp 트랜잭션 시작 시간
query_satrt timestamp 쿼리 시작 시간
state_change timestamp state 마지막 변경 시간
waiting boolean 대기중 = true
state text 상태 정보 (하단 참조)
query text state=active 인 row에 대해 실행중인쿼리

state (상태 정보)

active : 쿼리 실행중

idle : 새로운 명령 대기중

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

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

fastpath function call : 함수 실행중

disabled : track_activities 무효

 

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;

 

현재 테이블에 lock을 확인 할 수 있다. 기본적으로 대부분의 lock 테이블은 괜찮으나 RowExclusiveLock 이 검색된다면 해당 테이블에 접근이 지연되어 다른 쿼리에도 영향을 미칠 수 있으므로 반드시 잡고있는 트랜잭션이나 서버 상태 등을 점검하여 lock을 해제 해 주는 작업이 필요하다.

 

 

 

해당 작업(process) kill

SELECT pg_cancel_backend([pid]);

SELECT pg_terminate_backend([pid]) FROM pg_stat_activity;

 

pg_cancel_backend는 해당 PID만 중지시키고, pg_terminate_backend는 해당 PID와 연계된 모든 상위 쿼리 프로세스를 종료시킨다. 따라서 pg_cancel_backend로 해당 작업이 종료 되는지 먼저 체크한 뒤, 중지 되지 않는다면 pg_terminate_backend를 수행하여 해당 프로세스를 종료시키도록 한다.

 

반응형
저작자표시 비영리 동일조건 (새창열림)

'[DB] POSTGRESQL' 카테고리의 다른 글

[PostgreSQL] 튜닝옵션 - postgresql.conf (Kor.ver)  (1) 2021.08.11
[PostgreSQL] 튜닝옵션 - Autovacuum, (postgresql.conf)  (0) 2021.08.11
[PostgreSQL] DBLINK 설정 및 사용  (0) 2021.04.12
[PostgreSQL] DB Lock을 줄이는 7가지 팁  (0) 2021.01.27
[PostgreSQL] 슬로우쿼리를 잡아내는 3가지 방법  (0) 2021.01.27
  1. 현재 수행중인 SQL 전체 조회 
  2. LOCK 걸린 테이블 확인
  3. 해당 작업(process) kill
'[DB] POSTGRESQL' 카테고리의 다른 글
  • [PostgreSQL] 튜닝옵션 - postgresql.conf (Kor.ver)
  • [PostgreSQL] 튜닝옵션 - Autovacuum, (postgresql.conf)
  • [PostgreSQL] DBLINK 설정 및 사용
  • [PostgreSQL] DB Lock을 줄이는 7가지 팁
mewoni
mewoni
mewoni
Mewoni's DB World
mewoni
  • 전체 글 보기
    • DBA
    • [DB] ORACLE
    • [DB] POSTGRESQL
    • [DB] SQL SERVER
    • [DB] SAP HANA DB
    • [SERVER]
    • [SAP]
    • [E] TOOLS
    • [E] MONITORING
    • [E] IT 이모저모
    • [STUDY] DAP
    • [STUDY] SQLP
    • [STUDY] QUIZ
    • [STUDY] 대용량데이터베이스솔루션
    • [STUDY] DB모델링 설계 및 구축 실무과정

블로그 메뉴

  • [LINK] Coding Factory
  • [LINK] My Jamong
  • [LINK] iheedol
  • [LINK] saponmimi
  • [LINK] Data Science Lab
  • [비공개] 글쓰기
  • [비공개] 관리

인기 글

전체
오늘
어제
hELLO · Designed By 정상우.v4.2.2
mewoni
[PostgreSQL] 테이블 lock 조회 및 kill하기
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.