유지보수 작업

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

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

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;

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