View a markdown version of this page

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 RDS for PostgreSQL-DB-Instance oder ein Multi-AZ DB-Cluster, der RDS-optimierte Lesevorgänge verwendet, kann eine um bis zu 50% schnellere Abfrageverarbeitung erreichen als eine, die sie nicht verwendet.

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

Optimized Reads ist standardmäßig auf RDS für PostgreSQL-Versionen 15.2 und höher, 14.7 und höher und 13.10 und höher verfügbar, wenn DB-Instance-Klassen verwendet werden. NVMe-based Hardwarespezifikationen, die angeben, welche Instances NVMe verwenden, finden Sie unter Hardwarespezifikationen für DB-Instance-Klassen .

Wenn Sie eine RDS for PostgreSQL-DB-Instance oder einen Multi-AZ DB-Cluster verwenden, für die RDS-optimierte Lesevorgänge aktiviert sind, wird mit dem lokalen Non-Volatile Memory Express (NVMe) -basierten Solid-State-Drive-Speicher (SSD) auf Blockebene eine um bis zu 50% schnellere Abfrageleistung erzielt. 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 ändern, indem Parameter group Sie verwenden, AWS-Managementkonsole um auf einen anderen Tablespace als zu verweisen. rds_temp_tablespace 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.

  • On-demand oder dynamische Berichtsabfragen mit komplexen Vorgängen wie GROUP BY und ORDER BY, für die nicht immer geeignete Indizes verwendet werden können.

  • Andere Workloads, die interne temporäre Tabellen verwenden.

  • CREATE INDEX- oder REINDEX-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 anhand der CloudWatch Metrik FreeLocalStorage den verfügbaren Speicherplatz im Instance-Speicher. Wenn der Instance-Speicher aufgrund der Arbeitslast auf der DB-Instance oder Multi-AZ dem DB-Cluster sein Limit erreicht, ändern Sie ihn so, dass er eine größere DB-Instance-Klasse verwendet.

Verwenden von RDS Optimized Reads

Wenn Sie eine RDS for PostgreSQL-DB-Instance mit einer der NVMe-basierten DB-Instance-Klassen in einer DB-Instance-Bereitstellung, Single-AZ Multi-AZ DB-Instance-Bereitstellung oder DB-Cluster-Bereitstellung bereitstellen, verwendet die Multi-AZ DB-Instance automatisch RDS-Optimized Reads.

Weitere Informationen zur Multi-AZ Bereitstellung finden Sie unter. Konfiguration und Verwaltung 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 RDS for PostgreSQL-DB-Instance oder einen Multi-AZ DB-Cluster mithilfe einer der NVMe-basierten DB-Instance-Klassen. Weitere Informationen finden Sie unter Erstellen einer Amazon-RDS-DB-Instance.

  • Ändern Sie eine bestehende RDS for PostgreSQL-DB-Instance oder einen Multi-AZ DB-Cluster, um eine der NVMe-basierten DB-Instance-Klassen zu verwenden. Weitere Informationen finden Sie unter Ändern einer Amazon-RDS-DB-Instance.

RDS Optimized Reads ist überall verfügbar AWS-Regionen , wo 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-optimierte Lesevorgänge verwenden, anhand der 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.