Docs Menu
Docs Home
/

Motor de ejecución de query basado en ranuras

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.

MongoDB selecciona automáticamente el motor para ejecutar la consulta. En versiones de MongoDB anteriores a 8.0, no se puede especificar manualmente un motor para una consulta específica. A partir de MongoDB 8.0, se puede usar la configuración de consultas para especificar un motor. Para más detalles, consulte 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.

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.

Para ver si su consulta utilizó el motor de ejecución basado en ranuras, consulte la SecciónDeterminar qué motor de consulta se utilizó.

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.

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.

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.

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.

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.

Volver

Sesiones de servidor

En esta página