Verbesserung der Abfrageleistung für RDS für PostgreSQL mit Amazon-RDS-optimierten Lesevorgängen - Amazon Relational Database Service

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.

Übersicht über RDS-optimierte Lesevorgänge in PostgreSQL

Optimierte Lesevorgänge sind standardmäßig in RDS-für-PostgreSQL-Versionen 15.2 und höher, 14.7 und höher sowie 13.10 und höher verfügbar.

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 Management Console verwenden, um auf einen anderen Tablespace als rds_temp_tablespace zu verweisen. Weitere Informationen finden Sie unter Ändern von Parametern in einer DB-Parametergruppe. 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 - oder -REINDEXOperationen 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 im Instance-Speicher verfügbaren Speicherplatz 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 Konfiguration und Verwaltung einer Multi-AZ-Bereitstellung.

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 .

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 Optimized Reads 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 Amazon-Metriken CloudWatch auf Instanzebene für Amazon RDS.

Wenn Sie die aktuelle Nutzung Ihres lokalen Speichers überwachen möchten, melden Sie sich mit der folgenden Abfrage bei Ihrer Datenbank an:

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.