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.
Überblick über die Verwaltung von Aurora SQL Postgre-Abfrageplänen
Das Aurora SQL Postgre-Abfrageplanmanagement wurde entwickelt, um die Planstabilität unabhängig von Änderungen an der Datenbank zu gewährleisten, die zu einer Regression des Abfrageplans führen könnten. Eine Regression des Abfrageplans tritt auf, wenn der Optimierer nach System- oder Datenbankänderungen einen suboptimalen Plan für eine bestimmte SQL Anweisung auswählt. Änderungen an Statistiken, Einschränkungen, Umgebungseinstellungen, Bindungen von Abfrageparametern und Upgrades der SQL Postgre-Datenbank-Engine können allesamt zu einer Planregression führen.
Mit der Aurora SQL Postgre-Abfrageplanverwaltung können Sie steuern, wie und wann sich die Pläne zur Abfrageausführung ändern. Zu den Vorteilen der Verwaltung von Aurora SQL Postgre-Abfrageplänen gehören die folgenden.
Verbesserung der Planstabilität, indem der Optimierer zur Auswahl aus einer kleinen Anzahl bekannter, bewährter Pläne gezwungen wird.
Zentrale Optimierung von Plänen, gefolgt von einer globalen Verteilung der besten Pläne.
Ermittlung von nicht verwendeten Indizes und Bewertung der Auswirkungen einer Indexerstellung oder -löschung.
Automatische Erkennung eines vom Optimierer ermittelten Minimalkostenplans.
Test neuer Optimierer-Funktionen mit geringerem Risiko, da Sie nur die Planänderungen genehmigen können, die zu Performance-Steigerungen führen.
Sie können die von der Abfrageplanverwaltung bereitgestellten Tools proaktiv verwenden, um den besten Plan für bestimmte Abfragen festzulegen. Sie können die Abfrageplanverwaltung auch verwenden, um auf sich ändernde Umstände zu reagieren und Planregressionen zu vermeiden. Weitere Informationen finden Sie unter Bewährte Methoden für die Aurora-PostgreSQL-Abfrageplanverwaltung.
Themen
- Unterstützte Aussagen SQL
- Einschränkungen der Abfrageplanverwaltung
- Terminologie der Abfrageplanverwaltung
- Versionen der Aurora SQL Postgre-Abfrageplanverwaltung
- Aurora SQL Postgre-Abfrageplanverwaltung aktivieren
- Aktualisierung der Verwaltung von Aurora SQL Postgre-Abfrageplänen
- Die Verwaltung des Aurora SQL Postgre-Abfrageplans ausschalten
Unterstützte Aussagen SQL
Die Abfrageplanverwaltung unterstützt die folgenden Arten von SQL Anweisungen.
JedeSELECT, INSERTUPDATE, oder DELETE Anweisung, unabhängig von ihrer Komplexität.
Vorbereitete Anweisungen. Weitere Informationen finden Sie PREPARE
in der SQL Postgre-Dokumentation. Dynamische Anweisungen, einschließlich solcher, die im Sofortmodus ausgeführt werden. Weitere Informationen finden Sie unter Dynamic SQL
und EXECUTEIMMEDIATE in der Postgre-Dokumentation. SQL Eingebettete SQL Befehle und Anweisungen. Weitere Informationen finden Sie unter Eingebettete SQL Befehle
in der SQL Postgre-Dokumentation. Anweisungen innerhalb benannter Funktionen. Weitere Informationen finden Sie CREATEFUNCTION
in der Postgre-Dokumentation. SQL Anweisungen, die temporäre Tabellen enthalten.
Anweisungen innerhalb von Prozeduren und DO-Blöcken.
Sie können die Abfrageplanverwaltung mit EXPLAIN
im manuellen Modus verwenden, um einen Plan zu erfassen, ohne ihn tatsächlich auszuführen. Weitere Informationen finden Sie unter Analysieren des vom Optimierer ausgewählten Plans. Weitere Informationen zu den Modi der Abfrageplanverwaltung (manuell, automatisch) finden Sie unter Erfassung von Aurora PostgreSQL-Ausführungsplänen.
Die Aurora SQL Postgre-Abfrageplanverwaltung unterstützt alle Funktionen der SQL Postgre-Sprache, einschließlich partitionierter Tabellen, Vererbung, Sicherheit auf Zeilenebene und rekursive allgemeine Tabellenausdrücke (). CTEs Weitere Informationen zu diesen Funktionen der SQL Postgre-Sprache finden Sie unter Tabellenpartitionierung
Informationen zu den verschiedenen Versionen der Aurora SQL Postgre-Abfrageplanverwaltungsfunktion finden Sie in den Versionshinweisen für Aurora Postgre unter Versionen der Aurora Postgre-Erweiterung SQL apg_plan_mgmt. SQL
Einschränkungen der Abfrageplanverwaltung
Die aktuelle Version von Aurora Postgre SQL Query Plan Management hat die folgenden Einschränkungen.
Pläne werden nicht für Anweisungen erfasst, die auf Systembeziehungen verweisen – Anweisungen, die auf Systembeziehungen verweisen, wie z. B.
pg_class
, werden nicht erfasst. Dies ist beabsichtigt, um zu verhindern, dass eine große Anzahl von systemgenerierten Plänen, die intern verwendet werden, erfasst werden. Dies gilt auch für Systemtabellen innerhalb von Ansichten.Für Ihren Aurora Postgre-DB-Cluster ist möglicherweise eine größere SQL DB-Instance-Klasse erforderlich — Je nach Arbeitslast benötigt das Abfrageplanmanagement möglicherweise eine DB-Instance-Klasse mit mehr als 2. vCPUs Die Anzahl von
max_worker_processes
ist durch die Größe der DB-Instance-Klasse begrenzt. Die von einer CPU 2-V-DB-Instance-Klasse (z. B. db.t3.medium)max_worker_processes
bereitgestellte Anzahl reicht für einen bestimmten Workload möglicherweise nicht aus. Wir empfehlen Ihnen, eine DB-Instance-Klasse mit mehr als 2 vCPUs für Ihren Aurora SQL Postgre-DB-Cluster zu wählen, wenn Sie die Abfrageplanverwaltung verwenden.Wenn die DB-Instance-Klasse Ihre Workload nicht unterstützen kann, gibt die Abfrageplanverwaltung eine Fehlermeldung wie die folgende aus.
WARNING: could not register plan insert background process HINT: You may need to increase max_worker_processes.
In diesem Fall sollten Sie Ihren Aurora SQL Postgre-DB-Cluster auf eine DB-Instance-Klassengröße mit mehr Speicher hochskalieren. Weitere Informationen finden Sie unter Unterstützte DB-Engines für DB-Instance-Klassen.
-
Pläne, die bereits in Sitzungen gespeichert sind, sind nicht betroffen. – Die Abfrageplanverwaltung bietet eine Möglichkeit, Abfragepläne zu beeinflussen, ohne den Anwendungscode ändern zu müssen. Wenn jedoch ein generischer Plan bereits in einer vorhandenen Sitzung gespeichert ist und Sie den Abfrageplan ändern möchten, müssen Sie zunächst
plan_cache_mode
in der DB-Cluster-Parametergruppe aufforce_custom_plan
setzen. -
queryid
inapg_plan_mgmt.dba_plans
undpg_stat_statements
kann in folgenden Fällen abweichen:Objekte werden nach dem Speichern in apg_plan_mgmt.dba_plans gelöscht und neu erstellt.
Die Tabelle
apg_plan_mgmt.plans
wird aus einem anderen Cluster importiert.
Informationen zu den verschiedenen Versionen der Aurora SQL Postgre-Abfrageplanverwaltungsfunktion finden Sie in den Versionshinweisen für Aurora Postgre unter Versionen der Aurora Postgre-Erweiterung SQL apg_plan_mgmt. SQL
Terminologie der Abfrageplanverwaltung
Die folgenden Begriffe werden in diesem Thema verwendet.
- verwaltete Anweisung
-
Eine SQL Anweisung, die vom Optimierer unter Abfrageplanverwaltung erfasst wurde. Eine verwaltete Anweisung verfügt über einen oder mehrere Abfrageausführungspläne, die in der
apg_plan_mgmt.dba_plans
-Ansicht gespeichert sind. - Plan-Baseline
-
Die Menge der genehmigten Pläne für eine bestimmte verwaltete Anweisung. Das heißt, alle Pläne für die verwaltete Anweisung, für die in der
status
-Spalte derdba_plan
-Ansicht „Approved“ angegeben ist. - Planverlauf
-
Die Menge der erfassten Pläne für eine bestimmte verwaltete Anweisung. Der Planverlauf enthält alle Pläne, die für die Anweisung erfasst wurden, unabhängig vom Status.
- Abfrageplanregression
-
Der Fall, dass der Optimierer einen weniger optimalen Plan auswählt als vor einer bestimmten Änderung an der Datenbankumgebung, z. B. einer neuen SQL Postgre-Version oder Änderungen an Statistiken.
Versionen der Aurora SQL Postgre-Abfrageplanverwaltung
Die Verwaltung von Abfrageplänen wird von allen derzeit verfügbaren Aurora SQL Postgre-Versionen unterstützt. Weitere Informationen finden Sie in der Liste der Amazon Aurora SQL Postgre-Updates in den Versionshinweisen für Aurora SQL Postgre.
Funktionen zur Verwaltung von Abfrageplänen werden Ihrem Aurora SQL Postgre-DB-Cluster hinzugefügt, wenn Sie die apg_plan_mgmt
Erweiterung installieren. Verschiedene Versionen von Aurora Postgre SQL unterstützen verschiedene Versionen der apg_plan_mgmt
Erweiterung. Wir empfehlen Ihnen, die Erweiterung zur Verwaltung von Abfrageplänen auf die neueste Version für Ihre Version von Aurora Postgre SQL zu aktualisieren.
Anmerkung
Versionshinweise für die einzelnen apg_plan_mgmt
Erweiterungsversionen finden Sie unter Aurora Postgre SQL apg_plan_mgmt extension versions in den Versionshinweisen für Aurora Postgre. SQL
Sie können die auf Ihrem Cluster ausgeführte Version identifizieren, indem Sie mit psql
eine Verbindung mit einer Instance herstellen und den Metabefehl \dx verwenden, um Erweiterungen aufzulisten, wie nachfolgend gezeigt.
labdb=>
\dxList of installed extensions Name | Version | Schema | Description ---------------+---------+---------------+------------------------------------------------------------------- apg_plan_mgmt | 1.0 | apg_plan_mgmt | Amazon Aurora with PostgreSQL compatibility Query Plan Management plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language (2 rows)
Die Ausgabe zeigt, dass dieser Cluster die Version 1.0 der Erweiterung verwendet. Für eine bestimmte Aurora SQL Postgre-Version sind nur bestimmte apg_plan_mgmt
Versionen verfügbar. In einigen Fällen müssen Sie möglicherweise den Aurora SQL Postgre-DB-Cluster auf eine neue Nebenversion aktualisieren oder einen Patch anwenden, damit Sie auf die neueste Version von Query Plan Management aktualisieren können. Die in der Ausgabe gezeigte apg_plan_mgmt
Version 1.0 stammt aus einem Aurora Postgre-DB-Cluster der SQL Version 10.17, für den keine neuere Version von apg_plan_mgmt
verfügbar ist. In diesem Fall sollte der Aurora SQL Postgre-DB-Cluster auf eine neuere Version von SQL Postgre aktualisiert werden.
Weitere Informationen zum Upgrade Ihres Aurora SQL Postgre-DB-Clusters auf eine neue Version von Postgre SQL finden Sie unter. Amazon Aurora Postgre-Aktualisierungen SQL
Informationen zum Upgrade der apg_plan_mgmt
-Erweiterung finden Sie unter Aktualisierung der Verwaltung von Aurora SQL Postgre-Abfrageplänen.
Aurora SQL Postgre-Abfrageplanverwaltung aktivieren
Die Einrichtung der Abfrageplanverwaltung für Ihren Aurora SQL Postgre-DB-Cluster umfasst die Installation einer Erweiterung und die Änderung mehrerer DB-Cluster-Parametereinstellungen. Sie benötigen rds_superuser
Berechtigungen, um die apg_plan_mgmt
Erweiterung zu installieren und die Funktion für den Aurora SQL Postgre-DB-Cluster zu aktivieren.
Durch die Installation der Erweiterung wird eine neue Rolle, apg_plan_mgmt
, erstellt. Diese Rolle ermöglicht Datenbankbenutzern, Abfragepläne anzuzeigen, zu verwalten und zu pflegen. Als Administrator mit rds_superuser
-Berechtigungen müssen Sie die apg_plan_mgmt
-Rolle Datenbankbenutzern nach Bedarf zuweisen.
Nur Benutzer mit der rds_superuser
-Rolle können den folgenden Vorgang ausführen. rds_superuser
ist erforderlich, um die Erweiterung apg_plan_mgmt
und die zugehörige Rolle apg_plan_mgmt
zu erstellen. Benutzer benötigen die Rolle apg_plan_mgmt
zur Verwaltung der Erweiterung apg_plan_mgmt
.
So aktivieren Sie die Abfrageplanverwaltung für Ihren Aurora SQL Postgre-DB-Cluster
Mit den folgenden Schritten wird die Abfrageplanverwaltung für alle SQL Kontoauszüge aktiviert, die an den Aurora SQL Postgre-DB-Cluster übermittelt werden. Dies wird als automatischer Modus bezeichnet. Weitere Informationen zum Unterschied zwischen den Modi finden Sie unter Erfassung von Aurora PostgreSQL-Ausführungsplänen.
Öffnen Sie die RDS Amazon-Konsole unter https://console.aws.amazon.com/rds/
. -
Erstellen Sie eine benutzerdefinierte DB-Cluster-Parametergruppe für Ihren Aurora SQL Postgre-DB-Cluster. Sie müssen bestimmte Parameter ändern, um die Abfrageplanverwaltung zu aktivieren und ihr Verhalten festzulegen. Weitere Informationen finden Sie unter Erstellen einer DB-Parametergruppe in Amazon Aurora.
Öffnen Sie die benutzerdefinierte DB-Cluster-Parametergruppe und legen Sie den
rds.enable_plan_management
-Parameter auf1
fest, wie in der folgenden Abbildung gezeigt.Weitere Informationen finden Sie unter Ändern von Parametern in einer DB-Cluster-Parametergruppe in Amazon Aurora.
Erstellen Sie eine benutzerdefinierte DB-Parametergruppe, mit der Sie Abfrageplanparameter auf Instance-Ebene festlegen können. Weitere Informationen finden Sie unter Eine DB-Cluster-Parametergruppe in Amazon Aurora erstellen.
Ändern Sie die Writer-Instance des Aurora SQL Postgre-DB-Clusters so, dass sie die benutzerdefinierte DB-Parametergruppe verwendet. Weitere Informationen finden Sie unter Ändern einer DB-Instance in einem DB-Cluster.
Ändern Sie den Aurora SQL Postgre-DB-Cluster so, dass er die benutzerdefinierte DB-Cluster-Parametergruppe verwendet. Weitere Informationen finden Sie unter Ändern des DB-Clusters mithilfe der KonsoleCLI, und API.
Starten Sie Ihre DB-Instance neu, um die Einstellungen der benutzerdefinierten Parametergruppe zu aktivieren.
Stellen Sie mit
psql
oderpgAdmin
Connect zum SQL DB-Instance-Endpunkt Ihres Aurora Postgre-DB-Clusters her. Im folgenden Beispiel wird daspostgres
-Standardkonto für dierds_superuser
-Rolle verwendet.psql --host=
cluster-instance-1.111122223333
.aws-region
.rds.amazonaws.com --port=5432 --username=postgres --password --dbname=my-db
Erstellen Sie die
apg_plan_mgmt
-Erweiterung für Ihre DB-Instance, wie nachfolgend gezeigt.labdb=>
CREATE EXTENSION apg_plan_mgmt;CREATE EXTENSION
Tipp
Installieren Sie die
apg_plan_mgmt
-Erweiterung in der Vorlagendatenbank für Ihre Anwendung. Der Name der Standard-Vorlagendatenbank lautettemplate1
. Weitere Informationen finden Sie unter Template-Datenbankenin der Postgre-Dokumentation. SQL Ändern Sie den Parameter
apg_plan_mgmt.capture_plan_baselines
inautomatic
. Diese Einstellung veranlasst den Optimierer, Pläne für jede SQL Anweisung zu generieren, die entweder geplant oder zweimal oder öfter ausgeführt wird.Anmerkung
Die Abfrageplanverwaltung verfügt auch über einen manuellen Modus, den Sie für bestimmte SQL Anweisungen verwenden können. Weitere Informationen hierzu finden Sie unter Erfassung von Aurora PostgreSQL-Ausführungsplänen.
-
Ändern Sie den Wert des
apg_plan_mgmt.use_plan_baselines
-Parameters in „on“. Dieser Parameter veranlasst den Optimierer, einen Plan für die Anweisung aus der Plan-Baseline auszuwählen. Weitere Informationen hierzu finden Sie unter Verwenden von Aurora PostgreSQL-Plänen.Anmerkung
Sie können den Wert eines dieser dynamischen Parameter für die Sitzung ändern, ohne die Instance neu starten zu müssen.
Wenn die Einrichtung der Abfrageplanverwaltung abgeschlossen ist, müssen Sie die apg_plan_mgmt
-Rolle allen Datenbankbenutzern zuweisen, die Abfragepläne anzeigen, verwalten oder pflegen müssen.
Aktualisierung der Verwaltung von Aurora SQL Postgre-Abfrageplänen
Wir empfehlen Ihnen, die Erweiterung zur Verwaltung von Abfrageplänen auf die neueste Version für Ihre Version von Aurora Postgre SQL zu aktualisieren.
Stellen Sie als Benutzer mit
rds_superuser
Rechten eine Connect zur Writer-Instance Ihres Aurora SQL Postgre-DB-Clusters her. Wenn Sie bei der Einrichtung Ihrer Instance den Standardnamen beibehalten haben, stellen Sie wie folgt eine Verbindung her.postgres
Dieses Beispiel zeigt, wie Sie es verwenden könnenpsql
, aber Sie können es auch verwenden, pgAdmin wenn Sie es vorziehen.psql --host=
111122223333
.aws-region
.rds.amazonaws.com --port=5432 --username=postgres --passwordFühren Sie die folgende Abfrage aus, um die Erweiterung zu aktualisieren.
ALTER EXTENSION apg_plan_mgmt UPDATE TO '2.1';
Verwenden Sie die Funktion apg_plan_mgmt.validate_plans, um die Hashes aller Pläne zu aktualisieren. Der Optimierer validiert alle genehmigten, nicht genehmigten und abgelehnten Pläne, um sicherzustellen, dass es sich weiterhin um durchführbare Pläne für die neue Version der Erweiterung handelt.
SELECT apg_plan_mgmt.validate_plans('update_plan_hash');
Weitere Informationen zu dieser Funktion finden Sie unter Validieren von Plänen.
Verwenden Sie die Funktion apg_plan_mgmt.reload, um alle Pläne im gemeinsam genutzten Arbeitsspeicher mit den validierten Plänen aus der dba_plans-Ansicht zu aktualisieren.
SELECT apg_plan_mgmt.reload();
Weitere Informationen zu allen Funktionen, die für die Abfrageplanverwaltung verfügbar sind, finden Sie unter Funktionsreferenz für die Verwaltung von Aurora SQL Postgre-Abfrageplänen.
Die Verwaltung des Aurora SQL Postgre-Abfrageplans ausschalten
Sie können die Abfrageplanverwaltung jederzeit deaktivieren, indem Sie die apg_plan_mgmt.use_plan_baselines
und apg_plan_mgmt.capture_plan_baselines
deaktivieren.
labdb=>
SET apg_plan_mgmt.use_plan_baselines = off;labdb=>
SET apg_plan_mgmt.capture_plan_baselines = off;