Verwaltung von Aurora SQL Postgre-Abfrageplänen - Amazon Aurora

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.

Verwaltung von Aurora SQL Postgre-Abfrageplänen

Wenn die Abfrageplanverwaltung für Ihren Aurora SQL Postgre-DB-Cluster aktiviert ist, generiert und speichert der Optimierer Abfrageausführungspläne für jede SQL Anweisung, die er mehr als einmal verarbeitet. Der Status des zuerst generierten Plans einer verwalteten Anweisung wird vom Optimierer immer auf Approved festgelegt und in der dba_plans-Ansicht gespeichert.

Der Satz an genehmigten Plänen, der für eine verwaltete Anweisung gespeichert wird, wird als Plan-Baseline bezeichnet. Während der Ausführung Ihrer Anwendung generiert der Optimierer möglicherweise zusätzliche Pläne für verwaltete Anweisungen. Der Status zusätzlich erfasster Pläne wird vom Optimierer auf Unapproved festgelegt.

Später können Sie entscheiden, ob die Unapproved-Pläne ordnungsgemäß funktionieren und ihren Status bei Bedarf in Approved, Rejected oder Preferred ändern. Dazu verwenden Sie die Funktion apg_plan_mgmt.evolve_plan_baselines oder apg_plan_mgmt.set_plan_status.

Wenn der Optimierer einen Plan für eine SQL Anweisung generiert, speichert die Abfrageplanverwaltung den Plan in der Tabelle. apg_plan_mgmt.plans Datenbankbenutzer, denen die apg_plan_mgmt-Rolle zugewiesen wurde, können die Plandetails anzeigen, indem sie die apg_plan_mgmt.dba_plans-Ansicht abfragen. Die folgende Abfrage listet beispielsweise Details zu Plänen auf, die derzeit in der Ansicht für einen Aurora SQL Postgre-DB-Cluster angezeigt werden, der sich nicht in der Produktion befindet.

  • sql_hash— Ein Bezeichner für die SQL Anweisung, der der Hashwert für den normalisierten Text der Anweisung ist. SQL

  • plan_hash: Ein eindeutiger Bezeichner für den Plan, der eine Kombination aus dem sql_hash und einem Hash des Plans ist.

  • status: der Status des Plans Der Optimierer kann einen genehmigten Plan ausführen.

  • enabled: Gibt an, ob der Plan einsatzbereit ist (true) oder nicht (false).

  • plan_outline: Eine Darstellung des Plans, mit der der tatsächliche Ausführungsplan neu erstellt wird. Die Operatoren in der Baumstruktur werden den Operatoren in der EXPLAIN Ausgabe zugeordnet.

Die apg_plan_mgmt.dba_plans-Ansicht hat viele weitere Spalten, die alle Details des Plans enthalten, z. B. wann der Plan zuletzt verwendet wurde. Vollständige Details finden Sie unter Referenz für die Ansicht apg_plan_mgmt.dba_plans für Aurora Postgre -Compatible Edition SQL.

Normalisierung und Hash SQL

In der apg_plan_mgmt.dba_plans Ansicht können Sie eine verwaltete Anweisung anhand ihres SQL Hashwerts identifizieren. Der SQL Hash wird anhand einer normalisierten Darstellung der SQL Anweisung berechnet, bei der einige Unterschiede, wie z. B. Literalwerte, entfernt werden.

Bei der Normalisierung der einzelnen Anweisungen werden Leerzeichen und Groß- und Kleinschreibung beibehalten, sodass Sie den Kern der SQL Anweisung trotzdem lesen und verstehen können. SQL Durch die Normalisierung werden die folgenden Elemente entfernt oder ersetzt.

  • Führende Blockkommentare

  • Das EXPLAIN Schlüsselwort und die Optionen und EXPLAIN EXPLAIN ANALYZE

  • Leerzeichen am Zeilenende

  • Alle Literale

Sehen Sie sich die folgende Anweisung als Beispiel an.

/*Leading comment*/ EXPLAIN SELECT /* Query 1 */ * FROM t WHERE x > 7 AND y = 1;

Die Verwaltung des Abfrageplans normalisiert diese Anweisung wie folgt:

SELECT /* Query 1 */ * FROM t WHERE x > CONST AND y = CONST;

Durch die Normalisierung kann derselbe SQL Hash für ähnliche SQL Anweisungen verwendet werden, die sich möglicherweise nur in ihren Literalwerten oder Parameterwerten unterscheiden. Mit anderen Worten, es können mehrere Pläne für denselben SQL Hash existieren, wobei ein anderer Plan unter verschiedenen Bedingungen optimal ist.

Anmerkung

Eine einzelne SQL Anweisung, die mit unterschiedlichen Schemas verwendet wird, hat unterschiedliche Pläne, da sie zur Laufzeit an das spezifische Schema gebunden ist. Der Planer verwendet die Statistiken für die Schemabindung, um den optimalen Plan auszuwählen.

Weitere Informationen dazu, wie der Optimierer den Plan auswählt, finden Sie unter Verwenden von Aurora PostgreSQL-Plänen. In diesem Abschnitt erfahren Sie, wie Sie einen Plan mit EXPLAIN und EXPLAIN ANALYZE in der Vorschau anzeigen, bevor er tatsächlich verwendet wird. Details hierzu finden Sie unter Analysieren des vom Optimierer ausgewählten Plans. Ein Abbildung, die den Prozess zur Auswahl eines Plans beschreibt, finden Sie unter Erfahren Sie, wie der Optimierer bestimmt, welche Pläne ausgeführt werden..