Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Abfrageplaner v3
Planner Version 3 in Amazon DocumentDB 8.0 unterstützt 21 Aggregationsphasen, darunter 6 neue Phasen. Planner V3 bietet integrierte Unterstützung für unterschiedliche Befehle. Es bietet eine bis zu 2-fache Gesamtleistungsverbesserung gegenüber Planner v2 in Amazon DocumentDB 5.0. Alle neuen Funktionen und Operatoren in Amazon DocumentDB 8.0 sind mit Planner v3 kompatibel. Zu den neuen Aggregationsstufen in Amazon DocumentDB 8.0, die von Planner v3 unterstützt werden, gehören $replaceWith, $vectorSearch, $merge, $set, $unset, $bucket. Planner v3 unterstützt auch neue Funktionen und Operatoren in Amazon DocumentDB 8.0, darunter Collation, Views, $merge, $pow, $rand, $DateTrunc, $, $. dateToParts dateFromParts
Topics
Voraussetzungen
Die folgenden Voraussetzungen gelten für Planner Version 3.0:
Planner Version 3.0 ist in allen Regionen verfügbar, in denen Engine-Version 8.0 verfügbar ist.
Planner Version 3.0 ist der Standard-Abfrageplaner, wenn Engine-Version 8.0 ausgewählt ist.
Auswahl der Planner-Version 3.0 als Standard-Abfrageplaner
Wenn Sie Ihren Standard-Abfrageplaner in Amazon DocumentDB 8.0 geändert haben und zu Planner v3 zurückkehren müssen, können Sie dies über die Konsole oder CLI tun:
Folgen Sie den Schritten unterAmazon DocumentDB-Cluster-Parameter ändern, um die Parametergruppe Ihres Clusters zu ändern.
Ändern Sie für den Parameter mit dem Titel 'PlannerVersion' den Wert auf 3.0, was Planner-Version 3.0 bedeutet.
Wählen Sie Sofort anwenden (wenn Sie Beim Neustart anwenden auswählen, wird die Auswahl bis zum nächsten Neustart des Clusters unwirksam).
Best Practices
Verwenden Sie die folgenden bewährten Methoden, um die erwarteten Ergebnisse zu erzielen, wenn Sie Planner Version 3.0 anwenden:
Wählen Sie in einem globalen Cluster denselben
plannerVersionWert (1,0 oder 2,0 oder 3,0) in den Cluster-Parametergruppen für beide Regionen aus. Beachten Sie, dass die Auswahl verschiedener Planner-Versionen in primären und sekundären Regionen zu inkonsistentem Abfrageverhalten und inkonsistenter Leistung führen kann.Die Aktualisierung auf Planner Version 3.0 während eines geplanten Wartungsfensters oder in Zeiten mit reduziertem Datenverkehr ist am wenigsten störend, da es zu erhöhten Fehlerraten kommen kann, wenn die Planner-Version geändert wird, während Workloads aktiv ausgeführt werden.
Einschränkungen
Die folgenden Einschränkungen gelten für Planner Version 3.0:
Planner Version 3.0 wird in Elastic Clustern nicht unterstützt, da hier auf Planner Version 1.0 zurückgegriffen wird.
Planner v1 ermöglicht zwar die Verwendung von 'PlanHint', um sicherzustellen, dass ein bestimmter Abfrageplan vom Abfrageoptimierer ausgewählt wird, Planner v3 erlaubt jedoch nicht die Verwendung von 'PlanHint' und stützt sich auf interne Optimierungen, um den besten Plan für die jeweilige Abfrage auszuwählen.
Verbesserungen an und Operatoren aggregatedistinct
Planner Version 3.0 bietet Verbesserungen in den Stufen $aggregate und $distinct. Im Folgenden sind einige der bemerkenswertesten Verbesserungen aufgeführt..
Der Planer verschiebt die $match-Phasen nach Möglichkeit früher in der Pipeline und reduziert so die Anzahl der Dokumente, die in nachfolgenden Phasen verarbeitet werden.
//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 } } ])Der Planer kombiniert automatisch die Phasen $lookup und $unwind, wenn sie sich auf dasselbe Feld beziehen. Dadurch wird die zwischenzeitliche Datenverarbeitung reduziert und die Leistung verbessert.
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 stagesPlanner Version 3.0 führt eine neue Ausführungsstrategie für Distinct Scan ein, die die Leistung bestimmter Operationen mit Indizes mit niedriger Kardinalität erheblich verbessert.
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" } } } }
Mögliche Verhaltensunterschiede zwischen Planner Version 1.0, 3.0 und MongoDB
In einigen Ausnahmefällen ist es möglich, dass Planner Version 3.0 zu Ergebnissen führt, die leicht von Planner Version 1.0 abweichen. In diesem Abschnitt werden einige Beispiele für diese Möglichkeiten beschrieben.