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 Aggregationsstufen, darunter 6 neue Stufen. Planner V3 bietet integrierte Unterstützung für verschiedene 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, $date, $date. ToParts FromParts
Topics
Voraussetzungen
Die folgenden Voraussetzungen gelten für die Planner-Version 3.0:
Planner Version 3.0 ist überall dort verfügbar AWS-Regionen , wo 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 unterÄnderung der Amazon DocumentDB-Cluster-Parameter, um die Parametergruppe Ihres Clusters zu ändern.
Ändern Sie den Wert für den Parameter mit dem Titel „PlannerVersion“ auf 3.0, was auf die Planerversion 3.0 hinweist.
Wählen Sie Sofort anwenden (wenn Sie Beim Neustart anwenden auswählen, wird die Auswahl bis zum nächsten Neustart des Clusters unwirksam).
Bewährte Methoden
Verwenden Sie bei der Anwendung von Planner Version 3.0 die folgenden bewährten Methoden, um die erwarteten Ergebnisse zu erzielen:
Wählen Sie in einem globalen Cluster den gleichen
plannerVersionWert (1,0 oder 2,0 oder 3,0) in den Cluster-Parametergruppen für beide Regionen aus. Beachten Sie, dass die Auswahl unterschiedlicher Planerversionen in primären und sekundären Regionen zu einem inkonsistenten Abfrageverhalten und einer inkonsistenten Leistung führen kann.Die Aktualisierung auf Planner-Version 3.0 während eines geplanten Wartungsfensters oder in Zeiten mit reduziertem Verkehrsaufkommen 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 elastischen Clustern nicht unterstützt. Diese werden auf Planner-Version 1.0 zurückgreifen.
Während Planner v1 die Verwendung von 'PlanHint' ermöglicht, um sicherzustellen, dass ein bestimmter Abfrageplan vom Abfrageoptimierer ausgewählt wird, erlaubt Planner v3 die Verwendung von 'PlanHint' nicht und stützt sich auf interne Optimierungen, um den besten Plan für die angegebene Abfrage auszuwählen.
Verbesserungen an aggregierten und unterschiedlichen Operatoren
Planner Version 3.0 führt Verbesserungen in allen $aggregate-Stufen und beim $distinct-Befehl ein. Im Folgenden sind einige der bemerkenswertesten Verbesserungen aufgeführt..
Der Planer verschiebt $match-Phasen, wenn möglich, früher in der Pipeline, wodurch die Anzahl der Dokumente reduziert wird, die in den 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 Schritte $lookup und $unwind, wenn sie dasselbe Feld bearbeiten. Dadurch werden zwischengeschaltete Datenverarbeitungsvorgänge 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 stagesIn Planner Version 3.0 wird eine neue Strategie zur Ausführung von Distinct Scans eingeführt, die die Leistung bei unterschiedlichen 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" } } } }
Cache-Filter planen
Planner Version 3.0 unterstützt Plan-Cache-Filter, auch Indexfilter genannt, mit denen Sie die Gruppe von Indizes einschränken können, die der Planer für eine bestimmte Abfrageform berücksichtigt. Filter werden mit einem Datenbankbefehl festgelegt und auf den Server angewendet. Wenn Sie also eine Abfrageregression feststellen, können Sie diese abmildern, ohne Ihren Anwendungscode zu ändern.
Planner Version 3.0 wendet Plan-Cache-Filter auf mehr Befehle an als Planner Version 2.0:
Für den
distinctBefehl ist Planner Version 3.0 erforderlich.Für den
aggregateBefehl sind Planner Version 3.0 und Amazon DocumentDB 8.0.2 erforderlich. Ein Filter wird angewendet, wenn die Pipeline die Sammlung durch eine führende$matchPhase liest.Ein Filter, der für die ausländische Sammlung einer
$lookup$graphLookupOR-Stufe gesetzt wird, steuert den Index, der zum Scannen dieser fremden Sammlung verwendet wird. Dazu sind auch Planner Version 3.0 und Amazon DocumentDB 8.0.2 erforderlich.
Weitere Informationen zur Befehlsreferenz, zu unterstützten Abfrageformen, funktionierenden Beispielen und zur Interaktion von Filtern mit Hinweisen finden Sie unter. Cache-Filter planen
Mögliche Verhaltensunterschiede zwischen Planner-Version 1.0, 3.0 und MongoDB
In einigen Randfällen ist es möglich, dass Planner-Version 3.0 Ergebnisse liefert, die leicht von der Planer-Version 1.0 abweichen. In diesem Abschnitt werden einige Beispiele für diese Möglichkeiten vorgestellt.