PostgreSQL 동시 인덱스 생성 시 Lock Timeout

Jihoon Kim 40 평판 포인트
2026-10-09T06:03:55.94+00:00

장시간 실행되는 트랜잭션으로 CREATE INDEX CONCURRENTLY가 타임아웃됩니다. 장기 실행 쿼리의 PID를 확인하고 인덱스 생성을 재시도하려면 어떻게 해야 하나요?

비즈니스용 Windows | Windows 365 비즈니스
댓글 0개 설명 없음

답변 2개

정렬 기준: 가장 유용함
  1. Jason Nguyen Tran 28,015 평판 포인트 독립 자문가
    2026-10-13T06:54:37.8333333+00:00

    문제가 해결되었는지 확인하기 위해 다시 연락드립니다. 추가 정보가 필요하시면 언제든지 답변해 주세요. 제공된 정보가 도움이 되었다면, 다른 커뮤니티 사용자들에게도 도움이 될 수 있도록 "Accept Answer" 를 클릭해 주시면 감사하겠습니다. 감사합니다!

    이 대답이 도움이 되었나요?

    댓글 0개 설명 없음

  2. Jason Nguyen Tran 28,015 평판 포인트 독립 자문가
    2026-10-09T06:28:06.9066667+00:00

    안녕하세요.

    장시간 실행 중인 트랜잭션이 잠금을 유지하면서 인덱스 생성 작업의 진행을 방해하는 경우가 많습니다. 먼저 pg_stat_activity를 조회하여 장시간 실행 중인 세션의 PID, 트랜잭션 시작 시간, SQL 문을 확인하고, 해당 세션이 인덱스 생성 작업을 실제로 차단하고 있는지 검증하는 것을 권장합니다.

    필요한 경우 애플리케이션에 미칠 수 있는 영향을 충분히 검토한 후 pg_cancel_backend()를 사용해 차단 중인 쿼리를 취소하거나, pg_terminate_backend()를 사용해 해당 세션을 종료할 수 있습니다.

    차단 중인 트랜잭션을 정리한 후 CREATE INDEX CONCURRENTLY 명령을 다시 실행하면 됩니다. 다만, 동시 인덱스 생성에 실패하여 유효하지 않은 인덱스가 남아 있다면 재시도하기 전에 해당 인덱스를 삭제하거나 다시 생성해야 합니다.

    pg_stat_activity 조회 결과를 검토하는 데 도움이 필요하시면 결과를 공유해 주세요. 추가 분석을 도와드리겠습니다.

    이 정보가 도움이 되었다면 "Accept Answer" 를 클릭해 주세요. 동일한 문제를 겪는 다른 사용자들도 이 해결 방법을 참고할 수 있습니다.

    Jason

    이 대답이 도움이 되었나요?

    댓글 0개 설명 없음

답변

질문 작성자는 답변을 '승인됨'으로 표시하고, 중재자는 답변을 '추천됨'으로 표시할 수 있습니다. 이를 통해 사용자는 해당 답변이 작성자의 문제를 해결했다는 것을 알 수 있습니다.