설명합니다.
정의
explain
explain
명령은aggregate
,count
,distinct
,find
,findAndModify
,delete
,mapReduce
명령의 실행에 대한 정보를 제공합니다.update
.팁
mongosh
에서 이 명령은db.collection.explain()
및cursor.explain()
헬퍼 메서드를 통해서도 실행할 수 있습니다.헬퍼 메서드는
mongosh
사용자에게 편리하지만 데이터베이스 명령과 동일한 수준의 정보를 반환하지 못할 수 있습니다. 편의가 필요하지 않거나 추가 리턴 필드가 필요한 경우 데이터베이스 명령을 사용합니다.explain
명령의 구문은 다음과 같습니다.{ explain: <command>, verbosity: <string>, comment: <any> } 이 명령은 다음 필드를 사용합니다.
필드유형설명explain
문서verbosity
문자열comment
어떤선택 사항. 이 명령에 첨부할 사용자 제공 코멘트입니다. 설정되면 이 설명은 다음 위치에서 이 명령의 레코드와 함께 표시됩니다.
mongod 로그 메시지(
attr.command.cursor.comment
필드).데이터베이스 프로파일러 출력의
command.comment
필드에 있습니다.currentOp
{command.comment
5} 필드에 출력을 입력합니다.
댓글은 유효한 모든 BSON types (문자열, 정수, 객체, 배열 등)이 될 수 있습니다.
참고
comment
없이explain
을 지정하면explain
에 지정된 명령의 모든comment
를 상속합니다.
행동
상세도 모드
explain
의 동작과 반환되는 정보의 양은 verbosity
모드에 따라 달라집니다.
MongoDB는 쿼리 옵티마이저 프로그램을 실행하여 평가 중인 작업에 가장 적합한 계획을 선택합니다. explain
은 평가된 queryPlanner
에 대한 queryPlanner
정보를 반환합니다.
MongoDB는 쿼리 옵티마이저를 실행하여 성공적인 계획을 선택하고, 성공적인 계획을 완료할 때까지 실행하고, 성공적인 계획의 실행을 설명하는 통계를 반환합니다.
쓰기 작업의 경우 explain
는 수행 될 업데이트 또는 삭제 작업에 대한 정보를 반환하지만 데이터베이스에 수정 사항을 적용하지는 않습니다 .
explain
은(는) 평가된 <command>
에 대한 queryPlanner
및 executionStats
정보를 반환합니다. 그러나 executionStats
은(는) 거부된 계획에 대한 쿼리 실행 정보를 제공하지 않습니다.
기본적으로 explain
은 "allPlansExecution"
다변성 모드에서 실행됩니다.
MongoDB는 쿼리 옵티마이저를 실행하여 가장 적합한 계획을 선택하고 이를 실행하여 완료합니다. "allPlansExecution"
모드에서 MongoDB는 계획 선택 중에 캡처된 다른 후보 계획에 관한 통계뿐만 아니라 가장 적합한 계획의 실행을 설명하는 통계를 반환합니다.
쓰기 작업의 경우 explain
는 수행 될 업데이트 또는 삭제 작업에 대한 정보를 반환하지만 데이터베이스에 수정 사항을 적용하지는 않습니다 .
explain
은(는) 평가된 <command>
에 대한 queryPlanner
및 executionStats
정보를 반환합니다. executionStats
에는 성공 계획의 완료된 쿼리 실행 정보가 포함됩니다.
쿼리 옵티마이저가 둘 이상의 계획을 고려한 경우, executionStats
정보에는 채택된 계획과 거부된 후보 계획 모두에 관하여 계획 선택 단계에서 캡처된 부분 실행 정보도 포함됩니다.
설명 및 쓰기 작업
쓰기 연산의 경우 explain
명령은 수행될 쓰기 연산에 관한 정보를 반환하지만, 실제로 데이터베이스를 수정하지는 않습니다.
Stable API
Stable API V1은 explain
명령에 대해 다음과 같은 상세 모드를 지원합니다.
경고
MongoDB는 Stable API를 사용하는 경우에도 explain
명령의 특정 출력 형식을 보장하지 않습니다.
제한 사항
$out
단계가 포함된 aggregation pipeline
에 대해 executionStats
모드 또는 allPlansExecution
모드에서 explain
명령/db.collection.explain()
을 실행할 수 없습니다. 대신 다음 중 하나를 실행할 수 있습니다.
출력
explain
작업은 다음과 관련된 정보를 반환할 수 있습니다.
explainVersion
출력 형식 버전(예:"1"
),command
설명 중인 명령에 대한 자세한 정보를 제공합니다.queryPlanner
는 쿼리 옵티마이저가 선택한 계획을 설명하고 거부된 계획을 나열하고,executionStats
성공적인 계획과 거부된 계획의 실행을 자세히 설명하고,serverInfo
MongoDB 인스턴스에 대한 정보를 제공하는 [serverInfo]serverParameters
내부 매개변수를 자세히 설명합니다.
다변성 모드(예: queryPlanner
, executionStats
, allPlansExecution
)는 결과에 executionStats
를 포함되는지 여부와 executionStats
에 요금제 선택 중 캡처한 데이터가 포함되는지 여부를 결정합니다.
출력에 대한 자세한 내용은 Explain 결과 항목을 참조하세요.
예제
queryPlanner
모드
다음 explain
명령은 "queryPlanner"
다변성 모드에서 실행되어 count
명령에 대한 쿼리 계획 정보를 반환합니다.
db.runCommand( { explain: { count: "products", query: { quantity: { $gt: 50 } } }, verbosity: "queryPlanner" } )
executionStats
모드
다음 explain
작업은 "executionStats"
다변성 모드에서 실행되어 count
명령에 대한 쿼리 계획 및 실행 정보를 반환합니다.
db.runCommand( { explain: { count: "products", query: { quantity: { $gt: 50 } } }, verbosity: "executionStats" } )
allPlansExecution
모드
기본적으로 explain
(은)는 "allPlansExecution"
다변성 모드에서 실행됩니다. 다음 explain
명령은 update
명령에 대해 고려된 모든 계획에 대해 queryPlanner
및 executionStats
(을)를 반환합니다.
참고
이 explain을 실행하면 데이터가 수정되지 않지만 업데이트 작업의 쿼리 술어가 실행됩니다. 후보 계획의 경우, MongoDB는 계획 선택 단계에서 캡처한 실행 정보를 반환합니다.
db.runCommand( { explain: { update: "products", updates: [ { q: { quantity: 1057, category: "apparel" }, u: { $set: { reorder: true } } } ] } } )