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:
- Leesintensieve werkbelasting: 80% leest en 20% schrijft
- Gebalanceerde werklast: 50% leest en 50% schrijft
- 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 tweetenScenario-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.