请参阅:基于插槽的查询执行引擎
5.1 版本中的新功能。
为了查找并返回查询结果,MongoDB 使用以下查询引擎之一:
经典查询引擎
基于插槽的查询执行引擎,适用于从 MongoDB 5.1 开始的某些查询。
MongoDB 自动选择引擎以执行查询。您无法为特定查询手动指定引擎。
如果满足某些条件,MongoDB 可以使用基于插槽的查询执行引擎执行一部分查询。在大多数情况下,与经典查询引擎相比,基于插槽的执行引擎提供更高的性能和更低的 CPU 和内存成本。
MongoDB 使用经典引擎执行不适合基于插槽的查询执行引擎的查询。
基于插槽的执行引擎的合格查询
MongoDB 针对每个查询确定使用基于插槽的执行引擎的资格,并考虑对查询中存在的每个操作符和表达式的支持。例如,使用基于插槽的执行引擎的两个常见管道是具有 $group
或 $lookup
阶段的聚合。然而,对基于插槽的执行引擎的支持与版本相关且在不断变化中。
要查看查询是否使用了基于插槽的执行引擎,请参阅确定使用的是哪种查询引擎一节。
确定使用的查询引擎
可以使用几种方法确定是使用经典引擎还是基于插槽的执行引擎执行查询。
检查查询解释结果
查询的解释结果因使用的查询引擎而异。例如,使用基于插槽的执行引擎执行的查询的解释结果包括 explain.queryPlanner.winningPlan.slotBasedPlan
字段。
有关查询引擎之间解释结果差异的更多信息,请参阅解释输出结构。
检查慢查询日志
慢操作日志消息包含一个 queryFramework
字段,用于指示哪个查询引擎执行了查询:
queryFramework: "classic"
表示经典引擎已执行该查询。queryFramework: "sbe"
表示基于槽的查询执行引擎执行该查询。
要查看使用基于插槽的执行引擎的查询的示例日志消息,请参阅慢速操作。