유지보수 작업

이 페이지에는 개발과 관련될 수 있는 다양한 데이터베이스 관련 작업에 대해 설명합니다.

인덱스 비활성화는 안전하지 않습니다

경고: 이전에는 인덱스를 제거하기 전에 해당 인덱스를 무효로 표시하는 절차에 대해 설명하는 섹션이 있었습니다. 그러나 안전하지 않기 때문에 더 이상 권장되지 않습니다.

다음 상황에서는 인덱스를 제거하기 전에 비활성화하는 것이 좋을 수 있습니다:

  • 대규모 테이블에 인덱스가 있고 되돌릴 경우 다시 작성하는 데 많은 시간이 걸리는 경우
  • 인덱스가 완전히 시각적으로 파악되지 않은 방식으로 사용되고 있는지 여부가 불확실한 경우

이러한 상황에서는 다음 명령을 실행하여 인프라 팀과 데이터베이스 팀이 협조하여 인덱스를 비활성화하고 프로덕션 인프라 이슈를 여는 것으로 진행되었습니다. “Production Change” 템플릿을 사용하여 프로덕션 인프라 이슈를 여는 것과 다음 명령을 실행합니다:

-- 인덱스를 비활성화한 다음 인덱스를 사용하는 것으로 알려진 EXPLAIN 명령을 실행합니다:
UPDATE pg_index SET indisvalid = false WHERE indexrelid = 'index_issues_on_foo'::regclass;
-- 레플리카에서 인덱스가 무효인지 확인합니다:
SELECT indisvalid FROM pg_index WHERE indexrelid = 'index_issues_on_foo'::regclass;

-- 무효화를 롤백합니다:
UPDATE pg_index SET indisvalid = true WHERE indexrelid = 'index_issues_on_foo'::regclass;

참고용 인프라 이슈 예시를 확인하세요.