Verbesserung der Abfrageleistung für RDS für MariaDB mit Amazon RDS Optimized Reads - 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 MariaDB mit Amazon RDS Optimized Reads

Mit Amazon RDS Optimized Reads können Sie eine schnellere Abfrageverarbeitung für RDS für MariaDB erreichen. Eine DB-Instance von RDS für MariaDB, die RDS Optimized Reads verwendet, kann eine doppelt so schnelle Abfrageverarbeitung erreichen als eine DB-Instance, die diese Funktion nicht verwendet.

Übersicht über RDS Optimized Reads

Wenn Sie eine DB-Instance von RDS für MariaDB verwenden, für die RDS Optimized Reads aktiviert ist, erreicht Ihre DB-Instance durch die Verwendung eines Instance-Speichers eine schnellere Abfrageleistung. Ein Instance-Speicher stellt für Ihre DB-Instance temporären Speicher auf Blockebene bereit. Der Speicher befindet sich auf Non-Volatile Memory Express (NVMe)-SSDs, die physisch mit dem Hostserver verbunden sind. Dieser Speicher ist für niedrige Latenzen, eine hohe Random-I/O-Leistung und einen hohen sequentiellen Lesedurchsatz optimiert.

RDS Optimized Reads ist standardmäßig aktiviert, wenn eine DB-Instance eine DB-Instance-Klasse mit einem Instance-Speicher wie db.m5d oder db.m6gd verwendet. Mit RDS Optimized Reads werden einige temporäre Objekte im Instance-Speicher abgelegt. Zu diesen temporären Objekten gehören interne temporäre Dateien, interne temporäre Tabellen auf der Festplatte, Speicherzuordnungsdateien und Binärprotokolldateien (binlog) im Cache. Weitere Informationen zum Instance-Speicher finden Sie unter Instance-Speicher von Amazon EC2 im Benutzerhandbuch für Amazon Elastic Compute Cloud für Linux-Instances.

Die Workloads, die temporäre Objekte in MariaDB für die Abfrageverarbeitung generieren, können den Instance-Speicher für eine schnellere Abfrageverarbeitung nutzen. Diese Art von Workload umfasst Abfragen mit Sortierungen, Hash-Aggregationen, Joins mit hoher Auslastung, Common Table Expressions (CTEs) und Abfragen für nicht indizierte Spalten. Diese Instance-Speicher-Volumes bieten höhere IOPS und eine höhere Leistung, unabhängig von den Speicherkonfigurationen, die für persistenten Amazon EBS-Speicher verwendet werden. Da RDS Optimized Reads Operationen mit temporären Objekten in den Instance-Speicher auslagert, können die Eingabe-/Ausgabevorgänge pro Sekunde (IOPS) oder der Durchsatz des persistenten Speichers (Amazon EBS) jetzt für Operationen an persistenten Objekten verwendet werden. Zu diesen Vorgängen gehören reguläre Lese- und Schreibvorgänge von Datendateien sowie Engine-Operationen im Hintergrund, wie das Leeren und Zusammenführen von Puffern zum Einfügen.

Anmerkung

Sowohl manuelle als auch automatisierte RDS-Snapshots enthalten nur die Engine-Dateien für persistente Objekte. Die im Instance-Speicher erstellten temporären Objekte sind nicht in RDS-Snapshots enthalten.

Anwendungsfälle für RDS Optimized Reads

