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

Mit Amazon RDS Optimized Reads können Sie eine schnellere Abfrageverarbeitung RDS für for My SQL erreichen. Eine RDS SQL For-My-DB-Instance oder ein Multi-AZ-DB-Cluster, der RDS Optimized Reads verwendet, kann eine bis zu zweimal schnellere Abfrageverarbeitung erreichen als eine DB-Instance oder ein DB-Cluster, die Optimized Reads nicht verwenden.

Überblick über RDS optimierte Lesevorgänge

Wenn Sie eine RDS For My SQL DB-Instance oder einen Multi-AZ-DB-Cluster verwenden, bei dem RDS Optimized Reads aktiviert sind, wird durch die Verwendung eines Instance-Speichers eine schnellere Abfrageleistung erzielt. Ein Instance-Speicher stellt für Ihre DB-Instance bzw. Ihren Multi-AZ-DB-Cluster temporären Speicher auf Blockebene bereit. Der Speicher befindet sich auf Non-Volatile Memory Express (NVMe) Solid-State-Laufwerken (SSDs), die physisch mit dem Host-Server verbunden sind. Dieser Speicher ist für niedrige Latenzen, eine hohe Random-I/O-Leistung und einen hohen sequentiellen Lesedurchsatz optimiert.

RDSOptimized Reads ist standardmäßig aktiviert, wenn eine DB-Instance oder ein Multi-AZ-DB-Cluster eine DB-Instance-Klasse mit einem Instance-Speicher verwendet, z. B. db.m5d oder db.m6gd. Bei RDS Optimized Reads werden einige temporäre Objekte im Instance-Speicher gespeichert. 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-Store finden Sie unter Amazon EC2 Instance Store im Amazon Elastic Compute Cloud-Benutzerhandbuch für Linux-Instances.

Die Workloads, die temporäre Objekte in My SQL für die Abfrageverarbeitung generieren, können den Instance-Speicher für eine schnellere Abfrageverarbeitung nutzen. Zu dieser Art von Arbeitslast gehören Abfragen, die Sortierungen, Hash-Aggregationen, Verknüpfungen mit hoher Auslastung, allgemeine Tabellenausdrücke (CTEs) und Abfragen für Spalten ohne Index beinhalten. Diese Instance-Speicher-Volumes bieten eine höhere IOPS Leistung, unabhängig von den Speicherkonfigurationen, die für persistenten EBS Amazon-Speicher verwendet werden. Da RDS Optimized Reads Operationen an temporären Objekten in den Instance-Speicher auslagert, können die Eingabe-/Ausgabeoperationen pro Sekunde (IOPS) oder der Durchsatz des persistenten Speichers (AmazonEBS) jetzt für Operationen mit 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 Engine-Dateien für persistente Objekte. Die im Instanzspeicher erstellten temporären Objekte sind nicht in RDS Snapshots enthalten.

Anwendungsfälle für RDS optimierte Lesevorgänge

Wenn Sie Workloads haben, die für die Ausführung von Abfragen stark auf temporäre Objekte wie interne Tabellen oder Dateien angewiesen sind, können Sie von der Aktivierung RDS optimierter Lesevorgänge profitieren. Die folgenden Anwendungsfälle kommen für RDS optimierte Lesevorgänge in Frage:

  • Anwendungen, die analytische Abfragen mit komplexen allgemeinen Tabellenausdrücken (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 optimierte Lesevorgänge

Verwenden Sie die folgenden bewährten Methoden für RDS optimierte Lesevorgänge:

  • 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 den im Instance-Speicher verfügbaren SpeicherplatzFreeLocalStorage. 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 bzw. Ihr Multi-AZ-DB-Cluster ü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 SQL für My 8.0-Versionen und frühere Versionen den Standardwert von MIXED für den binlog_format Parameter. 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. Verwenden Sie für My SQL 8.4 und höher den Standardwert von ROW für den binlog_format Parameter.

  • Stellen Sie den Parameter internal_tmp_mem_storage_engine auf TempTable ein und legen Sie den Parameter temptable_max_mmap so fest, dass er der Größe des verfügbaren Speichers im Instance-Speicher entspricht.

  • 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 Sie den Standardwert ABORT_SERVER für den binlog_error_action-Parameter. Dadurch werden Probleme mit der binären Protokollierung auf DB-Instances mit aktivierten Backups vermieden.

RDSOptimierte Lesevorgänge verwenden

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

Gehen Sie wie folgt vor, um RDS Optimized Reads zu aktivieren:

  • Erstellen Sie mithilfe einer dieser SQL DB-Instance-Klassen eine RDS For My DB-Instance oder einen Multi-AZ-DB-Cluster. Weitere Informationen finden Sie unter Eine Amazon RDS DB-Instance erstellen.

  • Ändern Sie eine bestehende RDS für My SQL DB-Instance oder einen Multi-AZ-DB-Cluster, um eine dieser DB-Instance-Klassen zu verwenden. Weitere Informationen finden Sie unter Ändern einer Amazon RDS DB-Instance.

RDSOptimized Reads ist überall verfügbar AWS-Regionen RDS, 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 von 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 oder Ihren Multi-AZ-DB-Cluster so, dass keine DB-Instance-Klasse verwendet wird, die diese Funktion unterstützt.

Überwachung 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 verfügbaren Instance-SpeicherIOPS, Speicherplatz und Durchsatz. Weitere Informationen zu diesen Metriken finden Sie unter Metriken CloudWatch auf Amazon-Instanzebene für Amazon RDS.

Einschränkungen für RDS optimierte Lesevorgänge

Die folgenden Einschränkungen gelten für RDS optimierte Lesevorgänge:

  • RDSOptimized Reads wird für die folgenden Versionen unterstützt:

    • RDSfür meine SQL Version 8.0.28 und höhere Haupt- und Nebenversionen

    Informationen zu RDS for My SQL versions finden Sie unter. MySQL in Amazon RDS-Versionen

  • Sie können den Speicherort temporärer Objekte in den DB-Instance-Klassen, die RDS optimierte Lesevorgänge unterstützen, nicht in persistenten Speicher (AmazonEBS) ä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. In My binlog_cache_size schreibt jede SitzungSQL, die mehr Speicherplatz als den Wert von 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.