Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So verbessern Sie die Leistung von MySQL AWS um das Zweifache gegenüber Amazon RDS bei gleichen Kosten

AWS ist der Cloud-Anbieter Nr. 1 für das Hosten von Open-Source-Datenbanken und die Cloud der Wahl für MySQL-Bereitstellungen. Da Unternehmen weiterhin in die Cloud migrieren, ist es wichtig, Leistungsprobleme wie hohe Latenz, geringen Durchsatz und Replikationsverzögerung bei größeren Entfernungen zwischen Ihren Benutzern und der Cloud-Infrastruktur zu bewältigen. Während viele AWS-Benutzer standardmäßig auf ihre verwaltete Datenbanklösung Amazon RDS zurückgreifen, gibt es Alternativen, die Ihre MySQL-Leistung auf AWS durch erweiterte Anpassungsoptionen und unbegrenzte Unterstützung von EC2-Instance-Typen verbessern können. ScaleGrid bietet eine überzeugende Alternative zum Hosten von MySQL auf AWS, die eine bessere Leistung, mehr Kontrolle und keine Abhängigkeit von Cloud-Anbietern und den gleichen Preis wie Amazon RDS bietet. In diesem Beitrag vergleichen wir die Leistung von MySQL Amazon RDS mit MySQL Hosting bei ScaleGrid auf AWS High Performance-Instances.

TLDR

Die MySQL-on-AWS-High-Performance-Bereitstellung von ScaleGrid kann den 2- bis 3-fachen Durchsatz bei halber Latenzzeit von Amazon RDS for MySQL bieten, mit dem zusätzlichen Vorteil, 2 Read Replicas im Vergleich zu 1 Zoll zu haben RDS.

MySQL auf AWS-Leistungstest

ScaleGrid Amazon-RDS
Instanztyp AWS High Performance XLarge (siehe Systemdetails unten) DB-Instanz r4.xlarge (Multi-AZ)
Bereitstellungstyp 3-Knoten-Master-Slave-Set mit halbsynchroner Replikation Multi-AZ-Bereitstellung mit 1 Read Replica
SSD-Festplatte Lokale SSD &Allzweck – 2 TB Allgemein – 2 TB
Monatliche Kosten (USD) $1.798 $1.789

Amazon RDS Kosten Preis Menge Gesamt Notizen
Multi-AZ
DB-Instanz (hr) $0,48 730 $350,40 db.r4.xlarge
DB-Instanz (hr) $0,48 730 $350,40 db.r4.xlarge
Speicher (GB) 0,115 $ 2000 $230.00 Universal – 2 TB (Single-AZ)
Replik lesen
DB-Instanz (hr) $0,48 730 $350,40 db.r4.xlarge (Single-AZ)
Speicher (GB) 0,115 $ 2000 $230.00 Universal – 2 TB (Single-AZ)
Sonstige Kosten
Sicherungsspeicher (GB) 0,095 $ 1000 $95.00 Geben Sie bis zu 100 % des DB-Speichers frei
Datenübertragung (ins Internet) $0,09 0 $0,00 Kostenlos bis zu 1 GB/Monat
Datenübertragung (in Regionen hinaus) $0,01 2000 $20.00 USA Ost (Nord-Virginia)
Unterstützung $162,62 1 $162,62 10 % der monatlichen Kosten
Gesamt $1.788,82

Wie Sie der obigen Tabelle entnehmen können, liegt der Preis für MySQL RDS innerhalb von 10 US-Dollar der vollständig verwalteten und allumfassenden MySQL-Hosting-Lösung von ScaleGrid.

Was sind die High Performance Replica Sets von ScaleGrid?

Das ScaleGrid MySQL on AWS High Performance Replikat-Set verwendet eine Mischung aus lokaler SSD und EBS-Festplatte, um sowohl eine hohe Leistung als auch eine hohe Zuverlässigkeit zu erreichen. Eine typische Konfiguration wird mithilfe eines 3-Knoten-Replikatsatzes bereitgestellt:

  • Master und Slave-1 verwenden lokale SSD-Festplatten.
  • Slave-2 verwendet einen EBS-Datenträger (kann ein Allzweck- oder ein bereitgestellter IOPS-Datenträger sein).

Was bedeutet das? Da der Master und der Slave-1 auf einer lokalen SSD ausgeführt werden, erhalten Sie die bestmögliche Festplattenleistung von Ihren AWS-Rechnern. Kein netzwerkbasiertes EBS mehr, nur blitzschnelle lokale SSD. Lese- und Schreibvorgänge auf Ihrer primären und sogar Lesevorgänge von Slave-1 funktionieren mit SSD-Geschwindigkeit. Slave-2 verwendet einen EBS-Datenträger, und Sie können die für Ihren Cluster erforderliche IOPS-Menge konfigurieren. Diese Konfiguration bietet vollständige Sicherheit für Ihre Daten, selbst wenn Sie die lokalen SSD-Festplatten verlieren.

