Funktionsreferenz für die 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.

Funktionsreferenz für die Verwaltung von Aurora SQL Postgre-Abfrageplänen

Die Erweiterung apg_plan_mgmt stellt die folgenden Funktionen bereit:

apg_plan_mgmt.copy_outline

Kopiert einen bestimmten SQL Plan-Hash und eine Plangliederung in einen SQL Zielplan-Hash und eine Gliederung, wodurch der Plan-Hash und die Gliederung des Ziels überschrieben werden. Diese Funktion ist in apg_plan_mgmt 2.3 und höheren Versionen verfügbar.

Syntax

apg_plan_mgmt.copy_outline( source_sql_hash, source_plan_hash, target_sql_hash, target_plan_hash, force_update_target_plan_hash )
Rückgabewert

Gibt 0 zurück, wenn das Kopieren erfolgreich ist. Löst Ausnahmen bei ungültigen Eingaben aus.

Parameter

Parameter Beschreibung
source_sql_hash Die sql_hash-ID, die mit plan_hash verknüpft ist, um sie in die Zielabfrage zu kopieren.
source_plan_hash Die plan_hash-ID, die in die Zielabfrage kopiert werden soll.
target_sql_hash Die sql_hash-ID der Abfrage, die mit dem Hash und der Gliederung des Quellplans aktualisiert werden soll.
target_plan_hash Die plan_hash-ID der Abfrage, die mit dem Hash und der Gliederung des Quellplans aktualisiert werden soll.
force_update_target_plan_hash (Optional) Die target_plan_hash ID der Abfrage wird aktualisiert, auch wenn der Quellplan für nicht reproduzierbar ist. target_sql_hash Wenn sie auf true gesetzt ist, kann die Funktion verwendet werden, um Pläne schemaübergreifend zu kopieren, bei denen die Namen und Spalten der Beziehungen konsistent sind.

Nutzungshinweise

Mit dieser Funktion können Sie einen Plan-Hash und eine Plangliederung kopieren, die Hinweise auf andere, ähnliche Anweisungen verwendet, und Ihnen so die Verwendung von Inline-Hinweisanweisungen bei jedem Vorkommen in den Zielanweisungen erspart. Wenn die aktualisierte Zielabfrage zu einem ungültigen Plan führt, löst diese Funktion einen Fehler aus und macht den Aktualisierungsversuch rückgängig.

apg_plan_mgmt.delete_plan

Löschen Sie einen verwalteten Plan.

Syntax

apg_plan_mgmt.delete_plan( sql_hash, plan_hash )
Rückgabewert

Gibt bei erfolgreichen Löschvorgängen „0“, bei gescheiterten Löschvorgängen „-1“ zurück.

Parameter

Parameter Beschreibung
sql_hash Die sql_hash ID der verwalteten SQL Anweisung des Plans.
plan_hash Die plan_hash-ID des verwalteten Plans.

apg_plan_mgmt.evolve_plan_baselines

Dieser Parameter überprüft, ob ein bereits genehmigter Plan oder ein vom Optimierer erkannter Minimalkostenplan schneller ist.

Syntax

apg_plan_mgmt.evolve_plan_baselines( sql_hash, plan_hash, min_speedup_factor, action )

Rückgabewert

Die Anzahl der Pläne, die nicht schneller als der beste genehmigte Plan waren.

Parameter

Parameter Beschreibung
sql_hash Die sql_hash ID des verwalteten SQL Kontoauszugs des Plans.
plan_hash Die plan_hash-ID des verwalteten Plans. NULLDamit sind alle Pläne gemeint, die denselben sql_hash ID-Wert haben.
min_speedup_factor

Der Mindestbeschleunigungsfaktor kann angeben, um wie viel schneller ein Plan im Vergleich zum besten der bereits genehmigten Pläne sein muss, um genehmigt zu werden. Alternativ kann dieser Faktor auch angeben, um wie viel langsamer ein Plan sein muss, um abgelehnt oder deaktiviert zu werden.

Dieser Wert ist ein positiver Gleitkommawert.

action

