유지보수 작업

이 페이지는 개발과 관련된 다양한 데이터베이스 관련 작업에 대한 세부 정보를 제공합니다.

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

caution
이전에 이 섹션에서는 인덱스를 제거하기 전에 해당 인덱스를 무효화하는 절차에 대해 설명했습니다. 그러나 안전하지 않다는 이유로 더는 권장하지 않습니다.

다음 상황에서 인덱스를 제거하기 전에 비활성화하고 싶을 수 있습니다.

  • 해당 인덱스가 큰 테이블에 있으며 복원 시 다시 빌드하는 데 시간이 오래 걸릴 경우
  • 인덱스가 완전히 확인할 수 없는 방식으로 사용되고 있는지 확실하지 않은 경우

이러한 상황에서는 인프라 팀과 데이터베이스 팀과 협의하여 인덱스를 비활성화했습니다. 이를 위해 “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;

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