측정값 인덱스 사용
다음으로 인덱스 액세스 정보 가져오기: $indexStats
$indexStats
집계 단계를 사용하여 컬렉션의 각 인덱스 사용에 관한 통계를 얻습니다. 예를 들어 다음 집계 작업은 orders
컬렉션의 인덱스 사용에 대한 통계를 반환합니다.
db.orders.aggregate( [ { $indexStats: { } } ] )
(으)로 쿼리 계획 반환 explain()
executionStats 모드의 db.collection.explain()
또는 cursor.explain()
메서드를 사용하여 사용한 인덱스, 스캔 문서 수, 쿼리 처리 시간(밀리초) 등 쿼리 프로세스에 관한 통계를 반환합니다.
allPlansExecution 모드의 db.collection.explain()
또는 cursor.explain()
메서드를 실행하여 계획 선택 중에 수집된 부분 실행 통계를 확인합니다.
인덱스 사용 관리: hint()
db.collection.find()
작업에 특정 인덱스 사용을 강제하려면 hint()
메서드를 포함한 인덱스를 지정합니다. hint()
메서드를 find()
메서드에 추가합니다. 다음 예시를 고려할 수 있습니다.
db.people.find( { name: "John Doe", zipcode: { $gt: "63000" } } ).hint( { zipcode: 1 } )
특정 인덱스에 대한 실행 통계를 확인하려면 db.collection.find()
에 hint()
메서드를 추가한 후 cursor.explain()
을 추가합니다.예시는 아내와 같습니다.
db.people.find( { name: "John Doe", zipcode: { $gt: "63000" } } ).hint( { zipcode: 1 } ).explain("executionStats")
또는 hint()
메서드를 db.collection.explain().find()
에 추가합니다.
db.people.explain("executionStats").find( { name: "John Doe", zipcode: { $gt: "63000" } } ).hint( { zipcode: 1 } )
MongoDB가 어떠한 인덱스도 사용하지 못하도록 hint()
메서드에 $natural
연산자를 지정합니다.
db.people.find( { name: "John Doe", zipcode: { $gt: "63000" } } ).hint( { $natural: 1 } )
인덱스 지표
$indexStats
집계 단계 외에도 MongoDB는 데이터베이스의 인덱스 사용을 분석할 때 고려할 수 있는 다양한 인덱스 통계를 제공합니다.