Bezeichnet die Aktion, die von der Funktion ausgeführt wird. Im Folgenden sind Beispiele für gültige Werte aufgeführt. Die Groß-/Kleinschreibung muss nicht beachtet werden.

  • 'disable' – Deaktiviert alle übereinstimmenden Pläne, die die Kriterien des Mindestbeschleunigungsfaktors nicht erfüllen.

  • 'approve' – Aktiviert alle übereinstimmenden Pläne, die die Kriterien des Mindestbeschleunigungsfaktors erfüllen, und setzt ihren Status auf approved.

  • 'reject' – Setzt den Status aller übereinstimmenden Pläne, die die Kriterien des Mindestbeschleunigungsfaktors nicht erfüllen, auf rejected.

  • NULL— Die Funktion gibt einfach die Anzahl der Pläne zurück, die keinen Leistungsvorteil haben, weil sie den Mindestbeschleunigungsfaktor nicht erfüllen.

Nutzungshinweise

Je nachdem, ob die kombinierte Planungs- und Ausführungszeit eines Plans kürzer ist als beim schnellsten genehmigten Plan, können Sie anhand eines von Ihnen festlegbaren Faktors den Status bestimmter Pläne auf „Genehmigt“, „Abgelehnt“ oder „Deaktiviert“ setzen. Der Aktionsparameter kann auf 'approve' oder 'reject' gesetzt werden, um einen Plan automatisch zu genehmigen oder abzulehnen, wenn er die Performance-Kriterien erfüllt. Alternativ kann auch die Einstellung '' (leere Zeichenfolge) gewählt werden, um den Performance-Vergleich durchzuführen und einen Bericht zu erstellen, wobei in diesem Fall keine Aktion ausgeführt wird.

Sie können vermeiden, dass die Funktion apg_plan_mgmt.evolve_plan_baselines bei einem Plan unnötigerweise erneut ausgeführt wird. Dazu schränken Sie die Auswahl der Pläne auf die kürzlich erstellten, nicht genehmigten Pläne ein. Das Ausführen der Funktion apg_plan_mgmt.evolve_plan_baselines kann auch vermieden werden, wenn ein genehmigter Plan über einen aktuellen last_verified-Zeitstempel verfügt.

Führen Sie einen Performance-Vergleich durch, um die kombinierte Planungs- und Ausführungszeit aller Baseline-Pläne miteinander zu vergleichen. In einigen Fällen gibt es für eine Anweisung nur einen Plan, der dann auch genehmigt wird. Vergleichen Sie in einem solchen Fall die kombinierte Planungs- und Ausführungszeit des Plans mit der kombinierten Planungs- und Ausführungszeit, die sich ergibt, wenn kein Plan verwendet wird.

Der inkrementelle Vorteil (oder Nachteil) aller Pläne wird in der apg_plan_mgmt.dba_plans-Ansicht in der Spalte total_time_benefit_ms aufgezeichnet. Ist dieser Wert positiv, führt die Aufnahme dieses Plans in die Baseline zu einem messbaren Performance-Vorteil.

Zusätzlich zur Planungs- und Ausführungszeit aller ausgewählten Pläne wird in der Spalte last_verified der apg_plan_mgmt.dba_plans-Ansicht auch der aktuelle current_timestamp angezeigt. Durch den Zeitstempel last_verified kann das erneute Ausführen dieser Funktion bei einem Plan vermieden werden, dessen Performance erst kürzlich verifiziert wurde.

apg_plan_mgmt.get_explain_plan

Generiert den Text einer EXPLAIN Anweisung für die angegebene SQL Anweisung.

Syntax

apg_plan_mgmt.get_explain_plan( sql_hash, plan_hash, [explainOptionList] )
Rückgabewert

Gibt Laufzeitstatistiken für die angegebenen SQL Anweisungen zurück. Verwenden ohne explainOptionList, um einen einfachen EXPLAIN-Plan zurückzugeben.

Parameter

Parameter Beschreibung
sql_hash Die sql_hash ID der verwalteten SQL Anweisung des Plans.
plan_hash Die plan_hash-ID des verwalteten Plans.
explainOptionList

Eine durch Kommas getrennte Liste von Explain-Optionen. Gültige Werte sind 'analyze', 'verbose', 'buffers', 'hashes' und 'format json'. explainOptionListIst der Wert NULL oder eine leere Zeichenfolge („), generiert diese Funktion eine EXPLAIN Anweisung ohne Statistiken.

