드라이버가 포함된 MongoDB
설명
db.collection.explain()다음 메서드에 대한 쿼리 계획 정보를 반환합니다.
mapReduce()에 대한 정보를 반환합니다.를 사용하려면
db.collection.explain()앞서 언급한 메서드 중 하나를 에db.collection.explain()추가합니다.db.collection.explain().<method(...)> 예를 들면 다음과 같습니다.
db.products.explain().remove( { category: "apparel" }, { justOne: true } ) 더 많은 예는 예시를 참조하세요. db.collection.explain().help()도 참조하세요.
매개변수
db.collection.explain() 메서드에는 다음과 같은 매개 변수가 있습니다.
Parameter | 유형 | 설명 |
|---|---|---|
| 문자열 | 선택 사항. 설명 출력의 상세도 모드를 지정합니다. 모드는
모드에 대한 자세한 내용은 상세 수준 모드를 참조하세요. |
참고
db.collection.explain() 기본값은 queryPlanner이며, 기본값이 allPlansExecution인 explain 명령과는 다릅니다.
필요한 액세스 권한
explain를 사용하려면 기본 명령을 실행 수 있는 권한이 있어야 합니다.
행동
참고
explain을 사용하면 기존의 모든 계획 캐시 항목이 무시되고 MongoDB 쿼리 플래너가 새 계획 캐시 항목을 만들 수 없습니다.
상세도 모드
의 동작과 반환되는 정보의 양은 db.collection.explain() verbosity 모드 에 따라 다릅니다.
기본값 으로 db.collection.explain()는 상세도 모드 에서 실행됩니다.queryPlanner
MongoDB 쿼리 옵티마이저 실행하여 평가 중인 작업에 대한 성공적인 계획을 선택합니다. db.collection.explain() 은(는) 평가된 queryPlanner 메서드에 대한 정보를 반환합니다.
MongoDB는 쿼리 옵티마이저를 실행하여 성공적인 계획을 선택하고, 성공적인 계획을 완료할 때까지 실행하고, 성공적인 계획의 실행을 설명하는 통계를 반환합니다.
쓰기 (write) 작업의 경우 는db.collection.explain() 수행될 업데이트 또는 삭제 작업에 대한 정보를 반환하지만 수정 사항을 데이터베이스 에 적용 하지는 않습니다.
db.collection.explain()는 평가된 queryPlanner executionStats 메서드에executionStats 대한 및 정보를 반환합니다. 그러나 는 거부된 계획에 대한 쿼리 실행 정보를 제공하지 않습니다.
MongoDB는 쿼리 옵티마이저를 실행하여 가장 적합한 계획을 선택하고 이를 실행하여 완료합니다. "allPlansExecution" 모드에서 MongoDB는 계획 선택 중에 캡처된 다른 후보 계획에 관한 통계뿐만 아니라 가장 적합한 계획의 실행을 설명하는 통계를 반환합니다.
쓰기 (write) 작업의 경우 는db.collection.explain() 수행될 업데이트 또는 삭제 작업에 대한 정보를 반환하지만 수정 사항을 데이터베이스 에 적용 하지는 않습니다.
db.collection.explain()는 평가된 메서드에 대한queryPlanner및executionStats정보를 반환합니다. executionStats에는 성공적인 계획에 대한 완료된 쿼리 실행 정보가 포함되어 있습니다.
쿼리 옵티마이저가 둘 이상의 계획을 고려한 경우, executionStats 정보에는 채택된 계획과 거부된 후보 계획 모두에 관하여 계획 선택 단계에서 캡처된 부분 실행 정보도 포함됩니다.
설명 및 쓰기 작업
쓰기 (write) 작업의 경우 는db.collection.explain() 수행될 쓰기 (write) 작업에 대한 정보를 반환하지만 실제로 데이터베이스 수정하지는 않습니다.
제한 사항
단계가 포함된 에 대해서는 explain db.collection.explain() executionStats allPlansExecution aggregation pipeline 모드 또는 모드 $out 에서 명령/ 을 실행 수 없습니다. 대신 다음 중 하나를 수행할 수 있습니다.
queryPlanner모드에서 설명 실행 또는
explain() 메커니즘
db.collection.explain() 메서드는 explain 명령을 래핑하며 를 실행 explain 데 선호되는 방법입니다.
db.collection.explain().find()는 와 유사하지만 다음과 같은 주요 차이점이 db.collection.find().explain() 있습니다.
db.collection.explain().find()구문을 사용하면 쿼리 수정자를 추가로 연결할 수 있습니다. 쿼리 수정자 목록은 db를 참조하세요. 컬렉션.explain().find().help().는
db.collection.find().explain()explain()쿼리 계획 에 대한 정보를 반환합니다.
는 메서드에db.collection.explain().aggregate() db.collection.aggregate() 설명 옵션을 전달하는 것과 같습니다.
help()
에서 db.collection.explain() 지원하는 작업 목록을 보려면 실행.
db.collection.explain().help()
db.collection.explain().find()는 쿼리 수정자를 연결할 수 있는 커서 반환합니다. 에서 지원하는 쿼리 수정자 목록과 커서 db.collection.explain().find() 관련 메서드를 보려면 실행.
db.collection.explain().find().help()
여러 수정자를 에 연결할 수 db.collection.explain().find() 있습니다. 예시 는 수정자로 find() 설명하기를 참조하세요.
출력
db.collection.explain() 작업은 다음과 관련된 정보를 반환할 수 있습니다.
explainVersion, 출력 형식 버전(예시:"1").command설명 중인 명령에 대한 자세한 정보를 제공합니다.queryPlanner는 쿼리 옵티마이저가 선택한 계획을 설명하고 거부된 계획을 나열합니다.executionStats성공적인 계획과 거부된 계획의 실행을 자세히 설명합니다.serverInfo이는 MongoDB 인스턴스에 대한 정보를 제공합니다.serverParameters내부 매개변수를 자세히 설명합니다.
다변성 모드(예: queryPlanner, executionStats, allPlansExecution)는 결과에 executionStats를 포함되는지 여부와 executionStats에 요금제 선택 중 캡처한 데이터가 포함되는지 여부를 결정합니다.
Explain 출력은 BSON 문서의 최대 중첩 깊이(중첩 수준 100단계)로 제한됩니다. 한도를 초과하는 Explain 출력은 잘립니다.
출력에 대한 자세한 내용은 Explain 결과 항목을 참조하세요.
예시
queryPlanner 모드
기본값 으로 db.collection.explain()는 상세도 모드 에서 실행됩니다."queryPlanner"
다음 예시 db.collection.explain() "queryPlanner" 에서는 count() 상세도 모드 에서 를 실행하여 지정된 작업에 대한 쿼리 계획 정보를 반환합니다.
db.products.explain().count( { quantity: { $gt: 50 } } )
executionStats 모드
다음 예시 db.collection.explain() "executionStats" 에서는 find() 상세도 모드 에서 를 실행하여 지정된 작업에 대한 쿼리 계획 및 실행 정보를 반환합니다.
db.products.explain("executionStats").find( { quantity: { $gt: 50 }, category: "apparel" } )
allPlansExecution 모드
다음 예시 에서는 "allPlansExecution" 상세도 모드 에서db.collection.explain()를 실행합니다. db.collection.explain()는 지정된findAndModify()연산에 대해 고려된 모든 계획에 대해queryPlanner및executionStats를 반환합니다.
참고
이 explain을 실행하면 데이터가 수정되지 않지만 업데이트 작업의 쿼리 술어가 실행됩니다. 후보 계획의 경우, MongoDB는 계획 선택 단계에서 캡처한 실행 정보를 반환합니다.
db.products.explain( "allPlansExecution" ).findAndModify( { query: { name: "Tom", state: "active", rating: { $gt: 10 } }, sort: { rating: 1 }, update: { $inc: { score: 1 } } } )
수정자를 find() 사용하여 설명
db.collection.explain().find() 구문을 사용하면 쿼리 수정자를 연결할 수 있습니다. 예시 들어, 다음 작업은 find() sort() 및 hint() 쿼리 수정자가 있는 메서드에 대한 정보를 제공합니다.
db.products.explain("executionStats").find( { quantity: { $gt: 50 }, category: "apparel" } ).sort( { quantity: -1 } ).hint( { category: 1, quantity: -1 } )
사용 가능한 쿼리 수정자 목록을 보려면 mongosh 에서 다음을 실행 .
db.collection.explain().find().help()