explain
在本页面
Definition
explain
- 3.0 版中的新功能。
explain命令提供有关以下命令执行的信息:count,distinct,group,find,findAndModify,delete和update。
尽管 MongoDB 提供了explain命令,但是运行explain的首选方法是使用db.collection.explain()和cursor.explain()帮助器。
explain命令具有以下语法:
{
explain: <command>,
verbosity: <string>
}
该命令包含以下字段:
Field | Type | Description |
---|---|---|
explain |
document | 一个文档,指定要为其返回执行信息的命令。有关特定命令文档的详细信息,请参见count,distinct,group,find,findAndModify,delete和update。 |
verbosity |
string | 可选的。一个字符串,指定运行explain的模式。该模式影响explain的行为并确定要返回的信息量。 |
可能的模式是:"queryPlanner","executionStats"和"allPlansExecution"。有关这些模式的更多信息,请参见explain behavior。
默认情况下,explain以"allPlansExecution"模式运行。
Behavior
explain的行为和返回的信息量取决于verbosity
模式。
queryPlanner Mode
MongoDB 运行query optimizer来为评估中的操作选择胜出计划。 explain返回评估的<command>
的queryPlanner信息。
executionStats Mode
MongoDB 运行query optimizer选择中奖计划,执行中奖计划直至完成,并返回描述中奖计划执行情况的统计信息。
对于写操作,explain返回有关将要执行的更新或删除操作的信息,但不会*将修改应用于数据库。
explain返回评估的<command>
的queryPlanner和executionStats信息。但是,executionStats不提供被拒绝计划的查询执行信息。
allPlansExecution Mode
默认情况下,explain以"allPlansExecution"
详细模式运行。
MongoDB 运行query optimizer选择中奖计划,并执行中奖计划直至完成。在"allPlansExecution"
模式下,MongoDB 返回描述获胜计划执行情况的统计信息以及在plan selection期间捕获的其他候选计划的统计信息。
对于写操作,explain返回有关将要执行的更新或删除操作的信息,但不会*将修改应用于数据库。
explain返回评估的<command>
的queryPlanner和executionStats信息。 executionStats包括中奖计划的已完成查询执行信息。
如果查询优化器考虑了多个计划,则executionStats信息还包括在计划选择阶段期间针对获胜和被拒绝的候选计划捕获的* partial *执行信息。
Examples
queryPlanner Mode
以下explain命令以"queryPlanner"详细模式运行,以返回count命令的查询计划信息:
db.runCommand(
{
explain: { count: "products", query: { quantity: { $gt: 50 } } },
verbosity: "queryPlanner"
}
)
executionStats Mode
以下explain操作以"executionStats"详细模式运行,以返回count命令的查询计划和执行信息:
db.runCommand(
{
explain: { count: "products", query: { quantity: { $gt: 50 } } },
verbosity: "executionStats"
}
)
allPlansExecution Mode
默认情况下,explain以"allPlansExecution"详细模式运行。以下explain命令针对update命令的所有已考虑计划返回queryPlanner和executionStats:
Note
该 explain 的执行将不会修改数据,但会运行更新操作的查询谓词。对于候选计划,MongoDB 返回在计划选择阶段期间捕获的执行信息。
db.runCommand(
{
explain: {
update: "products",
updates: [
{
q: { quantity: 1057, category: "apparel" },
u: { $set: { reorder: true } }
}
]
}
}
)
Output
explain操作可以返回有关以下内容的信息:
-
queryPlanner,其中详细说明了query optimizer选择的计划并列出了被拒绝的计划;
-
executionStats,详细说明了获胜计划和拒绝计划的执行;和
-
serverInfo,提供有关 MongoDB 实例的信息。
详细模式(即queryPlanner
,executionStats
,allPlansExecution
)确定结果是否包括executionStats以及executionStats是否包括在plan selection期间捕获的数据。
有关输出的详细信息,请参见Explain Results。