Nuevo en la versión 5.1.
Para buscar y devolver resultados de queries, MongoDB emplea uno de los siguientes motores de consulta:
El motor de consulta clásico
El motor de ejecución de consultas basado en ranuras, que está disponible para algunas consultas a partir de MongoDB 5.1.
El motor de ejecución de consultas basado en ranuras utiliza un modelo "basado en ranuras" para evitar la materialización de resultados intermedios durante el tiempo de ejecución de la consulta, lo que permite una ejecución más eficiente.
MongoDB automatically selects the engine to execute the query. In MongoDB versions earlier than 8.0, you cannot manually specify an engine for a particular query. Starting in MongoDB 8.0, you can use query settings to specify an engine for queries. For details, see
setQuerySettings.
MongoDB puede usar el motor de ejecución de consultas basado en ranuras para un subconjunto de consultas, siempre que se cumplan ciertas condiciones. En la mayoría de los casos, el motor de ejecución basado en ranuras ofrece un mejor rendimiento y menores costos de CPU y memoria en comparación con el motor de consultas clásico.
MongoDB utiliza el motor clásico para consultas que no son elegibles para el motor de ejecución de consultas basado en ranuras.
Consultas elegibles para el motor de ejecución basado en ranuras
MongoDB determina la elegibilidad para usar el motor de ejecución basado en ranuras por consulta y considera la compatibilidad con cada operador y expresión presente en la consulta. Por ejemplo, dos pipelines comunes que usan el motor de ejecución basado en ranuras son agregaciones con etapas o. Sin embargo, la compatibilidad con el motor de ejecución basado en ranuras depende de la versión y está en constante $group $lookup cambio.
To see whether your query used the slot-based execution engine, refer to the Determine which Query Engine was Used section.
Importante
MongoDB desactiva automáticamente el motor de ejecución basado en ranuras en colecciones con un índice que tiene un prefijo de ruta encriptada de una ruta no encriptada, donde ambas rutas están en el índice.
Procesamiento de bloques
A partir de la versión 8.0, MongoDB puede ejecutar ciertas consultas de series de tiempo mediante procesamiento por bloques. Esta mejora del rendimiento procesa las consultas en "bloques" de datos, en lugar de en valores individuales. El procesamiento de bloques mejora la velocidad de ejecución de las consultas y el rendimiento cuando se trabaja con colecciones de series de tiempo.
Para obtener más información, consulte Consulta de datos de series de tiempo.
Determinar qué motor de consulta se utilizó
Hay algunas formas de determinar si se utilizó el motor clásico o el motor de ejecución basado en ranuras para ejecutar una consulta.
Consulta de verificación Explicar resultados
Los resultados de explicación de una consulta varían según el motor de consulta utilizado. Por ejemplo, los resultados de explicación de las consultas ejecutadas con el motor de ejecución basado en ranuras incluyen el explain.queryPlanner.winningPlan.slotBasedPlan campo.
Para obtener más información sobre las diferencias en los resultados de explicación entre motores de consulta, consulte Estructura de salida de Explain.
Comprobar registros de consultas lentas
Los mensajes de registro de operaciones lentas incluyen un campo queryFramework que indica qué motor de query ejecutó el query:
queryFramework: "classic"indica que el motor clásico ejecutó el query.queryFramework: "sbe"indica que el motor de ejecución de query basado en ranuras ejecutó el query.
Para ver un mensaje de registro de ejemplo para una consulta que utilizó el motor de ejecución basado en ranuras, consulte Operación lenta.