Lock 발생 시 해결 방법

1. 프로세스 id 값 조회

Lock 발생한 프로세스id 확인 방법은 2가지가 있습니다. 상황에 따라 한가지를 택해주세요.

가) 로그로 확인 방법

  • 로그 경로: YSR2000\Database\Data\log\postgresql-오늘날짜.csv

검색기능(ctrl+f)로 "lock" 검색 후 아래와 같은 기록이 있는지 확인 해주세요.

  • Process holding the lock~

사진처럼 process 다음에 나오는 숫자가 Lock과 관련된 프로세스id 입니다.

나) 쿼리로 확인 방법

아래 쿼리 조회해서 나오는 값이 프로세스id 입니다.

2. PgAdmin이나 ubpg에서 아래 구문 실행(프로세스 Kill)

pid 대신 1번에서 확인한 프로세스id를 입력해주세요.

3. 락 상황 재현


  1. 어떤 테이블이 락에 걸린지 확인

실행했을 때 나오는 테이블만 따로 기억해주세요.

예시로 위 쿼리를 실행했을 때 나오는 query 값이 아래와 같다면 기억할 테이블명은 trviewidxo2025 입니다.

  • DROP TABLE IF EXISTS dba.trviewidxo2025

  1. 문제되는 테이블과 관련된 프로세스 id 조회

  • 예시로 표현하면 "테이블명" 대신에 "trviewidxo2025" 입력

  • 테이블명에는 소문자로만 작성

  1. PgAdmin이나 ubpg에서 아래 구문 실행(프로세스 Kill)

pid 대신 5번에서 확인한 프로세스id를 입력해주세요.

  1. 락 상황 재현

Last updated