文档菜单
文档首页
/
MongoDB 手册
/

基于插槽的查询执行引擎

在本页中

  • 适用于基于插槽执行引擎的查询
  • 块处理
  • 确定使用了哪个查询引擎
  • 检查查询解释结果
  • 检查慢查询日志

版本5.1.

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

  • 经典查询引擎

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

MongoDB 会自动选择执行查询的引擎。在 MongoDB 8.0 之前的版本中,您无法手动为特定查询指定引擎。从 MongoDB 8.0 开始,您可以使用查询设置来指定查询的引擎。有关详细信息,请参阅setQuerySettings.

在满足某些条件的情况下,MongoDB 可以使用基于插槽的查询执行引擎对查询子集进行处理。在大多数情况下,与经典查询引擎相比,基于插槽的执行引擎提供了改进的性能、更低的 CPU 和内存成本。

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

MongoDB 根据每个查询确定使用基于插槽的执行引擎的资格,并考虑查询中每个运算符和表达式的支持情况。例如,使用基于插槽的执行引擎的两个常见管道是带有 $group$lookup 阶段的聚合。但是,对基于插槽的执行引擎的支持是版本特定的,并且正在积极变化。

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

从版本 8.0 开始,MongoDB 可以使用块处理执行某些时间序列查询。这种性能改进通过处理数据“块”而不是单个值来执行查询。块处理提高了处理时间序列集合时查询执行速度和吞吐量。

了解更多信息,请参阅查询时间序列数据。

有几种方法可以确定是否使用了经典引擎或基于槽的执行引擎来执行查询。

查询的解释结果根据使用的查询引擎而有所不同。例如,使用基于槽的执行引擎执行的查询的解释结果包括 explain.queryPlanner.winningPlan.slotBasedPlan 字段。

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

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

  • queryFramework: "classic" 表示经典引擎执行了查询。

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

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

返回

服务器会话