PostgreSQL CREATE INDEX CONCURRENTLY를 안전하게 실행하는 체크리스트
변수 입력5개
무엇을 해결하나
운영 write를 장시간 막지 않고 index를 만들 때 transaction 제한, invalid index, disk, 진행률, query plan을 관리할 때 사용합니다.
준비할 정보
- 실제 적용할 환경과 대상 범위를 먼저 적습니다.
- 현재 상태와 기대 결과를 숫자나 예시로 준비합니다.
- 운영 데이터, 개인정보, secret은 제거하거나 안전한 placeholder로 바꿉니다.
- 변경 작업이라면 승인자, backup, rollback 가능 여부를 확인합니다.
복사해서 쓰는 프롬프트
index 생성 계획을 작성해줘.
PostgreSQL 버전: {{VERSION}}
테이블·크기·증가율: {{TABLE_SIZE}}
index 정의·목표 query: {{INDEX_QUERY}}
현재 lock·장기 transaction: {{LOCKS}}
여유 disk·replication: {{CAPACITY}}
precheck, `CREATE INDEX CONCURRENTLY`, progress, 실패 정리, ANALYZE, plan 검증을 포함해줘.실행 순서
- placeholder를 실제 환경 정보로 바꾸되 secret 값은 입력하지 않습니다.
- 먼저 조회와 미리보기로 대상 범위, 권한, 현재 상태를 확인합니다.
- 결과가 예상과 맞을 때만 가장 작은 단위로 실행하거나 초안을 생성합니다.
- 변경 전후의 수치와 화면을 같은 조건에서 비교해 기록합니다.
- 이상이 있으면 작업을 넓히지 말고 중단 조건과 rollback 절차를 따릅니다.
결과 확인
중복·유사 index와 장기 transaction을 확인하고 pg_stat_progress_create_index, disk, WAL, replica lag를 감시합니다. 실제 query의 EXPLAIN (ANALYZE, BUFFERS)를 안전한 환경에서 비교합니다.
검수 결과에는 확인한 사실, 아직 확인하지 못한 가정, 다음 행동을 분리해서 남깁니다. 다른 사람이 같은 입력으로 재현할 수 있도록 환경과 확인 시각도 함께 기록하면 좋습니다.
주의사항
CONCURRENTLY는 transaction block 안에서 실행할 수 없고 실패하면 invalid index가 남을 수 있습니다. 운영 부하가 높은 시간에 무감시로 실행하지 않습니다.
AI가 만든 설명과 명령은 초안입니다. 실제 제품 버전과 조직 정책, 공식 문서를 대조하고 영향이 있는 작업은 dev나 격리 환경에서 먼저 검증하세요.
이 글이 도움이 되었나요?
댓글 0개
아직 댓글이 없습니다.
