Erfassung von Aurora PostgreSQL-Ausführungsplä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.

Erfassung von Aurora PostgreSQL-Ausführungsplänen

Die Aurora-PostgreSQL-Abfrageplanverwaltung bietet zwei verschiedene Modi zum Erfassen von Abfrageausführungsplänen: automatisch oder manuell. Sie wählen den Modus aus, indem Sie den Wert apg_plan_mgmt.capture_plans_baselines auf automatic oder manual festlegen. Sie können Ausführungspläne für bestimmte SQL-Anweisungen mit der manuellen Planerfassung erfassen. Alternativ können Sie mit der automatischen Planerfassung alle (oder nur die langsamsten) Pläne erfassen, die bei laufender Anwendung mindestens zwei Mal ausgeführt werden.

Bei der Planerfassung wird der Status des zuerst erfassten Plans einer verwalteten Anweisung vom Optimierer auf gesetz approved. Der Status zusätzlich hinzugefügter Pläne, die für eine verwaltete Anweisung erfasst wurden, wird vom Optimierer auf festgeleg unapproved. Gelegentlich wird jedoch mehr als ein Plan möglicherweise mit dem Status approved gespeichert. Dies kann passieren, wenn für eine Anweisung mehrere Pläne gleichzeitig erstellt werden und der erste Plan für die Anweisung noch nicht übermittelt wurde.

Legen Sie den Parameter dba_plans in der Parametergruppe der DB-Instance-Ebene fest, um die maximale Anzahl an Plänen zu bestimmen, die in der apg_plan_mgmt.max_plans-Ansicht erfasst und gespeichert werden können. Damit der Parameter apg_plan_mgmt.max_plans geändert werden und ein neuer Wert übernommen werden kann, muss die DB-Instance neu gestartet werden. Informieren Sie sich über den Parameter apg_plan_mgmt.max_plans, um weitere Informationen hierzu zu erhalten.

Manuelles Erfassen von Plänen für bestimmte SQL-Anweisungen

Wenn Sie einen bekannten Satz an SQL-Anweisungen verwalten, verschieben Sie die Anweisungen in eine SQL-Skriptdatei und erfassen Sie anschließend Pläne manuell. Im folgenden psql-Beispiel wird gezeigt, wie Abfragepläne für einen Satz an SQL-Anweisungen manuell erfasst werden.

psql> SET apg_plan_mgmt.capture_plan_baselines = manual; psql> \i my-statements.sql psql> SET apg_plan_mgmt.capture_plan_baselines = off;

Nachdem für jede SQL-Anweisung ein Plan erfasst wurde, fügt der Optimierer der apg_plan_mgmt.dba_plans-Ansicht eine neue Zeile hinzu.

Wir empfehlen, dass Sie in der SQL-Skriptdatei entweder EXPLAN- oder EXPLAIN EXECUTE-Anweisungen verwenden. Stellen Sie sicher, dass eine ausreichende Auswahl an Parameterwerten einzukalkulieren, damit alle relevanten Pläne erfasst werden.

Falls Sie einen besseren Plan als den Minimalkostenplan des Optimierers nutzen möchten, können Sie den Optimierer zur Verwendung dieses bevorzugten Plans zwingen, indem Sie einen oder mehrere Optimierungshinweise angeben. Geben Sie hierzu mindestens einen Optimierungshinweis an. Weitere Informationen finden Sie unter Reparieren von Plänen mit pg_hint_plan. Unter unapproved erfahren Sie, wie Sie die Performance der approved- und Auswerten der Performance von Plänen-Pläne vergleichen und diese genehmigen, ablehnen oder löschen.

Automatisches Erfassen von Plänen

Verwenden Sie die automatische Planerfassung u. a. in den folgenden Fällen:

  • Sie wissen nicht, welche spezifischen SQL-Anweisungen Sie verwalten möchten.

  • Sie müssen hunderte oder tausende von SQL-Anweisungen verwalten.

  • Ihre Anwendung verwendet eine Client-API. Beispielsweise verwendet JDBC unbenannte vorbereitete Anweisungen oder Anweisungen in großen Mengen, die in psql nicht wiedergegeben werden können.

So erfassen Sie Pläne automatisch:
  1. Aktivieren Sie die automatische Planerfassung, indem Sie in der Parametergruppe der DB-Instance-Ebene apg_plan_mgmt.capture_plan_baselines auf automatic setzen. Weitere Informationen finden Sie unter Ändern von Parametern in einer DB-Parametergruppe.

  2. Starten Sie Ihre DB-Instance neu.

  3. Während der Ausführung der Anwendung erfasst der Optimierer Pläne für alle SQL-Anweisungen, die mindestens zwei Mal ausgeführt werden.

    Wenn die Anwendung mit den standardmäßigen Parametereinstellungen für die Abfrageplanverwaltung ausgeführt wird, erfasst der Optimierer Pläne für alle SQL-Anweisungen, die mindestens zwei Mal ausgeführt werden. Das Erfassen aller Pläne mit den Standardeinstellungen ist mit einem sehr geringen Laufzeitaufwand verbunden und kann in der Produktivumgebung erfolgen.

So deaktivieren Sie die automatische Planerfassung:
  • Setzen Sie in der Parametergruppe der DB-Instance-Ebene den Parameter apg_plan_mgmt.capture_plan_baselines auf off.

Erfahren Sie unter , wie Sie die Performance der nicht genehmigten Pläne messen und diese Pläne genehmigen, ablehnen oder lösche Auswerten der Performance von Plänen.