Docs 菜单

Docs 主页开发应用程序MongoDB Manual

请参阅:基于插槽的查询执行引擎

在此页面上

  • 基于插槽的执行引擎的合格查询
  • 确定使用的查询引擎
  • 检查查询解释结果
  • 检查慢查询日志

5.1 版本中的新功能

为了查找并返回查询结果,MongoDB 使用以下查询引擎之一:

  • 经典查询引擎

  • 基于插槽的查询执行引擎,适用于从 MongoDB 5.1 开始的某些查询。

MongoDB 自动选择引擎以执行查询。您无法为特定查询手动指定引擎。

如果满足某些条件,MongoDB 可以使用基于插槽的查询执行引擎执行一部分查询。在大多数情况下,与经典查询引擎相比,基于插槽的执行引擎提供更高的性能和更低的 CPU 和内存成本。

MongoDB 使用经典引擎执行不适合基于插槽的查询执行引擎的查询。

MongoDB 针对每个查询确定使用基于槽的执行引擎的资格,并考虑对查询中存在的每个操作符和表达式的支持。例如,使用基于插槽的执行引擎的两个常见管道是具有 $group$lookup 阶段的聚合。然而,对基于槽的执行引擎的支持与版本相关且在不断变化中。

要查看查询是否使用基于插槽的执行引擎,请参阅确定使用哪个查询引擎一节。

可以使用几种方法确定是使用经典引擎还是基于插槽的执行引擎执行查询。

查询的解释结果因使用的查询引擎而异。例如,使用基于插槽的执行引擎执行的查询的解释结果包括 explain.queryPlanner.winningPlan.slotBasedPlan 字段。

有关查询引擎之间解释结果差异的更多信息,请参阅解释输出结构。

从 MongoDB 6.2 开始,慢操作日志消息包含 queryFramework 字段,指示哪个查询引擎执行了该查询:

  • queryFramework: "classic" 表示经典引擎完成该查询。

  • queryFramework: "sbe" 表示基于槽的查询执行引擎执行该查询。

要查看使用基于插槽的执行引擎的查询的示例日志消息,请参阅慢速操作

← 服务器会话