Nutzungshinweise

Für explainOptionList können Sie eine der gleichen Optionen verwenden, die Sie mit einer EXPLAIN-Anweisung verwenden würden. Der Aurora SQL Postgre-Optimierer verkettet die Liste der Optionen, die Sie der Anweisung zur Verfügung stellen. EXPLAIN

apg_plan_mgmt.plan_last_used

Gibt das last_used-Datum des angegebenen Plans aus dem gemeinsam genutzten Speicher zurück.

Anmerkung

Der Wert im gemeinsam genutzten Speicher ist auf der primären DB-Instance im DB-Cluster immer aktuell. Der Wert wird nur periodisch in die last_used-Spalte der apg_plan_mgmt.dba_plans-Ansicht gespült.

Syntax

apg_plan_mgmt.plan_last_used( sql_hash, plan_hash )
Rückgabewert

Gibt das Datum des Typs last_used zurück.

Parameter

Parameter Beschreibung
sql_hash Die sql_hash ID der verwalteten Anweisung des Plans. SQL
plan_hash Die plan_hash-ID des verwalteten Plans.

apg_plan_mgmt.reload

Laden Sie Pläne in der apg_plan_mgmt.dba_plans-Ansicht erneut in den gemeinsam genutzten Speicher.

Syntax

apg_plan_mgmt.reload()

Rückgabewert

Keine.

Parameter

Keine.

Nutzungshinweise

Rufen Sie reload in den folgenden Fällen auf:

  • Verwenden Sie diesen Parameter, um den gemeinsam genutzten Speicher eines schreibgeschützten Replica sofort zu aktualisieren. So müssen Sie nicht warten, bis neue Pläne an das Replica übermittelt werden.

  • Verwenden Sie diesen Parameter auch nach dem Import verwalteter Pläne.

apg_plan_mgmt.set_plan_enabled

Aktivieren oder deaktivieren Sie einen verwalteten Plan.

Syntax

apg_plan_mgmt.set_plan_enabled( sql_hash, plan_hash, [true | false] )

Rückgabewert

Gibt bei erfolgreicher Einstellung „0“ und „-1“ zurück, wenn die Einstellung nicht übernommen wurde.

Parameter

Parameter Beschreibung
sql_hash Die sql_hash ID des verwalteten SQL Kontoauszugs des Plans.
plan_hash Die plan_hash-ID des verwalteten Plans.
enabled

Boolescher Wert („true“ oder „false“)

  • Durch einen Wert des Typs true wird der Plan aktiviert.

  • Durch einen Wert des Typs false wird der Plan deaktiviert.

apg_plan_mgmt.set_plan_status

Legen Sie den Status eines verwalteten Plans auf Approved, Unapproved, Rejected oder Preferred fest.

Syntax

apg_plan_mgmt.set_plan_status( sql_hash, plan_hash, status )

Rückgabewert

Gibt bei erfolgreicher Einstellung „0“ und „-1“ zurück, wenn die Einstellung nicht übernommen wurde.

Parameter

Parameter Beschreibung
sql_hash Die sql_hash ID des verwalteten SQL Kontoauszugs des Plans.
plan_hash Die plan_hash-ID des verwalteten Plans.
status

Eine Zeichenfolge mit einem der folgenden Werte:

  • 'Approved'

  • 'Unapproved'

  • 'Rejected'

  • 'Preferred'

Der von Ihnen verwendete Fall spielt keine Rolle, aber der Statuswert wird in der apg_plan_mgmt.dba_plans-Ansicht auf anfängliche Großbuchstaben gesetzt. Weitere Informationen zu diesen Werten finden Sie unter status. Referenz für die Ansicht apg_plan_mgmt.dba_plans für Aurora Postgre -Compatible Edition SQL

apg_plan_mgmt.update_plans_last_used

Aktualisiert die Plantabelle sofort mit dem last_used-Datum, das im freigegebenen Speicher gespeichert ist.

Syntax

apg_plan_mgmt.update_plans_last_used()

Rückgabewert

Keine.

Parameter

Keine.

Nutzungshinweise

