

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 Aurora-PostgreSQL-Abfrageplanverwaltung
<a name="AuroraPostgreSQL.Optimize.Functions"></a>

Die Erweiterung `apg_plan_mgmt` stellt die folgenden Funktionen bereit:

**Topics**
+ [apg\$1plan\$1mgmt.copy\$1outline](#AuroraPostgreSQL.Optimize.Functions.copy_outline)
+ [apg\$1plan\$1mgmt.delete\$1plan](#AuroraPostgreSQL.Optimize.Functions.delete_plan)
+ [apg\$1plan\$1mgmt.evolve\$1plan\$1baselines](#AuroraPostgreSQL.Optimize.Functions.evolve_plan_baselines)
+ [apg\$1plan\$1mgmt.get\$1explain\$1plan](#AuroraPostgreSQL.Optimize.Functions.get_explain_plan)
+ [apg\$1plan\$1mgmt.plan\$1last\$1used](#AuroraPostgreSQL.Optimize.Functions.plan_last_used)
+ [apg\$1plan\$1mgmt.reload](#AuroraPostgreSQL.Optimize.Functions.reload)
+ [apg\$1plan\$1mgmt.set\$1plan\$1enabled](#AuroraPostgreSQL.Optimize.Functions.set_plan_enabled)
+ [apg\$1plan\$1mgmt.set\$1plan\$1status](#AuroraPostgreSQL.Optimize.Functions.set_plan_status)
+ [apg\$1plan\$1mgmt.update\$1plans\$1last\$1used](#AuroraPostgreSQL.Optimize.Functions.update_plans_last_used)
+ [apg\$1plan\$1mgmt.validate\$1plans](#AuroraPostgreSQL.Optimize.Functions.validate_plans)

## apg\$1plan\$1mgmt.copy\$1outline
<a name="AuroraPostgreSQL.Optimize.Functions.copy_outline"></a>

Kopiert einen bestimmten SQL-Plan-Hash und eine Plangliederung in einen Ziel-SQL-Plan-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 | Description | 
| --- | --- | 
| source\$1sql\$1hash  | Die sql\$1hash-ID, die mit plan\$1hash verknüpft ist, um sie in die Zielabfrage zu kopieren. | 
| source\$1plan\$1hash  | Die plan\$1hash-ID, die in die Zielabfrage kopiert werden soll. | 
| target\$1sql\$1hash | Die sql\$1hash-ID der Abfrage, die mit dem Hash und der Gliederung des Quellplans aktualisiert werden soll. | 
| target\$1plan\$1hash | Die plan\$1hash-ID der Abfrage, die mit dem Hash und der Gliederung des Quellplans aktualisiert werden soll. | 
| force\$1update\$1target\$1plan\$1hash | (Optional) Die target\$1plan\$1hash-ID der Abfrage wird aktualisiert, auch wenn der Quellplan für den target\$1sql\$1hash nicht reproduzierbar ist. Bei der Einstellung „true“ kann die Funktion verwendet werden, um Pläne über Schemas hinweg 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\$1plan\$1mgmt.delete\$1plan
<a name="AuroraPostgreSQL.Optimize.Functions.delete_plan"></a>

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\$1hash  | Die sql\$1hash-ID der verwalteten SQL-Anweisung des Plans. | 
| plan\$1hash | Die plan\$1hash-ID des verwalteten Plans. | 

 

## apg\$1plan\$1mgmt.evolve\$1plan\$1baselines
<a name="AuroraPostgreSQL.Optimize.Functions.evolve_plan_baselines"></a>

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\$1hash | Die sql\$1hash-ID der verwalteten SQL-Anweisung des Plans. | 
| plan\$1hash | Die plan\$1hash-ID des verwalteten Plans. Verwenden Sie NULL, um alle Pläne mit demselben sql\$1hash-ID-Wert anzugeben. | 
| min\$1speedup\$1factor |  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.  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Optimize.Functions.html)  | 

**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\$1plan\$1mgmt.get\$1explain\$1plan
<a name="AuroraPostgreSQL.Optimize.Functions.get_explain_plan"></a>

Erzeugt 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\$1hash  | Die sql\$1hash-ID der verwalteten SQL-Anweisung des Plans. | 
| plan\$1hash | Die plan\$1hash-ID des verwalteten Plans. | 
| explainOptionList | Eine durch Kommas getrennte Liste von Explain-Optionen. Gültige Werte sind `'analyze'`, `'verbose'`, `'buffers'`, `'hashes'` und `'format json'`. Wenn `explainOptionList` NULL ist oder eine leere Zeichenfolge („), generiert diese Funktion eine `EXPLAIN`-Anweisung, ohne irgendwelche Statistiken.  | 

 

**Nutzungshinweise**

Für `explainOptionList` können Sie eine der gleichen Optionen verwenden, die Sie mit einer `EXPLAIN`-Anweisung verwenden würden. Der Aurora-PostgreSQL-Optimizer verkettet die Liste der Optionen, die Sie für die `EXPLAIN`-Anweisung bereitstellen.

## apg\$1plan\$1mgmt.plan\$1last\$1used
<a name="AuroraPostgreSQL.Optimize.Functions.plan_last_used"></a>

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\$1hash  | Die sql\$1hash-ID der verwalteten SQL-Anweisung des Plans. | 
| plan\$1hash | Die plan\$1hash-ID des verwalteten Plans. | 

 

## apg\$1plan\$1mgmt.reload
<a name="AuroraPostgreSQL.Optimize.Functions.reload"></a>

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\$1plan\$1mgmt.set\$1plan\$1enabled
<a name="AuroraPostgreSQL.Optimize.Functions.set_plan_enabled"></a>

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\$1hash | Die sql\$1hash-ID der verwalteten SQL-Anweisung des Plans. | 
| plan\$1hash | Die plan\$1hash-ID des verwalteten Plans. | 
| enabled |  Boolescher Wert („true“ oder „false“) [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Optimize.Functions.html)  | 

 

## apg\$1plan\$1mgmt.set\$1plan\$1status
<a name="AuroraPostgreSQL.Optimize.Functions.set_plan_status"></a>

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\$1hash | Die sql\$1hash-ID der verwalteten SQL-Anweisung des Plans. | 
| plan\$1hash | Die plan\$1hash-ID des verwalteten Plans. | 
| status |  Eine Zeichenfolge mit einem der folgenden Werte: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Optimize.Functions.html) 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 apg\$1plan\$1mgmt.dba\$1plans-Ansicht für die Aurora-PostgreSQL-kompatible Edition](AuroraPostgreSQL.Optimize.dba_plans_view_Reference.md)   | 

 

## apg\$1plan\$1mgmt.update\$1plans\$1last\$1used
<a name="AuroraPostgreSQL.Optimize.Functions.update_plans_last_used"></a>

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\$1plan\$1mgmt.validate\$1plans
<a name="AuroraPostgreSQL.Optimize.Functions.validate_plans"></a>

Ü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\$1hash | Die sql\$1hash-ID der verwalteten SQL-Anweisung des Plans. | 
| plan\$1hash | Die plan\$1hash-ID des verwalteten Plans. Verwenden Sie NULL, um alle Pläne für denselben sql\$1hash-ID-Wert anzugeben. | 
| 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. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AmazonRDS/latest/AuroraUserGuide/AuroraPostgreSQL.Optimize.Functions.html) 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.