View a markdown version of this page

인덱스 작업 모범 사례 - Amazon DocumentDB

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

인덱스 작업 모범 사례

인덱스 빌드

Amazon DocumentDB로 데이터를 가져올 때, 대규모 데이터 세트를 가져오기 전에 인덱스를 생성해야 합니다. Amazon DocumentDB 인덱스 도구를 사용하여 실행 중인 MongoDB 인스턴스 또는 mongodump 디렉터리에서 인덱스를 추출하고 Amazon DocumentDB 클러스터에서 해당 인덱스를 생성할 수 있습니다. 마이그레이션에 대한 자세한 지침은 Amazon DocumentDB로 마이그레이션 섹션을 참조하세요.

인덱스 선택성

중복 값 수가 컬렉션에 있는 총 문서 수의 1% 미만인 필드로 인덱스 생성을 제한하는 것이 좋습니다. 예를 들어 컬렉션에 100,000개의 문서가 포함된 경우 동일한 값이 1,000회 이하 발생하는 필드에만 인덱스를 생성합니다.

고유 값 수가 많은 인덱스(즉, 카디널리티가 높은 인덱스)를 선택하면 필터 작업이 적은 수의 문서를 반환하여 인덱스 스캔 중에 우수한 성능을 얻을 수 있습니다. 높은 카디널리티 인덱스의 예는 같음 조건자가 최대 하나의 문서를 반환하도록 보장하는 고유 인덱스입니다. 낮은 카디널리티의 예로는 부울 필드에 대한 인덱스와 요일에 대한 인덱스가 있습니다. 성능 저하로 인해 데이터베이스의 쿼리 옵티마이저가 낮은 카디널리티 인덱스를 선택할 가능성은 낮습니다. 동시에 낮은 카디널리티 인덱스는 디스크 스페이스 및 I/O와 같은 리소스를 계속 사용합니다. 일반적으로 일반적인 값 빈도가 전체 컬렉션 크기의 1% 이하인 필드의 인덱스를 대상으로 해야 합니다.

또한 일반적으로 필터로 사용되는 필드에만 인덱스를 생성하고, 사용하지 않는 인덱스를 정기적으로 찾는 것이 좋습니다. 자세한 내용은 인덱스 사용량을 분석하고 사용하지 않는 인덱스를 식별하려면 어떻게 해야 하나요? 단원을 참조하십시오.

인덱스가 데이터 작성에 미치는 영향

인덱스는 컬렉션의 모든 문서를 스캔할 필요가 없으므로 쿼리 성능을 향상할 수 있지만 이러한 개선 시에 다른 불리함이 따를 수 있습니다. 컬렉션의 각 인덱스에 대해 문서가 삽입, 업데이트 또는 삭제될 때마다 데이터베이스는 컬렉션을 업데이트하고 컬렉션의 각 인덱스에 필드를 기록해야 합니다. 예를 들어 컬렉션에 9개의 인덱스가 있는 경우 데이터베이스는 클라이언트에 작업을 승인하기 전에 10개의 쓰기를 수행해야 합니다. 따라서 각 추가 인덱스에는 추가 쓰기 지연 시간, I/O 및 전체 사용 스토리지 증가가 발생합니다.

모든 작업 집합 메모리를 유지하려면 클러스터 인스턴스의 크기를 적절하게 조정해야 합니다. 이에 따라 스토리지 볼륨에서 인덱스 페이지를 지속적으로 읽을 필요가 없으므로 성능에 부정적인 영향을 미치고 I/O 비용이 증가합니다. 자세한 내용은 인스턴스 크기 조정을 참조하세요.

최상의 성능을 얻으려면 일반 쿼리의 성능을 향상하는 데 필요한 인덱스만 추가하여 컬렉션의 인덱스 수를 최소화합니다. 워크로드는 다양하지만 컬렉션당 인덱스 수를 5 이하로 유지하는 것이 좋습니다.

누락된 인덱스 식별

누락된 인덱스를 식별하고 제거하는 작업을 정기적으로 수행하는 것이 좋습니다. 자세한 내용은 누락된 인덱스는 어떻게 식별하나요? 단원을 참조하십시오.

사용되지 않는 인덱스 식별

사용되지 않는 인덱스를 식별하고 제거하는 작업을 정기적으로 수행하는 것이 좋습니다. 자세한 내용은 인덱스 사용량을 분석하고 사용하지 않는 인덱스를 식별하려면 어떻게 해야 하나요? 단원을 참조하십시오.