Latest web development tutorials

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()