Wenn Sie Workloads haben, deren Abfrageausführung stark auf temporäre Objekte wie interne Tabellen oder Dateien angewiesen ist, können Sie von der Aktivierung von RDS Optimized Reads profitieren. Die folgenden Anwendungsfälle eignen sich für RDS Optimized Reads:

  • Anwendungen, die analytische Abfragen mit komplexen Common Table Expressions (CTEs), abgeleiteten Tabellen und Gruppierungsoperationen ausführen

  • Lesereplikate, die einen hohen Leseverkehr mit nicht optimierten Abfragen bewältigen

  • Anwendungen, die auf Abruf laufen oder dynamische Berichtsabfragen ausführen, die komplexe Operationen beinhalten, z. B. Abfragen mit GROUP BY- und ORDER BY-Klauseln

  • Workloads, die interne temporäre Tabellen für die Abfrageverarbeitung verwenden

    Sie können die Engine-Statusvariable created_tmp_disk_tables überwachen, um die Anzahl der festplattenbasierten temporären Tabellen zu ermitteln, die auf Ihrer DB-Instance erstellt wurden.

  • Anwendungen, die direkt oder in Prozeduren große temporäre Tabellen zum Speichern von Zwischenergebnissen erstellen

  • Datenbankabfragen, die das Gruppieren oder Sortieren von nicht indizierten Spalten durchführen

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 anhand der CloudWatch MetrikFreeLocalStorage. Wenn der Instance-Speicher aufgrund der Workload der DB-Instance sein Limit erreicht, ändern Sie die DB-Instance, um eine größere DB-Instance-Klasse zu verwenden.

  • Wenn Ihre DB-Instance über ausreichend Speicher verfügt, aber immer noch das Speicherlimit für den Instance-Speicher erreicht, erhöhen Sie den binlog_cache_size-Wert, um die sitzungsspezifischen Binlog-Einträge im Speicher zu behalten. Diese Konfiguration verhindert, dass die Binlog-Einträge in temporäre Binlog-Cache-Dateien auf der Festplatte geschrieben werden.

    Der binlog_cache_size-Parameter ist sitzungsspezifisch. Sie können den Wert für jede neue Sitzung ändern. Die Einstellung für diesen Parameter kann die Speicherauslastung der DB-Instance bei Spitzenauslastung erhöhen. Erwägen Sie daher, den Parameterwert auf der Grundlage des Workload-Musters Ihrer Anwendung und des verfügbaren Speichers in der DB-Instance zu erhöhen.

  • Verwenden Sie den Standardwert MIXED für binlog_format. Abhängig von der Größe der Transaktionen kann die Einstellung von binlog_format auf ROW zu großen Binlog-Cache-Dateien im Instance-Speicher führen.

  • Vermeiden Sie es, Massenänderungen in einer einzigen Transaktion durchzuführen. Diese Arten von Transaktionen können große Binlog-Cache-Dateien im Instance-Speicher generieren und Probleme verursachen, wenn der Instance-Speicher voll ist. Erwägen Sie, Schreibvorgänge in mehrere kleine Transaktionen aufzuteilen, um den Speicherverbrauch für Binlog-Cache-Dateien zu minimieren.

Verwenden von RDS Optimized Reads

Wenn Sie eine DB-Instance von RDS für MariaDB mit einer der folgenden DB-Instance-Klassen in einer Single-AZ-Bereitstellung oder einer Multi-AZ-Bereitstellung der DB-Instance bereitstellen, verwendet die DB-Instance automatisch RDS Optimized Reads.

Führen Sie einen der folgenden Schritte aus, um RDS Optimized Reads zu aktivieren:

RDS Optimized Reads ist überall verfügbar AWS-Regionen , wo eine oder mehrere DB-Instance-Klassen mit lokalem NVMe-SSD-Speicher unterstützt werden. Weitere Informationen zu DB-Instance-Klassen finden Sie unter .

Die Verfügbarkeit der DB-Instance-Klassen unterscheidet sich für AWS-Regionen. Informationen darüber, ob eine DB-Instance-Klasse in einer bestimmten Klasse unterstützt wird AWS-Region, finden Sie unterErmitteln der Unterstützung für DB-Instance-Klassen in AWS-Regionen.

Wenn Sie RDS Optimized Reads nicht verwenden möchten, ändern Sie Ihre DB-Instance so, dass sie keine DB-Instance-Klasse verwendet, die die Funktion unterstützt.

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

Einschränkungen für RDS Optimized Reads

Für RDS Optimized Reads gelten die folgenden Einschränkungen:

  • RDS Optimized Reads wird für die folgenden Versionen von RDS für MariaDB unterstützt:

    • 10.11.4 und höhere 10.11-Versionen

    • 10.6.7 und höhere 10.6-Versionen

    • 10.5.16 und höhere 10.5-Versionen

    • 10.4.25 und höhere 10.4-Versionen

    Informationen zu den Versionen von RDS für MariaDB finden Sie unter Versionen von MariaDB auf Amazon RDS.

  • Sie können den Speicherort temporärer Objekte in den DB-Instance-Klassen, die RDS Optimized Reads unterstützen, nicht auf persistenten Speicher (Amazon EBS) ändern.

  • Wenn die binäre Protokollierung auf einer DB-Instance aktiviert ist, ist die maximale Transaktionsgröße durch die Größe des Instance-Speichers begrenzt. Bei MariaDB schreibt jede Sitzung, die mehr Speicherplatz als den Wert binlog_cache_size benötigt, Transaktionsänderungen in temporäre Binlog-Cache-Dateien, die im Instance-Speicher erstellt werden.

  • Transaktionen können fehlschlagen, wenn der Instance-Speicher voll ist.