Microsoft Azure è uno dei provider di cloud più popolari al mondo e si adatta perfettamente all'hosting di database su applicazioni che sfruttano Microsoft nella propria infrastruttura. MySQL è il database open source numero uno comunemente ospitato tramite istanze di Azure. Sebbene Microsoft offra il proprio prodotto Database di Azure, sono disponibili altre alternative che potrebbero aiutarti a migliorare le prestazioni di MySQL. In questo post del blog, confrontiamo il database di Azure per MySQL con ScaleGrid MySQL in Azure in modo da poter vedere quale provider offre le migliori prestazioni di velocità effettiva e latenza. Misuriamo la latenza nella latenza del 95° percentile di ms.
In sintesi:TLDR | ||||||
---|---|---|---|---|---|---|
|
Hai appena iniziato? Dai un'occhiata al post Il modo migliore per ospitare MySQL su Azure Cloud per ulteriori informazioni sull'ottimizzazione della distribuzione del database nel cloud.
MySQL Azure Performance Benchmark
In questo rapporto di benchmark, confrontiamo l'hosting MySQL in Azure su ScaleGrid e il database di Azure per MySQL in questi tre scenari di carico di lavoro:
- Carico di lavoro ad alta intensità di lettura:80% di letture e 20% di scritture
- Carico di lavoro bilanciato:50% letture e 50% scritture
- Carico di lavoro ad alta intensità di scrittura:20% di letture e 80% di scritture
Misuriamo il throughput MySQL e le prestazioni di latenza e misuriamo il throughput in termini di query al secondo (QPS) e latenza in termini di 95° percentile (ms). Consulta la nostra sezione Configurazione benchmark sotto il rapporto sulle prestazioni per vedere come sono stati configurati questi test.
Prestazioni MySQL ad alta intensità di lettura
I carichi di lavoro ad alta intensità di lettura MySQL sono carichi di lavoro generalmente dominati da operazioni di lettura, come SELECT. Quindi, un carico di lavoro ad alta intensità di lettura sarebbe quello che esegue ricerche nel database più spesso anziché scrivervi. Percona ha un ottimo post sui carichi di lavoro ad alta intensità di lettura e scrittura in cui puoi saperne di più.
Diamo un'occhiata alle prestazioni di velocità effettiva e latenza di ScaleGrid MySQL rispetto al database di Azure per MySQL:
Produttività
Fili | ScaleGrid | Azzurro | Miglioramento ScaleGrid |
---|---|---|---|
25 | 5.299 | 1.689 | 214% |
50 | 6.092 | 2.302 | 165% |
100 | 8.429 | 2.877 | 193% |
150 | 9.011 | 2.870 | 214% |
175 | 7.025 | 2.805 | 151% |
Come possiamo vedere dal grafico e dalla tabella delle prestazioni sopra, ScaleGrid MySQL raggiunge un throughput fino a 3 volte superiore rispetto al database di Azure per i carichi di lavoro a uso intensivo di lettura. Mentre la velocità effettiva di Database di Azure per MySQL è inferiore a 3.000 query al secondo in tutti gli scenari di thread, ScaleGrid ha oltre 5.000-9.000 query al secondo in tutti i thread. |
Latenza
Fili | ScaleGrid | Azzurro | Miglioramento ScaleGrid |
---|---|---|---|
25 | 258 | 451 | -43% |
50 | 101 | 670 | -85% |
100 | 148 | 978 | -85% |
150 | 309 | 1562 | -80% |
175 | 1.089 | 1.678 | -35% |
Mentre la latenza del database di Azure per MySQL aumenta rapidamente all'aumentare del numero di thread, ScaleGrid MySQL raggiunge costantemente una bassa latenza su tutti i conteggi di thread . In media, ScaleGrid per MySQL ha una latenza inferiore del 66% rispetto al database di Azure per MySQL per scenari di carico di lavoro ad alta intensità di lettura. |
Riduci la tua latenza #MySQL del 66% su Azure, con prestazioni di throughput fino a 3 volte superioriClick To Tweet
Prestazioni del carico di lavoro bilanciato MySQL
I carichi di lavoro bilanciati sfruttano quantità pressoché uguali di operazioni di lettura e di scrittura.
Produttività
Fili | ScaleGrid | Azzurro | Miglioramento ScaleGrid |
---|---|---|---|
25 | 3.806 | 1.748 | 118% |
50 | 5.834 | 2.437 | 139% |
100 | 6.365 | 2.712 | 135% |
150 | 5.724 | 2.775 | 106% |
175 | 6.206 | 1.767 | 251% |
In media, ScaleGrid ha migliorato la velocità effettiva di MySQL del 150% rispetto al database di Azure per MySQL per carichi di lavoro bilanciati ed è più di 2 volte migliore su tutti i thread. Il database di Azure ha raggiunto il massimo di circa 2.775 query al secondo a 150 thread, mentre ScaleGrid ha raggiunto 5.724 query al secondo per lo stesso numero di thread. |
Latenza
Fili | ScaleGrid | Azzurro | Miglioramento ScaleGrid |
---|---|---|---|
25 | 76 | 390 | -81% |
50 | 103 | 612 | -83% |
100 | 240 | 943 | -75% |
150 | 560 | 1.590 | -65% |
175 | 560 | 2.199 | -75% |
Vediamo un altro notevole miglioramento delle prestazioni di latenza per carichi di lavoro bilanciati, in cui le distribuzioni ScaleGrid MySQL sono in grado di funzionare a meno di un terzo la latenza rispetto a Database di Azure per MySQL. |
Prestazioni MySQL ad alta intensità di scrittura
Mentre le operazioni di lettura effettuano ricerche dal database, le operazioni di scrittura sono quelle che salvano o modificano il database, come le query INSERT, UPDATE o DELETE. I carichi di lavoro ad alta intensità di scrittura sono in genere più costosi dei carichi di lavoro ad alta intensità di lettura poiché le operazioni consumano più risorse. Confrontiamo ScaleGrid e prestazioni di latenza e velocità effettiva del database di Azure nei carichi di lavoro MySQL a uso intensivo di scrittura.
Produttività
Fili | ScaleGrid | Azzurro | Miglioramento ScaleGrid |
---|---|---|---|
25 | 3.327 | 826 | 303% |
50 | 5.003 | 1.154 | 334% |
100 | 5.180 | 1.476 | 251% |
150 | 4.310 | 1.651 | 161% |
175 | 4.071 | 1.643 | 148% |
Nel nostro scenario ad alta intensità di scrittura, siamo in grado di vedere il più grande miglioramento delle prestazioni in cui ScaleGrid raggiunge fino a 4 volte velocità effettiva superiore rispetto al database di Azure . Ciò è particolarmente evidente nei nostri scenari a basso thread, ma anche a 175 thread ScaleGrid offre prestazioni 2,5 volte migliori rispetto al database di Azure. |
Latenza
Fili | ScaleGrid | Azzurro | Miglioramento ScaleGrid |
---|---|---|---|
25 | 76 | 277 | -73% |
50 | 101 | 383 | -74% |
100 | 298 | 996 | -70% |
150 | 760 | 1.740 | -56% |
175 | 1.089 | 2.009 | -46% |
ScaleGrid ha nuovamente superato il database di Azure con una media del 64% di latenza inferiore su tutto il numero di thread per carichi di lavoro ad alta intensità di scrittura. |
Come si può vedere dai report precedenti, ScaleGrid consente di aumentare significativamente la velocità effettiva e di ridurre la latenza rispetto alle distribuzioni di database di Azure per MySQL in carichi di lavoro a uso intensivo di lettura, scrittura e bilanciati scenari. Per ulteriori informazioni sul confronto tra questi due provider tra le funzionalità, consulta la pagina ScaleGrid e database MySQL di Azure.
Configurazioni benchmark
Diamo un'occhiata alle configurazioni che abbiamo utilizzato nel benchmark delle prestazioni:
Confronto di configurazione
Abbiamo progettato la configurazione usando i piani più comparabili offerti tra ScaleGrid e Database di Azure. Ci sono solo piccole differenze e i costi sono gli stessi per i due fornitori:
ScaleGrid MySQL in Azure | Database di Azure per MySQL | |
---|---|---|
Tipo di istanza | Dedicato Large:Standard_Ds2_v2 2 core | Uso generico:2 core |
RAM | 7GB | 10 GB (5 GB di memoria per vCore) |
SSD | 128 GB, disco SSD Premium, 500 IOPS | 167 GB, fino a 500 IOPS |
Tipo di distribuzione | Quorum 2+1 con replica semisincrona | +1 replica di lettura replica asincrona |
Regione | Stati Uniti orientali | Stati Uniti orientali |
Supporto | Incluso | Piano standard ($ 100) |
Prezzo mensile stimato | $400 | $400 |
Configurazione Sysbench
Configurazione | Dettagli |
---|---|
Strumento | Sysbench versione 1.0.20 |
Host | Standard_Ds2_v2 2 core (2 vcpus, 7 GB di memoria) nella regione degli Stati Uniti orientali |
# Tabelle | 100 |
# righe per tabella | 2.000.000 |
Distribuzione di numeri casuali | Speciale |
Configurazione di MySQL Server
Configurazione | Azure Scalegrid (dedicato) | DB Azure per MySQL |
---|---|---|
Versione SQL | 5.7.25 | 5.7.27 |
innodb_buffer_pool_size | 4G | 7.5G |
innodb_log_file_size | 1G | 268M |
innodb_io_capacity | 500 | 500 |
innodb_io_capacity_max | 1000 | 1000 |
Nota che su ScaleGrid hai opzioni avanzate per personalizzare le tue configurazioni MySQL. Ciò consente di personalizzare la distribuzione in base alle esigenze dell'applicazione e di ottimizzare le prestazioni. Sfortunatamente, Database di Azure non consente la personalizzazione di alcuni parametri, quindi sei bloccato con le configurazioni predefinite disponibili tramite la loro piattaforma.
Ad esempio, siamo stati in grado di personalizzare la dimensione del file di registro di InnoDB su 1 GB, mentre per il database di Azure questo non può essere modificato e ha un valore predefinito di 268 M. Altre informazioni sulle limitazioni nel database di Azure per MySQL.
Esistono molti altri vantaggi dell'utilizzo di Scalegrid MySQL per Azure, controlla il confronto completo nella nostra pagina ScaleGrid e database di Azure - Hosting MySQL.