유지보수 작업

이 페이지에서는 개발과 관련될 수 있는 다양한 데이터베이스 관련 작업을 자세히 설명합니다.

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

경고: 이전에는 인덱스를 제거하기 전에 해당 인덱스를 무효로 표시하는 절차에 대해 설명했습니다. 지금은 안전하지 않다는 이유로 권장되지 않습니다.

인덱스를 제거하기 전에 비활성화하려는 경우가 있습니다:

  • 해당 인덱스가 큰 테이블에 있는 경우 되돌리는 경우 재구성에 많은 시간이 걸립니다.
  • 인덱스가 완전히 보이지 않는 방식으로 사용되는지에 대한 불확실성이 있습니다.

이러한 상황에서는 다음과 같이 작동하여 인덱스가 비활성화되었습니다. 인프라 팀 및 데이터베이스 팀과 협의하여 “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;

참조용 운영 인프라 문제의 예시를 확인하세요.