리뷰 지수 순위
Performance Advisor 는 제안하는 인덱스 를 해당 Impact 로 정렬합니다. Impact 는 제안된 인덱스 가 가져올 수 있는 예상 성능 향상을 나타냅니다.
Performance Advisor가 인덱스를 제안하고 순위를 매기는 방법
Performance Advisor는 실행 시간이 100
밀리초 이상인 쿼리를 모니터링하고 이러한 쿼리를 일반적인 쿼리 형태 로 그룹화합니다. Performance Advisor는 형태와 일치하는 쿼리에서 다음과 같이 집계된 메트릭을 고려하여 각 쿼리 형태의 비효율성을 계산합니다.
쿼리 실행에 소요된 시간입니다.
스캔한 문서 수입니다.
반환된 문서 수입니다.
평균 객체 크기.
권장 인덱스를 설정하기 위해 Performance Advisor 는 수식에서 이러한 지표 를 사용하여 Impact 또는 해당 쿼리 형태 와 일치하는 인덱스 를 생성하면 발생할 수 있는 성능 향상을 계산합니다. Performance Advisor 가 인덱스를 제안하면 Impact 을(를) 기준으로 인덱스 순위를 매깁니다. Impact 는 읽은 낭비된 총 바이트 수에 따라 결정됩니다.
인덱스 필드 순서
쿼리 형태의 쿼리 작업 유형은 인덱스를 구성하는 데 사용되는 필드의 순서에 영향을 줍니다. 일반적으로 Performance Advisor는 카디널리티를 기준으로 필드의 순위를 매깁니다.
다음 표는 Performance Advisor가 다양한 작업 유형의 상대적 중요도를 순서대로 순위를 매기는 방법을 보여줍니다.
제안된 인덱스 제한
Performance Advisor는 필드가 16 개를 초과하는 인덱스는 추천하지 않습니다.
또한 Performance Advisor는 영향을 받는 쿼리에 대해 스캔한 문서와 반환된 문서의 차이가 500 보다 큰 경우에만 인덱스를 제안합니다.
인덱스 중복 제거
Performance Advisor는 제안하기 전에 겹치는 인덱스의 중복을 제거합니다. 예를 들어, Performance Advisor가 다음과 같은 잠재적인 추천 인덱스를 계산한다고 가정해 보겠습니다.
{ a : 1 } { a : 1, b : 1 }
{ a : 1 }
이(가) { a : 1, b : 1 }
의 접두사이므로 Performance Advisor는 { a : 1, b : 1 }
만 제안합니다. 인덱스 접두사에 대해 자세히 알아보려면 접두사를 참조하세요.
예시: 뉴욕시택시 데이터
이 예제에서는 뉴욕시 택시에 대한 정보가 포함된 cab-db
데이터베이스를 사용하며, 여기에는 승차 및 하차 시간, 승차 거리, 승차 비용 내역에 대한 필드가 포함되어 있습니다. 컬렉션 yellow
의 일반적인 문서는 다음 예제와 같습니다.
{ "_id" : ObjectId("5db9daab0b2a17b7706cd6a3"), "pickup_datetime" : "2014-06-30 02:09:23", "dropoff_datetime" : "2014-06-30 02:20:36", "passenger_count" : 2, "trip_distance" : 3, "fare_amount" : 12, "tip_amount" : 2.6, "total_amount" : 15.6 }
컬렉션에는 10 백만 개 이상의 문서가 포함되어 있으므로 특정 필드 데이터를 기반으로 쿼리를 실행해야 하는 애플리케이션은 컬렉션을 올바르게 인덱싱하지 않으면 매우 비효율적인 작업을 생성할 수 있습니다.
이 애플리케이션에 대한 일반적인 쿼리 Atlas는 하나 이상의 다른 필드와 결합된 특정 드롭오프 시간이 포함된 문서를 검색합니다. 예를 들면 다음과 같습니다.
db.yellow.find({ "dropoff_datetime": "2014-06-19 21:45:00", "passenger_count": 1, "trip_distance": {"$gt": 3 } })
Performance Advisor는 성능 향상을 위해 다음 인덱스를 권장합니다.
참고
기본적으로 Performance Advisor는 클러스터의 모든 컬렉션에 대한 인덱스 권장 사항을 표시합니다. 권장 사항 범위를 특정 컬렉션으로 좁히려면 Collection 드롭다운 메뉴에서 컬렉션을 선택합니다.
Performance Advisor는 성능에 미치는 영향이 가장 큰 순서대로 권장 인덱스를 나열합니다.
첫 번째 권장 사항은 세 필드에 대한 인덱스입니다.
passenger_count
dropoff_datetime
trip_distance
Create Index 버튼을 클릭하여 원하는 추가 옵션이 포함된 인덱스 를 생성합니다. Performance Advisor 에서 인덱스 를 만드는 방법에 학습 보려면 추천 인덱스 만들기를 참조하세요.
이 인덱스를 생성하면 데이터베이스 엔진이 전체 컬렉션을 스캔하여 쿼리와 일치하는 문서를 찾을 필요가 없으므로 성능이 향상됩니다. 예제 에 표시된 형태의 쿼리는 인덱싱된 컬렉션에서 50 밀리초 이하의 결과를 반환하는 반면, 인덱싱되지 않은 컬렉션에서는 몇 초가 소요됩니다.