AWS är den # 1 molnleverantören för databashosting med öppen källkod, och go-to molnet för MySQL-distributioner. När organisationer fortsätter att migrera till molnet är det viktigt att komma inför prestandaproblem, som hög latens, låg genomströmning och replikeringsfördröjning med högre avstånd mellan dina användare och molninfrastruktur. Medan många AWS-användare som standard använder sin hanterade databaslösning, Amazon RDS, finns det alternativ tillgängliga som kan förbättra din MySQL-prestanda på AWS genom avancerade anpassningsalternativ och obegränsat stöd för EC2-instanser. ScaleGrid erbjuder ett övertygande alternativ till att hosta MySQL på AWS som erbjuder bättre prestanda, mer kontroll och ingen inlåsning av molnleverantörer och samma pris som Amazon RDS. I det här inlägget jämför vi prestandan för MySQL Amazon RDS vs. MySQL Hosting på ScaleGrid på AWS High Performance-instanser.
TLDR
ScaleGrids MySQL på AWS High Performance-distribution kan ge 2x-3x genomströmningen vid halva latensen av Amazon RDS för MySQL med den extra fördelen att ha 2 läsrepliker jämfört med 1 i RDS.
MySQL på AWS Performance Test
ScaleGrid | Amazon RDS | |
Instanstyp | AWS High Performance XLarge (se systeminformation nedan) | DB-instans r4.xlarge (Multi-AZ) |
Distribueringstyp | 3 Node Master-Slave Set med semisynkron replikering | Multi-AZ-distribution med 1 läsreplika |
SSD-disk | Lokal SSD och allmänt bruk – 2TB | Allmänt syfte – 2TB |
Månadskostnad (USD) | 1 798 USD | 1 789 USD |
Amazon RDS Kostnader | Pris | Quantity | Totalt | Anteckningar |
Multi-AZ | ||||
DB-instans (hr) | 0,48 USD | 730 | 350,40 USD | db.r4.xlarge |
DB-instans (hr) | 0,48 USD | 730 | 350,40 USD | db.r4.xlarge |
Lagring (GB) | 0,115 USD | 2000 | 230,00 USD | Allmänt syfte – 2TB (Single-AZ) |
Läs Replica | ||||
DB-instans (hr) | 0,48 USD | 730 | 350,40 USD | db.r4.xlarge (Single-AZ) |
Lagring (GB) | 0,115 USD | 2000 | 230,00 USD | Allmänt syfte – 2TB (Single-AZ) |
Övriga kostnader | ||||
Säkerhetskopieringslagring (GB) | 0,095 USD | 1000 | 95,00 USD | Frigöra upp till 100 % av DB-lagring |
Dataöverföring (ut till internet) | 0,09 USD | 0 | 0,00 USD | Gratis upp till 1 GB/månad |
Dataöverföring (ut till regioner) | 0,01 USD | 2000 | 20,00 USD | Östra USA (N. Virginia) |
Support | 162,62 USD | 1 | 162,62 USD | 10 % av månadskostnaden |
Totalt | 1 788,82 USD |
Som du kan se från tabellen ovan ligger MySQL RDS-prissättningen inom 10 USD från ScaleGrids fullt hanterade och allomfattande MySQL-värdlösning.
Vad är ScaleGrids högpresterande replikuppsättningar?
ScaleGrid MySQL på AWS High Performance replica set använder en hybrid av lokal SSD och EBS disk för att uppnå både hög prestanda och hög tillförlitlighet. En typisk konfiguration distribueras med en replikuppsättning med tre noder:
- Master och Slave-1 använder lokala SSD-diskar.
- Slave-2 använder en EBS-disk (kan vara General Purpose eller en Provisioned IOPS-disk).
Vad betyder detta? Eftersom Master och Slave-1 körs på lokal SSD får du bästa möjliga diskprestanda från dina AWS-maskiner. Ingen mer nätverksbaserad EBS, bara blixtsnabb lokal SSD. Läser och skriver till din primära, och även läser från Slave-1 kommer att fungera med SSD-hastighet. Slave-2 använder en EBS-datadisk, och du kan konfigurera mängden IOPS som krävs för ditt kluster. Den här konfigurationen ger fullständig säkerhet för dina data, även om du skulle förlora de lokala SSD-diskarna.
ScaleGrids MySQL AWS High Performance XLarge replica set använder i3.xlarge (30,5 GB RAM) instanser med lokal SSD för Master och Slave-1, och en i3.2xlarge (61 GB) RAM)-instans för Slave-2.
MySQL-konfiguration
En liknande MySQL-konfiguration används på både ScaleGrid- och RDS-distributioner:
Konfiguration | Värde |
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_arbetare | 30 |
slave_parallel_type | LOGICAL_CLOCK |
MySQL Performance Benchmark Configuration
Konfiguration | Detaljer |
Verktyg | Sysbench version 1.0.17 |
Värd | 1 r4.xlarge placerad i samma AWS-datacenter som Master MySQL |
# tabeller | 100 |
# rader per tabell | 5 000 000 |
Arbetsbelastningsgenererande skript | oltp_read_write.lua |
Scenarier och resultat för MySQL-prestandatest
För att säkerställa att vi tillhandahåller informativa resultat för alla MySQL AWS-arbetsbelastningstyper har vi delat upp våra tester i dessa tre scenarier så att du kan utvärdera baserat på din läs-/skrivbelastningsintensitet:
- Läsintensiv arbetsbelastning: 80 % läser och 20 % skriver
- Balanserad arbetsbelastning: 50 % läser och 50 % skriver
- Skriv intensiv arbetsbelastning: 20 % läser och 80 % skriver
Varje scenario körs med ett varierande antal sysbench-klienttrådar från 50 till 400, och varje test körs i 10 minuter. Vi mäter genomströmning i termer av Queries Per Second (QPS) och 95th Percentile latens, och säkerställer att den maximala replikeringsfördröjningen på slavarna inte överskrider 30s. För några av testerna på ScaleGrid-distributionen är MySQL-konfigurationen binlog_group_commit_sync_delay avstämd så att slavreplikeringsfördröjningen inte går längre än 30s. Denna teknik kallas för att "bromsa befälhavaren för att snabba upp slavarna" och förklaras i J-F Gagnes blogg.
Hur man förbättrar #MySQL AWS-prestanda 2X över Amazon RDS till samma kostnadKlicka för att tweetaScenario 1:Läsintensiv arbetsbelastning med 80 % läsning och 20 % skrivning
Som vi kan se från de läsintensiva arbetsbelastningstesterna kan ScaleGrid högpresterande MySQL-instanser på AWS konsekvent hantera omkring 27 800 QPS var som helst från 50 upp till 400 trådar. Detta är nästan en ökning med 200 % jämfört med MySQL RDS-prestanda som i genomsnitt bara är 9 411 QPS över samma spektrum av trådar.
ScaleGrid upprätthåller också 53 % lägre latens i genomsnitt genom hela MySQL AWS prestandatest. Både Amazon RDS och ScaleGrid fördröjning ökar stadigt när antalet trådar växer, där ScaleGrid maxar på 383 ms för 400 trådar medan Amazon RDS ligger på 831 ms på samma nivå.
Scenario 2:Balanserad arbetsbelastning med 50 % läsning och 50 % skrivning
I våra balanserade prestandatester för arbetsbelastning överträffar ScaleGrids MySQL High Performance-implementering på AWS igen med ett genomsnitt på 20 605 QPS på trådar som sträcker sig från 50 till 400. Amazon RDS endast i genomsnitt 8 296 för samma trådantal, vilket resulterade i en förbättring på 148 % med ScaleGrid.
Både ScaleGrid- och Amazon RDS-latens minskade avsevärt i de balanserade arbetsbelastningstesterna jämfört med de läsintensiva testerna ovan. Amazon RDS hade i genomsnitt 258 ms latens i testerna med balanserad arbetsbelastning, där ScaleGrid endast var i genomsnitt 125 ms och uppnådde en 52 % minskning av latensen jämfört med MySQL på Amazon RDS.
Scenario 3:Skrivintensiv arbetsbelastning med 20 % läsning och 80 % skrivning
I vårt sista skrivintensiva MySQL AWS-arbetsbelastningsscenario uppnådde ScaleGrid betydligt högre genomströmningsprestanda med ett genomsnitt på 17 007 QPS över intervallet 50 till 400 trådar. Detta är en förbättring på 123 % jämfört med Amazon RDS som bara uppnådde 7 638 QPS över samma antal trådar.
95:e percentilens latenstest gav också betydligt lägre latens för ScaleGrid med ett genomsnitt på 114ms över 50 till 400 trådar. Amazon RDS uppnådde ett genomsnitt på 247 ms i sina latenstest, vilket resulterade i en genomsnittlig minskning av latensen med 54 % när ScaleGrids High Performance MySQL implementerades på AWS-tjänster över Amazon RDS.
Analys
Som vi observerade från testresultaten resulterade läsintensiva arbetsbelastningar i både högre genomströmning och latens över balanserade arbetsbelastningar och skrivintensiva arbetsbelastningar, oavsett hur MySQL distribuerades på AWS:
MySQL på AWS Genomströmningsprestandatestmedel | ScaleGrid | Amazon RDS | ScaleGrid Improvement |
Läsintensiv genomströmning | 27 795 | 9 411 | 195,4 % |
Balance Workload Throughput | 20 605 | 8 296 | 148,4 % |
Skriv intensiv genomströmning | 17 007 | 7 638 | 122,7 % |
MySQL på AWS Latency Performance Test Averages | ScaleGrid | Amazon RDS | ScaleGrid Improvement |
Läsintensiv latens | 206ms | 439 ms | -53,0 % |
Balanserad arbetsbelastningslatens | 125 ms | 258ms | -51,6 % |
Skriv intensiv latens | 114ms | 247ms | -53,8 % |
Förklaring av resultat
- Vi ser att ScaleGrid MySQL på AWS-distribution gav nästan 3 gånger bättre genomströmning för den läsintensiva arbetsbelastningen jämfört med RDS-distributionen.
- När skrivbelastningen ökade, även om den absoluta genomströmningen minskade, gav ScaleGrid fortfarande nära 2,5 gånger bättre genomströmningsprestanda.
- För skrivintensiva arbetsbelastningar upptäckte vi att replikeringsfördröjningen började komma in för EBS-slaven på ScaleGrid-distributionen. Eftersom vårt mål var att hålla slavreplikeringsfördröjningen inom 30s för våra körningar, introducerade vi binlog_group_commit_sync_delay för att säkerställa att slaven kunde uppnå bättre parallell exekvering. Detta kontrollerade fördröjningen och resulterade i lägre absolut genomströmning på ScaleGrid-distributionen, men vi kunde fortfarande se en 2,2 gånger bättre genomströmning jämfört med RDS-distribution.
- För alla scenarier för läsintensiv, skrivintensiv och balanserad arbetsbelastning erbjöd ScaleGrid 0,5 gånger lägre latensegenskaper jämfört med RDS.
ScaleGrid 'High Performance'-distribution kan ge 2x-3x genomströmningen vid halva latensen av RDS med en extra fördel av att ha 2 läsrepliker jämfört med 1 i RDS. För att lära dig mer om ScaleGrids MySQL-värdfördelar jämfört med Amazon RDS för MySQL, kolla in sidan Jämför MySQL-leverantörer eller starta en gratis 30-dagars provperiod för att utforska den fullt hanterade DBaaS-plattformen.