explain
¶的explain
命令提供以下命令的执行信息:aggregate
,
count
,distinct
,find
,
findAndModify
,delete
,和
update
。
尽管MongoDB提供了该explain
命令,但是运行的首选方法explain
是使用
db.collection.explain()
和cursor.explain()
帮助器。
该explain
命令具有以下语法:
该命令包含以下字段:
领域 | 类型 | 描述 |
---|---|---|
explain |
文献 | 一个文档,指定要为其返回执行信息的命令。有关特定命令文件的详细信息,请参见aggregate ,count ,
distinct ,find ,
findAndModify ,delete ,和update 。 |
verbosity |
串 | 可选的。一个字符串,指定运行方式 可能的模式是:
有关这些模式的更多信息,请参见行为说明。 |
的行为explain
和返回的信息量取决于verbosity
模式。
MongoDB运行查询优化器以选择获胜计划,执行获胜计划直至完成,并返回描述获胜计划执行情况的统计信息。
对于写操作,explain
返回有关更新或删除操作的信息会被执行,但并
没有修改应用到数据库。
explain
返回queryPlanner
和的
executionStats
信息,用于评估
<command>
。但是,executionStats
不提供被拒绝计划的查询执行信息。
默认情况下,explain
以"allPlansExecution"
详细模式运行
。
MongoDB运行查询优化器以选择中奖计划并执行中奖计划以完成。在"allPlansExecution"
模式下,MongoDB返回描述获胜计划执行情况的统计信息以及在计划选择期间捕获的其他候选计划的统计信息。
对于写操作,explain
返回有关更新或删除操作的信息会被执行,但并
没有修改应用到数据库。
explain
返回queryPlanner
和的
executionStats
信息,用于评估
<command>
。其中executionStats
包括中奖计划的
完整查询执行信息。
如果查询优化器考虑了多个计划,则
executionStats
信息还包括
在计划选择阶段为获胜和被拒绝的候选计划捕获的部分执行信息。
在MongoDB中4.2开始,你不能运行explain
命令/ db.collection.explain()
在executionStats
模式或allPlansExecution
一个模式包含阶段。相反,您可以:aggregation pipeline
$out
allPlansExecution
模式¶默认情况下,explain
以"allPlansExecution"
详细模式运行。以下explain
命令返回命令的
queryPlanner
和executionStats
对于所有考虑的计划update
:
注意
执行explain 不会修改数据,而是运行更新操作的查询谓词。对于候选计划,MongoDB返回在计划选择阶段捕获的执行信息 。
explain
操作可以返回有关以下内容的信息:
冗长模式(即queryPlanner
,executionStats
,
allPlansExecution
)确定结果是否包括
executionStats和是否executionStats包括期间捕获的数据计划选择。
有关输出的详细信息,请参见解释结果。