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:
Funktionen
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.
|
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 |
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“)
|
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:
Der von Ihnen verwendete Fall spielt keine Rolle, aber der Statuswert wird in der |
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.
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.