Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
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 query clásico

  • El motor de ejecución de consultas basado en slots, que está disponible para algunas consultas a partir de MongoDB 5.1.

El motor de ejecución de queries 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 query, lo que permite una ejecución más eficiente.

MongoDB selecciona automáticamente el motor para ejecutar la query. En las versiones de MongoDB anteriores a 8.0, no se puede especificar manualmente un motor para una query en particular. A partir de MongoDB 8.0, puedes utilizar la configuración de consultas para especificar un motor para las consultas. Para obtener detalles, consulte setQuerySettings.

MongoDB puede utilizar el motor de ejecución de consultas basado en slots 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 proporciona un mejor rendimiento y menores costos de CPU y memoria en comparación con el motor de query clásico.

MongoDB utiliza el motor clásico para queries que no son elegibles para el motor de ejecución de queries basado en slots.

MongoDB determina la elegibilidad para usar el motor de ejecución basado en ranuras para cada query, y considera el soporte para cada operador y expresión presente en la query. Por ejemplo, dos pipelines comunes que utilizan un motor de ejecución basado en slots son las agregaciones con $group o $lookup etapas. Sin embargo, el soporte para el motor de ejecución basado en ranuras depende de la versión y está cambiando activamente.

Para ver si tu consulta utilizó el motor de ejecución basado en slots, consulta el Sección Determinar cuál motor de consultas 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.

Existen varias maneras de determinar si se utilizó el motor clásico o el motor de ejecución basado en slots para ejecutar una query.

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 más información sobre las diferencias en los resultados de explicación entre los motores de query, consulta Estructura de Salida de Explicación.

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 ejemplo de mensaje de registro de una consulta que utilizó el motor de ejecución basado en slots, consulta Operación lenta.

Volver

Sesiones de servidor

En esta página