sql >> Databasteknik >  >> RDS >> Mysql

Hur man förbättrar MySQL AWS-prestanda 2X över Amazon RDS till samma kostnad

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:

  1. Läsintensiv arbetsbelastning: 80 % läser och 20 % skriver
  2. Balanserad arbetsbelastning: 50 % läser och 50 % skriver
  3. 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 tweeta

Scenario 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.


  1. Förstå index i MySQL:Del ett

  2. Hur man skapar en MySQL-installation för lokal testning

  3. Paketet har redan lagt upp 50 skålar. Visar inte mer

  4. Utmaningar med att skala Moodle MySQL-databasen