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.
Verbesserung der Abfrageleistung für RDS für PostgreSQL mit Amazon-RDS-optimierten Lesevorgängen
Mit Amazon-RDS-optimierten Lesevorgängen können Sie eine schnellere Abfrageverarbeitung für RDS für PostgreSQL erreichen. Eine DB-Instance von RDS für PostgreSQL oder ein Multi-AZ-DB-Cluster, die bzw. der RDS-optimierte Lesevorgänge verwendet, kann eine doppelt so schnelle Abfrageverarbeitung erreichen als eine DB-Instance bzw. ein DB-Cluster, die bzw. der diese Funktion nicht verwendet.
Themen
Übersicht über RDS-optimierte Lesevorgänge in PostgreSQL
Optimierte Lesevorgänge sind standardmäßig in den Versionen 15.2 und höher, 14.7 und höher sowie 13.10 und höher von RDS für PostgreSQL verfügbar, wenn Sie NVMe-basierte DB-Instance-Klassen verwenden. Hardwarespezifikationen, die angeben, welche Instances NVMe verwenden, finden Sie unter Hardware-Spezifikationen für DB-Instance-Klassen .
Wenn Sie eine DB-Instance von RDS für PostgreSQL oder einen Multi-AZ-DB-Cluster verwenden, für die bzw. den RDS-optimierte Lesevorgänge aktiviert sind, erreicht Ihre DB-Instance bzw. Ihr DB-Cluster mit dem lokalen nicht-flüchtigen Memory Express (NVMe)-Blockspeicher, der auf Solid-State-Laufwerken (SSD) basiert, eine bis zu doppelt so schnelle Abfrageleistung. Sie können eine schnellere Abfrageverarbeitung erreichen, indem Sie die von PostgreSQL generierten temporären Tabellen im lokalen Speicher ablegen, wodurch der Datenverkehr zu Elastic Block Storage (EBS) über das Netzwerk reduziert wird.
In PostgreSQL werden temporäre Objekte einem temporären Namespace zugewiesen, der am Ende der Sitzung automatisch gelöscht wird. Der temporäre Namespace entfernt beim Löschen alle Objekte, die von der Sitzung abhängig sind, einschließlich schemaqualifizierter Objekte wie Tabellen, Funktionen, Operatoren oder sogar Erweiterungen.
In RDS für PostgreSQL ist der Parameter temp_tablespaces für diesen temporären Arbeitsbereich konfiguriert, in dem die temporären Objekte gespeichert sind.
Die folgenden Abfragen geben den Namen des Tablespace und seinen Speicherort zurück.
postgres=> show temp_tablespaces;temp_tablespaces --------------------- rds_temp_tablespace (1 row)
rds_temp_tablespace ist ein von RDS konfigurierter Tabellenbereich, der auf den lokalen NVMe-Speicher verweist. Sie können jederzeit zurück zum Amazon-EBS-Speicher wechseln, indem Sie diesen Parameter in der Parameter group ändern und AWS-Managementkonsole verwenden, um auf einen anderen Tablespace als rds_temp_tablespace zu verweisen. Weitere Informationen finden Sie unter Ändern von Parametern in einer DB-Parametergruppe in Amazon RDS. Sie können den SET-Befehl auch verwenden, um den Wert des Parameters temp_tablespaces mit dem SET-Befehl auf Sitzungsebene in pg_default zu ändern. Durch Ändern des Parameters wird der temporäre Arbeitsbereich wieder an Amazon EBS umgeleitet. Der Wechsel zurück zu Amazon EBS hilft, wenn der lokale Speicher für Ihre RDS-Instance oder Ihren Cluster nicht ausreicht, um eine bestimmte SQL-Operation auszuführen.
postgres=> SET temp_tablespaces TO 'pg_default';SET
postgres=> show temp_tablespaces;temp_tablespaces ------------------ pg_default
Anwendungsfälle für RDS Optimized Reads
Im Folgenden sind einige Anwendungsfälle aufgeführt, für die optimierte Lesevorgänge von Vorteil sein können:
-
Analytische Abfragen mit Common Table Expressions (CTEs), abgeleiteten Tabellen und Gruppierungsoperationen.
-
Lesereplikate, die die nicht optimierten Abfragen für eine Anwendung verarbeiten.
-
Bedarfsgesteuerte oder dynamische Berichtsabfragen mit komplexen Operationen wie GROUP BY und ORDER BY, für die nicht immer die entsprechenden Indizes verwendet werden können.
-
Andere Workloads, die interne temporäre Tabellen verwenden.
-
CREATE INDEX- oderREINDEX-Operationen zum Sortieren.
Bewährte Methoden für RDS Optimized Reads
Nutzen Sie die folgenden bewährten Methoden für RDS Optimized Reads:
-
Fügen Sie Wiederholungslogik für schreibgeschützte Abfragen hinzu, falls diese aufgrund eines Fehlers wegen eines vollen Instance-Speichers während der Ausführung fehlschlagen.
-
Überwachen Sie den verfügbaren Speicherplatz im Instance-Speicher mit der CloudWatch-Metrik
FreeLocalStorage. Wenn der Instance-Speicher aufgrund der Workload der DB-Instance oder des Multi-AZ-DB-Clusters sein Limit erreicht, ändern Sie die DB-Instance bzw. den DB-Cluster und verwenden Sie eine größere DB-Instance-Klasse.
Verwenden von RDS Optimized Reads
Wenn Sie eine DB-Instance von RDS für PostgreSQL mit einer der NVMe-basierten DB-Instance-Klassen in einer Single-AZ-Bereitstellung, einer Multi-AZ-Bereitstellung oder einer Multi-AZ-DB-Cluster-Bereitstellung bereitstellen, verwendet die DB-Instance automatisch RDS-optimierte Lesevorgänge.
Weitere Informationen zur Multi-AZ-Bereitstellung finden Sie unter Konfigurieren und Verwalten einer Multi-AZ-Bereitstellung für Amazon RDS.
Führen Sie einen der folgenden Schritte aus, um RDS Optimized Reads zu aktivieren:
-
Erstellen Sie eine DB-Instance oder einen Multi-AZ-DB-Cluster von RDS für PostgreSQL mit einer der NVMe-basierten DB-Instance-Klassen. Weitere Informationen finden Sie unter Erstellen einer Amazon-RDS-DB-Instance.
-
Ändern Sie eine vorhandene DB-Instance oder einen Multi-AZ-DB-Cluster von RDS für PostgreSQL so, dass eine der NVMe-basierten DB-Instance-Klassen verwendet wird. Weitere Informationen finden Sie unter Ändern einer Amazon-RDS-DB-Instance.
RDS-optimierte Lesevorgänge sind in allen AWS-Regionen verfügbar, in denen eine oder mehrere der DB-Instance-Klassen mit lokalem NVMe-SSD-Speicher unterstützt werden. Weitere Informationen finden Sie unter DB-Instance-Klassen .
Um zu einer Instance mit nicht RDS-optimierten Lesevorgängen zurückzukehren, ändern Sie die DB-Instance-Klasse Ihrer RDS-Instance oder Ihres Clusters auf eine ähnliche Instance-Klasse, die nur EBS-Speicher für Ihre Datenbank-Workloads unterstützt. Wenn die aktuelle DB-Instance-Klasse beispielsweise db.r6gd.4xlarge ist, wählen Sie db.r6g.4xlarge aus, um zurückzuwechseln. Weitere Informationen finden Sie unter Ändern einer Amazon-RDS-DB-Instance.
Überwachen von DB-Instances, die RDS Optimized Reads verwenden
Sie können DB-Instances, die RDS-optimierte Lesevorgänge verwenden, mit den folgenden CloudWatch-Metriken überwachen:
-
FreeLocalStorage -
ReadIOPSLocalStorage -
ReadLatencyLocalStorage -
ReadThroughputLocalStorage -
WriteIOPSLocalStorage -
WriteLatencyLocalStorage -
WriteThroughputLocalStorage
Diese Metriken liefern Daten über den verfügbaren Instance-Speicher, die IOPS und den Durchsatz. Weitere Informationen zu diesen Metriken finden Sie unter Metriken CloudWatch auf Amazon-Instanzebene für Amazon RDS.
Wenn Sie die aktuelle Nutzung Ihres lokalen Speichers überwachen möchten, melden Sie sich bei Ihrer Datenbank an und führen Sie folgende Abfrage aus:
SELECT spcname AS "Name", pg_catalog.pg_size_pretty(pg_catalog.pg_tablespace_size(oid)) AS "size" FROM pg_catalog.pg_tablespace WHERE spcname IN ('rds_temp_tablespace');
Weitere Informationen zu den temporären Dateien und ihrer Verwendung finden Sie unter Verwalten temporärer Dateien mit PostgreSQL.
Einschränkungen für RDS-optimierte Lesevorgänge in PostgreSQL
Für RDS-optimierte Lesevorgänge gilt die folgende Einschränkung in PostgreSQL:
-
Transaktionen können fehlschlagen, wenn der Instance-Speicher voll ist.