Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Planificador de consultas v3
La versión 3 del planificador de Amazon DocumentDB 8.0 admite 21 etapas de agregación, incluidas 6 etapas nuevas. Planner V3 incluye soporte incorporado para distintos comandos. Ofrece hasta el doble de mejora del rendimiento general con respecto a Planner v2 en Amazon DocumentDB 5.0. Todas las funciones y operadores nuevos de Amazon DocumentDB 8.0 son compatibles con Planner v3. Entre las nuevas etapas de agregación de Amazon DocumentDB 8.0 compatibles con Planner v3 se incluyen $replaceWith, $VectorSearch, $merge, $set, $unset y $bucket. Planner v3 también admite nuevas funciones y operadores en Amazon DocumentDB 8.0, como Collation, Views, $merge, $pow, $rand, $dateTrunc, $date y $date. ToParts FromParts
Temas
Requisitos previos
Los siguientes requisitos previos se aplican a la versión 3.0 del planificador:
La versión 3.0 de Planner está disponible en todos los países en los Regiones de AWS que está disponible la versión 8.0 del motor.
La versión 3.0 del planificador de consultas es el planificador de consultas predeterminado cuando se selecciona la versión 8.0 del motor.
Seleccionar la versión 3.0 del planificador como planificador de consultas predeterminado
Si cambió su planificador de consultas predeterminado en Amazon DocumentDB 8.0 y necesita volver al planificador v3, puede hacerlo desde la consola o la CLI:
Siga los pasos en Modificación de parámetros de clúster de Amazon DocumentDB para modificar el grupo de parámetros del clúster.
Para el parámetro titulado «plannerVersion», cambie el valor a 3.0 para indicar la versión 3.0 del planificador.
Seleccione Aplicar inmediatamente (si selecciona Aplicar al reiniciar, la selección no será válida hasta el siguiente reinicio del clúster).
Prácticas recomendadas
Para obtener los resultados esperados, utilice las siguientes prácticas recomendadas al aplicar la versión 3.0 del planificador:
En un clúster global, seleccione el mismo
plannerVersionvalor (1.0, 2.0 o 3.0) en los grupos de parámetros del clúster para ambas regiones. Ten en cuenta que seleccionar diferentes versiones del planificador en las regiones principales y secundarias puede provocar que el comportamiento y el rendimiento de las consultas sean inconsistentes.La actualización a la versión 3.0 del planificador durante un período de mantenimiento programado o durante períodos de tráfico reducido será lo menos molesto, ya que puede aumentar la tasa de errores si se cambia la versión del planificador cuando las cargas de trabajo se están ejecutando activamente.
Limitaciones
Las siguientes limitaciones se aplican a la versión 3.0 del planificador:
La versión 3.0 de Planner no es compatible con los clústeres elásticos, que recurrirán a la versión 1.0 de Planner.
Si bien Planner v1 permite el uso de «PlanHint» para garantizar que el optimizador de consultas seleccione un plan de consulta específico, Planner v3 no permite el uso de «PlanHint» y se basa en optimizaciones internas para elegir el mejor plan para una consulta determinada.
Mejoras en los operadores agregados y distintos
La versión 3.0 de Planner introduce mejoras en las etapas $aggregate y en el comando $distinct. Las siguientes son algunas de las mejoras más destacables.
El planificador adelanta las etapas de $match siempre que es posible, lo que reduce la cantidad de documentos procesados en las etapas posteriores.
//Planner v1 db.orders.aggregate([ { $project: { customerId: 1, orderDate: 1, totalAmount: 1 } }, { $match: { customerId: { $gt: 1000 } } } ]) // Planner v3 pulls up the match since customerId exists in original documents // Optimized internally as: db.orders.aggregate([ { $match: { customerId: { $gt: 1000 } } }, // Pulled up before project { $project: { customerId: 1, orderDate: 1, totalAmount: 1 } } ])El planificador combina automáticamente las etapas $lookup y $unwind cuando funcionan en el mismo campo, lo que reduce el procesamiento intermedio de datos y mejora el rendimiento.
Example query: //Planner v1 db.orders.aggregate([ { $lookup: { from: "products", localField: "productId", foreignField: "_id", as: "productInfo" } }, { $unwind: "$productInfo" }, { $project: { orderDate: 1, "productInfo.name": 1, "productInfo.price": 1 } } ]) // Planner version 3.0 optimizes this internally by coalescing the $lookup and $unwind stagesLa versión 3.0 de Planner presenta una nueva estrategia de ejecución de Distinct Scan que mejora significativamente el rendimiento de distintas operaciones en índices de cardinalidad bajos.
Example query: //// If there is a low cardinality index on "category", you may see a query plan like below db.explain().products.distinct("category") "queryPlanner" : { "plannerVersion" : 3, "namespace" : "db.products", "winningPlan" : { "stage" : "AGGREGATE", "inputStage" : { "stage" : "DISTINCT_SCAN", "inputStage" : { "stage" : "IXONLYSCAN", "indexName" : "category_1", "direction" : "forward" } } } }
Planifique los filtros de caché
La versión 3.0 de Planner admite los filtros de caché del plan, también denominados filtros de índice, que permiten restringir el conjunto de índices que el planificador considera para una forma de consulta específica. Los filtros se configuran con un comando de base de datos y se aplican en el servidor, de modo que, si se produce una regresión en las consultas, puede mitigarla sin modificar el código de la aplicación.
La versión 3.0 de Planner aplica filtros de caché de planes a más comandos que la versión 2.0 de Planner:
El
distinctcomando requiere la versión 3.0 del planificador.El
aggregatecomando requiere la versión 3.0 del planificador y la 8.0.2 de Amazon DocumentDB. Se aplica un filtro cuando la canalización lee la colección a través de una fase inicial.$matchUn filtro establecido en la colección extranjera de una
$graphLookupetapa$lookupo etapa controla el índice utilizado para escanear esa colección extranjera. Esto también requiere la versión 3.0 del planificador y la 8.0.2 de Amazon DocumentDB.
Para obtener más información sobre la referencia de comandos, las formas de consulta compatibles, los ejemplos prácticos y la forma en que los filtros interactúan con las sugerencias, consulte. Planificar filtros de caché
Posibles diferencias de comportamiento entre las versiones 1.0 y 3.0 del planificador y MongoDB
En algunos casos extremos, es posible que la versión 3.0 del planificador produzca resultados que difieran ligeramente de los de la versión 1.0 del planificador. En esta sección se describen algunos ejemplos de estas posibilidades.