sql >> Database >  >> RDS >> Mysql

MySQL AWS-prestaties 2x verbeteren via Amazon RDS tegen dezelfde kosten

AWS is de nummer 1 cloudprovider voor open-source databasehosting en de go-to-cloud voor MySQL-implementaties. Terwijl organisaties naar de cloud blijven migreren, is het belangrijk om prestatieproblemen op te lossen, zoals hoge latentie, lage doorvoer en replicatievertraging met grotere afstanden tussen uw gebruikers en cloudinfrastructuur. Hoewel veel AWS-gebruikers standaard hun beheerde database-oplossing, Amazon RDS, gebruiken, zijn er alternatieven beschikbaar die uw MySQL-prestaties op AWS kunnen verbeteren door middel van geavanceerde aanpassingsopties en onbeperkte ondersteuning van EC2-instantietypes. ScaleGrid biedt een aantrekkelijk alternatief voor het hosten van MySQL op AWS dat betere prestaties, meer controle en geen lock-in van cloudleveranciers biedt en voor dezelfde prijs als Amazon RDS. In dit bericht vergelijken we de prestaties van MySQL Amazon RDS versus MySQL Hosting op ScaleGrid op AWS High Performance-instanties.

TLDR

ScaleGrid's MySQL op AWS High Performance-implementatie kan 2x-3x de doorvoer bieden met de helft van de latentie van Amazon RDS voor MySQL met als bijkomend voordeel dat ze 2 leesreplica's hebben in vergelijking met 1 in RDS.

MySQL op AWS-prestatietest

ScaleGrid Amazon RDS
Instance Type AWS High Performance XLarge (zie systeemdetails hieronder) DB Instance r4.xlarge (Multi-AZ)
Deployment Type 3-node master-slave-set met semisynchrone replicatie Multi-AZ-implementatie met 1 leesreplica
SSD-schijf Lokale SSD en algemeen gebruik – 2TB Algemeen gebruik – 2TB
Maandelijkse kosten (USD) $1.798 $1.789