Das MySQL AWS High Performance XLarge-Replikatset von ScaleGrid verwendet i3.xlarge (30,5 GB RAM)-Instanzen mit lokaler SSD für Master und Slave-1 und eine i3.2xlarge (61 GB RAM) Instanz für Slave-2.

MySQL-Konfiguration

Eine ähnliche MySQL-Konfiguration wird sowohl bei ScaleGrid- als auch bei RDS-Bereitstellungen verwendet:

Konfiguration Wert
Version 5.7.25 Community Edition
innodb_buffer_pool_size 25G
innodb_log_file_size 1G
innodb_flush_log_at_trx_commit 1
sync_binlog 1
innodb_io_capacity 3000
innodb_io_capacity_max 6000
slave_parallel_workers 30
slave_parallel_type LOGICAL_CLOCK

MySQL-Leistungsbenchmark-Konfiguration

Konfiguration Einzelheiten
Tool Sysbench-Version 1.0.17
Host 1 r4.xlarge befindet sich im selben AWS-Rechenzentrum wie Master MySQL
# Tabellen 100
# Zeilen pro Tabelle 5.000.000
Workload-generierendes Skript oltp_read_write.lua

Szenarien und Ergebnisse von MySQL-Leistungstests

Um sicherzustellen, dass wir informative Ergebnisse für alle MySQL-AWS-Workload-Typen liefern, haben wir unsere Tests in diese drei Szenarien unterteilt, damit Sie sie basierend auf Ihrer Lese-/Schreib-Workload-Intensität bewerten können:

  1. Leseintensive Arbeitslast: 80 % Lesevorgänge und 20 % Schreibvorgänge
  2. Ausgeglichene Arbeitslast: 50 % Lesevorgänge und 50 % Schreibvorgänge
  3. Schreibintensive Arbeitslast: 20 % Lesevorgänge und 80 % Schreibvorgänge

Jedes Szenario wird mit einer unterschiedlichen Anzahl von Sysbench-Client-Threads zwischen 50 und 400 ausgeführt, und jeder Test wird für eine Dauer von 10 Minuten ausgeführt. Wir messen den Durchsatz in Abfragen pro Sekunde (QPS) und Latenz im 95. Perzentil und stellen sicher, dass die maximale Replikationsverzögerung auf den Slaves 30 Sekunden nicht überschreitet. Für einige der Tests der ScaleGrid-Bereitstellung wird die MySQL-Konfiguration binlog_group_commit_sync_delay so abgestimmt, dass die Slave-Replikationsverzögerung nicht über 30 Sekunden hinausgeht. Diese Technik wird als „Den Master verlangsamen, um die Slaves zu beschleunigen“ bezeichnet und in J-F Gagnes Blog erklärt.

So verbessern Sie die AWS-Leistung von #MySQL gegenüber Amazon RDS um das Doppelte zu den gleichen KostenClick To Tweet

Szenario-1:Leseintensive Arbeitslast mit 80 % Lesevorgängen und 20 % Schreibvorgängen

Wie wir aus den leseintensiven Workload-Tests ersehen können, sind ScaleGrid-Hochleistungs-MySQL-Instances auf AWS in der Lage, rund 27.800 QPS zwischen 50 und 100 konsistent zu verarbeiten 400 Fäden. Dies ist eine fast 200 %ige Steigerung gegenüber der MySQL-RDS-Leistung, die im Durchschnitt nur 9.411 QPS über den gleichen Bereich von Threads beträgt.

ScaleGrid behält während der gesamten MySQL-AWS-Leistungstests im Durchschnitt auch eine um 53 % geringere Latenz bei. Sowohl die Amazon RDS- als auch die ScaleGrid-Latenz nehmen stetig zu, wenn die Anzahl der Threads zunimmt, wobei ScaleGrid bei 383 ms für 400 Threads maximal ist, während Amazon RDS bei 831 ms auf dem gleichen Niveau liegt.

Szenario-2:Ausgeglichene Arbeitslast mit 50 % Lesevorgängen und 50 % Schreibvorgängen

In unseren ausgewogenen Workload-Leistungstests übertrifft die MySQL High Performance-Bereitstellung von ScaleGrid auf AWS erneut mit durchschnittlich 20.605 QPS bei Threads von 50 bis 400. Amazon RDS durchschnittlich nur 8.296 für die gleiche Thread-Anzahl, was mit ScaleGrid zu einer Verbesserung von 148 % führt.