Rufen Sie update_plans_last_used auf, um sicherzustellen, dass Abfragen für die Spalte dba_plans.last_used die neusten Informationen verwenden. Wenn das last_used-Datum nicht sofort aktualisiert wird, aktualisiert ein Hintergrundprozess die Plantabelle einmal stündlich mit dem last_used-Datum (standardmäßig).

Wenn beispielsweise eine Anweisung mit einem bestimmten sql_hash langsam ausgeführt wird, können Sie feststellen, welche Pläne für diese Anweisung seit Beginn der Leistungsregression ausgeführt wurden. Leeren Sie dazu zuerst die Daten im freigegebenen Speicher auf die Festplatte, damit die last_used-Daten aktuell sind, und fragen Sie dann alle Pläne des sql_hash der Anweisung mit der Leistungsregression ab. Stellen Sie in der Abfrage sicher, dass das Datum last_used größer oder gleich dem Datum ist, an dem die Leistungsregression begann. Die Abfrage identifiziert den Plan oder die Gruppe von Plänen, die für die Leistungsregression verantwortlich sein könnten. Sie können apg_plan_mgmt.get_explain_plan verwenden, wenn explainOptionList auf verbose, hashes gesetzt ist. Sie können apg_plan_mgmt.evolve_plan_baselines auch verwenden, um den Plan und alle alternativen Pläne zu analysieren, die möglicherweise eine bessere Leistung erbringen.

Die update_plans_last_used-Funktion wirkt sich nur auf die primäre DB-Instance des DB-Clusters aus.

apg_plan_mgmt.validate_plans

Überprüfen Sie, ob der Optimierer immer noch eine Neuerstellung von Plänen durchführen kann. Der Optimierer überprüft die Pläne Approved, Unapproved und Preferred dahingehend, ob der Plan aktiviert oder deaktiviert ist. Rejected-Pläne werden nicht validiert. Alternativ können Sie auch die Funktion apg_plan_mgmt.validate_plans verwenden, um ungültige Pläne zu löschen oder zu deaktivieren.

Syntax

apg_plan_mgmt.validate_plans( sql_hash, plan_hash, action) apg_plan_mgmt.validate_plans( action)

Rückgabewert

Die Anzahl ungültiger Pläne

Parameter

Parameter Beschreibung
sql_hash Die sql_hash ID des verwalteten SQL Kontoauszugs des Plans.
plan_hash Die plan_hash-ID des verwalteten Plans. Bedeutet NULL damit alle Pläne mit demselben sql_hash ID-Wert.
action

Die Aktion, die die Funktion für ungültige Pläne ausführen wird. Gültige Zeichenfolgenwerte sind unter anderem die folgenden: Die Groß-/Kleinschreibung muss nicht beachtet werden.

  • 'disable' – Alle ungültigen Pläne werden deaktiviert.

  • 'delete' – Alle ungültigen Pläne werden gelöscht.

  • 'update_plan_hash' – Aktualisiert die plan_hash-ID für Pläne, die nicht genau reproduziert werden können. Es ermöglicht Ihnen auch, einen Plan zu korrigieren, indem Sie den SQL neu schreiben. Sie können den guten Plan dann als Approved Plan für das Original SQL registrieren.

  • NULL— Die Funktion gibt einfach die Anzahl der ungültigen Pläne zurück. Keine weitere Aktion wird ausgeführt.

  • '' – Durch eine leere Zeichenfolge wird eine Nachricht mit der Anzahl gültiger und ungültiger Pläne erstellt.

Alle anderen Werte werden wie die leere Zeichenfolge behandelt.

Nutzungshinweise

Mit dem Formular validate_plans(action) validieren Sie alle verwalteten Pläne für alle verwalteten Anweisungen in der gesamten apg_plan_mgmt.dba_plans-Ansicht.

Nutzen Sie das Formular validate_plans(sql_hash, plan_hash, action), um einen mit plan_hash angegebenen verwalteten Plan für eine mit sql_hash spezifizierte verwaltete Anweisung zu validieren.

Mit dem Formular validate_plans(sql_hash, NULL, action) können Sie alle verwalteten Pläne für die verwaltete Anweisung validieren, die über den Parameter sql_hash spezifiziert wird.