MongoDB의 쿼리 분석
제안 된 인덱스의 유효성을 보장하기 MongoDB의 쿼리 및 분석 성능 분석을 조회하기위한 중요한 도구이다.
MongoDB의 쿼리 분석에 일반적으로 사용되는 기능은 다음과 같습니다 설명 ()와 힌트 ().
() 설명 사용
동작 쿼리 정보를 제공합니다 설명 인덱스 및 쿼리 통계를 사용합니다. 인덱스를 최적화하는 데 도움이.
다음에 우리는 컬렉션의 인덱스 성과 _ 이름의 사용자를 생성 :
>db.users.ensureIndex({gender:1,user_name:1}) </p> <p>现在在查询语句中使用 explain :</p> <pre> >db.users.find({gender:"M"},{user_name:1,_id:0}).explain()
위의 쿼리는 다음과 같은 결과를 반환 () 설명 :
{ "cursor" : "BtreeCursor gender_1_user_name_1", "isMultiKey" : false, "n" : 1, "nscannedObjects" : 0, "nscanned" : 1, "nscannedObjectsAllPlans" : 0, "nscannedAllPlans" : 1, "scanAndOrder" : false, "indexOnly" : true, "nYields" : 0, "nChunkSkips" : 0, "millis" : 0, "indexBounds" : { "gender" : [ [ "M", "M" ] ], "user_name" : [ [ { "$minElement" : 1 }, { "$maxElement" : 1 } ] ] } }
이제, 우리는 결과 세트의 필드를 확인 :
- indexOnly : 필드는 우리가 인덱스를 사용하는 것이 사실이다.
- 커서 : 이것은 질의 인덱스를 사용하기 때문에 MongoDB의 인덱스는 B 트리 구조로 저장되므로도 커서 BtreeCursor 타입을 사용한다. 인덱스를 사용하지 않는 경우, 커서 타입 BasicCursor이다. 이 키는 사용중인 인덱스의 이름을 줄 것이다, 당신은 더 많은 정보 지수를 얻기 위해 (인덱스 정보가 저장되어 있기 때문에,이 조금 언급되며, 자동으로 생성) 현재 데이터베이스에서 설정 system.indexes 이름으로 볼 수 있습니다 .
- N : 현재 쿼리에 의해 반환 된 문서의 수입니다.
- nscanned / nscannedObjects 방법 : 문의 컬렉션의 스캔 된 문서의 현재의 총 수가, 우리의 목표는이 값을 확인하고 문서의 수가 가까울수록 반환 하였다.
- 밀리 : 현재 시간, 쿼리에 필요한 시간 (밀리 초).
- indexBounds : 현재 쿼리 지수 특정 사용.
() 힌트를 사용하여
MongoDB의 쿼리 최적화 프로그램은 일반적으로 아주 잘 작동하지만,하지만 당신은 또한 지정된 인덱스를 사용하는 MongoDB를 강제로 힌트를 사용할 수 있습니다.
이 방법은 일부 경우에 성능을 향상시킬 것이다. 컬렉션의 인덱스와 쿼리 필드를 두 개 이상 (일부 필드의 색인이있다) 실행합니다.
예를 들면 다음 쿼리는 쿼리에 성별과 _ 이름 인덱스 필드를 지정 사용
>db.users.find({gender:"M"},{user_name:1,_id:0}).hint({gender:1,user_name:1})
당신은 위의 쿼리를 구문 분석 설명 () 함수를 사용할 수 있습니다 :
>db.users.find({gender:"M"},{user_name:1,_id:0}).hint({gender:1,user_name:1}).explain()