Sowohl die ScaleGrid- als auch die Amazon RDS-Latenz haben sich in den Tests mit ausgeglichener Arbeitslast im Vergleich zu den oben behandelten leseintensiven Tests deutlich verringert. Amazon RDS erreichte bei den Tests mit ausgeglichener Arbeitslast eine durchschnittliche Latenzzeit von 258 ms, wobei ScaleGrid im Durchschnitt nur 125 ms erreichte und damit eine um über 52 % reduzierte Latenz gegenüber MySQL auf Amazon RDS erzielte.

Szenario-3:Schreibintensive Arbeitslast mit 20 % Lesevorgängen und 80 % Schreibvorgängen

In unserem letzten schreibintensiven MySQL-AWS-Workload-Szenario erzielte ScaleGrid eine deutlich höhere Durchsatzleistung mit durchschnittlich 17.007 QPS über den Bereich von 50 bis 400 Threads. Dies ist eine Verbesserung von 123 % gegenüber Amazon RDS, das nur 7.638 QPS über die gleiche Anzahl von Threads erreichte.

Die 95. Perzentil-Latenztests ergaben für ScaleGrid mit durchschnittlich 114 ms über 50 bis 400 Threads ebenfalls eine deutlich niedrigere Latenz. Amazon RDS erreichte in seinen Latenztests durchschnittlich 247 ms, was zu einer durchschnittlichen Reduzierung der Latenz um 54 % führte, wenn die hochleistungsfähigen MySQL-on-AWS-Dienste von ScaleGrid über Amazon RDS bereitgestellt wurden.

Analyse

Wie wir anhand der Testergebnisse festgestellt haben, führten leseintensive Arbeitslasten sowohl zu einem höheren Durchsatz als auch zu einer höheren Latenz gegenüber ausgeglichenen Arbeitslasten und schreibintensiven Arbeitslasten, unabhängig davon, wie MySQL wurde auf AWS bereitgestellt:

Durchschnittsleistungstest für MySQL auf AWS ScaleGrid Amazon RDS ScaleGrid-Verbesserung
Leseintensiver Durchsatz 27.795 9.411 195,4 %
Workload-Durchsatz ausgleichen 20.605 8.296 148,4 %
Schreibintensiver Durchsatz 17.007 7.638 122,7 %

Durchschnittswerte aus dem Latenzleistungstest für MySQL auf AWS ScaleGrid Amazon RDS ScaleGrid-Verbesserung
Leseintensive Latenz 206ms 439ms -53,0 %
Ausgeglichene Workload-Latenz 125ms 258ms -51,6 %
Schreibintensive Latenz 114ms 247ms -53,8 %

Erklärung der Ergebnisse

  • Wir sehen, dass die ScaleGrid-MySQL-on-AWS-Bereitstellung im Vergleich zur RDS-Bereitstellung einen fast dreimal besseren Durchsatz für die leseintensive Workload lieferte.
  • Als die Schreiblast zunahm, obwohl der absolute Durchsatz abnahm, lieferte ScaleGrid immer noch eine fast 2,5-mal bessere Durchsatzleistung.
  • Bei schreibintensiven Workloads stellten wir fest, dass die Replikationsverzögerung für den EBS-Slave in der ScaleGrid-Bereitstellung einsetzte. Da es unser Ziel war, die Slave-Replikationsverzögerung für unsere Läufe innerhalb von 30 Sekunden zu halten, haben wir binlog_group_commit_sync_delay eingeführt, um sicherzustellen, dass der Slave eine bessere parallele Ausführung erreichen kann. Dies kontrollierte die Verzögerung und führte zu einem geringeren absoluten Durchsatz bei der ScaleGrid-Bereitstellung, aber wir konnten immer noch einen 2,2-mal besseren Durchsatz im Vergleich zur RDS-Bereitstellung feststellen.
  • Für alle leseintensiven, schreibintensiven und ausgewogenen Workload-Szenarien bot ScaleGrid im Vergleich zu RDS 0,5-mal niedrigere Latenzeigenschaften.

ScaleGrid „High Performance“-Bereitstellung kann den 2- bis 3-fachen Durchsatz bei halber Latenz von RDS bieten, mit dem zusätzlichen Vorteil, dass im Vergleich zu 2 Read Replicas vorhanden sind 1 im RDS. Um mehr über die MySQL-Hosting-Vorteile von ScaleGrid gegenüber Amazon RDS für MySQL zu erfahren, besuchen Sie unsere Vergleichsseite für MySQL-Anbieter oder starten Sie eine kostenlose 30-Tage-Testversion, um die vollständig verwaltete DBaaS-Plattform zu erkunden.