Amazon RDS Kosten Prijs Aantal Totaal Opmerkingen
Multi-AZ
DB-instantie (hr) $0.48 730 $350,40 db.r4.xlarge
DB-instantie (hr) $0.48 730 $350,40 db.r4.xlarge
Opslag (GB) $ 0,115 2000 $230.00 Algemeen gebruik – 2TB (Single-AZ)
Replica lezen
DB-instantie (hr) $0.48 730 $350,40 db.r4.xlarge (Single-AZ)
Opslag (GB) $ 0,115 2000 $230.00 Algemeen gebruik – 2TB (Single-AZ)
Andere kosten
Back-upopslag (GB) $0.095 1000 $95,00 Tot 100% DB-opslag vrij
Gegevensoverdracht (naar internet) $ 0,09 0 $0.00 Tot 1 GB/mo gratis
Gegevensoverdracht (naar regio's) $ 0,01 2000 $20.00 US East (N. Virginia)
Ondersteuning $ 162,62 1 $ 162,62 10% van de maandelijkse kosten
Totaal $1.788,82

Zoals je kunt zien in de bovenstaande tabel, ligt de prijs van MySQL RDS binnen $ 10 van de volledig beheerde en allesomvattende MySQL-hostingoplossing van ScaleGrid.

Wat zijn de hoogwaardige replicasets van ScaleGrid?

De ScaleGrid MySQL op AWS High Performance replicaset maakt gebruik van een hybride van lokale SSD- en EBS-schijf om zowel hoge prestaties als hoge betrouwbaarheid te bereiken. Een typische configuratie wordt geïmplementeerd met behulp van een replicaset met 3 knooppunten:

  • De Master en Slave-1 gebruiken lokale SSD-schijven.
  • Slave-2 gebruikt een EBS-schijf (kan een General Purpose of een Provisioned IOPS-schijf zijn).

Wat betekent dit? Aangezien de Master en de Slave-1 op een lokale SSD draaien, krijgt u de best mogelijke schijfprestaties van uw AWS-machines. Geen netwerkgebaseerde EBS meer, maar razendsnelle lokale SSD. Leest en schrijft naar uw Primary, en zelfs leest van Slave-1 werkt op SSD-snelheid. Slave-2 gebruikt een EBS-gegevensschijf en u kunt de hoeveelheid IOPS configureren die nodig is voor uw cluster. Deze configuratie biedt volledige veiligheid voor uw gegevens, zelfs als u de lokale SSD-schijven verliest.

ScaleGrid's MySQL AWS High Performance XLarge replicaset gebruikt i3.xlarge (30,5 GB RAM) instanties met lokale SSD voor de Master en Slave-1, en een i3.2xlarge (61 GB RAM) voor Slave-2.

MySQL-configuratie

Een vergelijkbare MySQL-configuratie wordt gebruikt op zowel ScaleGrid- als RDS-implementaties:

Configuratie Waarde
versie 5.7.25 community-editie
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 Performance Benchmark-configuratie

Configuratie Details
Tool Sysbench versie 1.0.17
Host 1 r4.xlarge bevindt zich in hetzelfde AWS-datacenter als de Master MySQL
# tabellen 100
# Rijen per tabel 5.000.000
Script voor het genereren van werklast oltp_read_write.lua

MySQL-prestatietestscenario's en resultaten

Om ervoor te zorgen dat we informatieve resultaten leveren voor alle MySQL AWS-workloadtypes, hebben we onze tests onderverdeeld in deze drie scenario's, zodat u deze kunt evalueren op basis van uw lees-/schrijfworkloadintensiteit:

  1. Leesintensieve werkbelasting: 80% leest en 20% schrijft
  2. Gebalanceerde werklast: 50% leest en 50% schrijft
  3. Schrijfintensieve werkbelasting: 20% leest en 80% schrijft

Elk scenario wordt uitgevoerd met een variërend aantal sysbench-clientthreads, variërend van 50 tot 400, en elke test wordt gedurende 10 minuten uitgevoerd. We meten de doorvoer in termen van query's per seconde (QPS) en latentie van het 95e percentiel, en zorgen ervoor dat de maximale replicatievertraging op de slaven de 30s niet overschrijdt. Voor sommige van de tests op de ScaleGrid-implementatie is de MySQL-configuratie binlog_group_commit_sync_delay zo afgestemd dat de slaafreplicatievertraging niet verder gaat dan 30s. Deze techniek wordt 'de master vertragen om de slaven te versnellen' genoemd en wordt uitgelegd in de blog van J-F Gagne.

Hoe u #MySQL AWS-prestaties 2x kunt verbeteren via Amazon RDS tegen dezelfde kostenKlik om te tweeten

Scenario-1:leesintensieve werkbelasting met 80% lezen en 20% schrijven

Zoals we kunnen zien aan de hand van de leesintensieve werkbelastingstests, kunnen de hoogwaardige MySQL-instanties van ScaleGrid op AWS consistent ongeveer 27.800 QPS verwerken, overal van 50 tot 400 draden. Dit is een stijging van bijna 200% ten opzichte van de MySQL RDS-prestaties, die gemiddeld slechts 9.411 QPS zijn over hetzelfde bereik van threads.

ScaleGrid handhaaft ook gemiddeld 53% lagere latentie gedurende de gehele MySQL AWS-prestatietests. Zowel Amazon RDS als ScaleGrid-latentie nemen gestaag toe naarmate het aantal threads groeit, waar ScaleGrid maximaal 383 ms bereikt voor 400 threads, terwijl Amazon RDS op 831 ms op hetzelfde niveau ligt.

Scenario-2:evenwichtige werkbelasting met 50% lees- en 50% schrijfbewerkingen

In onze uitgebalanceerde prestatietests voor workloads presteert de MySQL High Performance-implementatie van ScaleGrid op AWS opnieuw beter met een gemiddelde van 20.605 QPS op threads variërend van 50 tot 400. Amazon RDS gemiddeld slechts 8.296 voor hetzelfde aantal threads, wat resulteerde in een verbetering van 148% met ScaleGrid.

Zowel ScaleGrid als Amazon RDS-latentie nam aanzienlijk af in de gebalanceerde werkbelastingstests in vergelijking met de leesintensieve tests die hierboven worden besproken. Amazon RDS had een gemiddelde latentie van 258 ms in de gebalanceerde werkbelastingstests, waar ScaleGrid gemiddeld slechts 125 ms was en meer dan 52% minder latentie bereikte dan MySQL op Amazon RDS.

Scenario-3:schrijfintensieve werkbelasting met 20% leesbewerkingen en 80% schrijfbewerkingen

In ons laatste schrijfintensieve MySQL AWS-workloadscenario behaalde ScaleGrid aanzienlijk hogere doorvoerprestaties met een gemiddelde van 17.007 QPS over een bereik van 50 tot 400 threads. Dit is een verbetering van 123% ten opzichte van Amazon RDS die slechts 7.638 QPS behaalde over hetzelfde aantal threads.

De latentietests van het 95e percentiel produceerden ook een aanzienlijk lagere latentie voor ScaleGrid met een gemiddelde van 114 ms over 50 tot 400 threads. Amazon RDS behaalde een gemiddelde van 247 ms in hun latentietests, wat resulteerde in een gemiddelde vermindering van 54% in latentie bij het inzetten van ScaleGrid's High Performance MySQL op AWS-services via Amazon RDS.

Analyse

Zoals we uit de testresultaten hebben gezien, resulteerden leesintensieve workloads in zowel hogere doorvoer als latentie bij gebalanceerde workloads en schrijfintensieve workloads, ongeacht hoe MySQL is geïmplementeerd op AWS:

MySQL on AWS Throughput Performance Test Averages ScaleGrid Amazon RDS ScaleGrid-verbetering
Leesintensieve doorvoer 27.795 9.411 195,4%
Evenwicht werklastdoorvoer 20.605 8.296 148,4%
Schrijfintensieve doorvoer 17.007 7.638 122,7%

MySQL on AWS Latency Performance Test Gemiddelden ScaleGrid Amazon RDS ScaleGrid-verbetering
Leesintensieve latentie 206ms 439ms -53.0%
Gebalanceerde werkbelastinglatentie 125ms 258ms -51,6%
Schrijfintensieve latentie 114ms 247ms -53,8%

Uitleg van resultaten

  • We zien dat de ScaleGrid MySQL op AWS-implementatie bijna 3x betere doorvoer bood voor de leesintensieve workload in vergelijking met de RDS-implementatie.
  • Terwijl de schrijfbelasting toenam, hoewel de absolute doorvoer afnam, leverde ScaleGrid nog steeds bijna 2,5x betere doorvoerprestaties.
  • Voor schrijfintensieve workloads ontdekten we dat de replicatievertraging begon op te treden voor de EBS-slave op de ScaleGrid-implementatie. Omdat het ons doel was om de slave-replicatievertraging voor onze runs binnen 30 seconden te houden, hebben we binlog_group_commit_sync_delay geïntroduceerd om ervoor te zorgen dat slave een betere parallelle uitvoering kon bereiken. Dit controleerde de vertraging en resulteerde in een lagere absolute doorvoer op de ScaleGrid-implementatie, maar we konden nog steeds een 2,2x betere doorvoer zien in vergelijking met RDS-implementatie.
  • Voor alle leesintensieve, schrijfintensieve en evenwichtige werkbelastingscenario's bood ScaleGrid 0,5x lagere latentiekenmerken in vergelijking met RDS.

ScaleGrid 'High Performance'-implementatie kan 2x-3x de doorvoer bieden met de helft van de latentie van RDS met als bijkomend voordeel dat er 2 leesreplica's zijn in vergelijking met 1 in RDS. Ga voor meer informatie over de MySQL-hostingvoordelen van ScaleGrid ten opzichte van Amazon RDS voor MySQL naar onze pagina MySQL-providers vergelijken of start een gratis proefperiode van 30 dagen om het volledig beheerde DBaaS-platform te verkennen.


  1. SQL MAX() voor beginners

  2. Installeer Innotop om de prestaties van de MySQL-server te controleren

  3. Een overzicht van Quests Nieuwste databasebewakingsservice - Spotlight Cloud

  4. PDO MySQL:PDO::ATTR_EMULATE_PREPARES gebruiken of niet?