Microsoft's cloud is a common home for MySQL, and Microsoft ships its own managed offering, Azure Database for MySQL. ScaleGrid's report compares that service against its own MySQL hosting on Azure, using 95th percentile latency in milliseconds and throughput in queries per second (QPS) as the yardsticks.

What was measured

Three workload mixes were exercised against both providers:

  • Read-intensive: 80% reads and 20% writes
  • Balanced: 50% reads and 50% writes
  • Write-intensive: 20% reads and 80% writes

Read operations cover statements such as SELECT; writes cover INSERT, UPDATE and DELETE, which consume more resources and make write-heavy traffic the costlier of the two regimes. Full details of the test bed appear in the configuration section below.

Results by workload

Read-intensive

A read-dominated workload searches the database more often than it modifies it.

Throughput:

MySQL - ScaleGrid vs Azure Databases – Read-Intensive Throughput Performance Graph
Threads ScaleGrid Azure ScaleGrid Improvement
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%
As we can see from the above graph and performance table, ScaleGrid MySQL achieves up to 3x higher throughput compared to Azure Database for read-intensive workloads. While Azure Database for MySQL throughput is under 3,000 queries per second across all thread scenarios, ScaleGrid has over 5,000-9,000 queries per second across threads.

Latency:

MySQL - ScaleGrid vs Azure Databases – Read-Intensive Latency Performance Graph
Threads ScaleGrid Azure ScaleGrid Improvement
25 258 451 -43%
50 101 670 -85%
100 148 978 -85%
150 309 1562 -80%
175 1,089 1,678 -35%
While Azure Database for MySQL latency rapidly increases as the number of threads grows, ScaleGrid MySQL steadily achieves low latency across all thread counts. On average, ScaleGrid for MySQL has 66% lower latency than Azure Database for MySQL for read-intensive workload scenarios.

Balanced

Here reads and writes are roughly equal.

Throughput:

MySQL - ScaleGrid vs Azure Databases – Balanced Workload Throughput Performance Graph
Threads ScaleGrid Azure ScaleGrid Improvement
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%
On average, ScaleGrid improved the MySQL throughput by 150% over Azure Database for MySQL for balanced workloads, and is over 2x better across all number of threads. Azure Database maxed out at around 2,775 queries per second at 150 threads, while ScaleGrid achieved 5,724 queries per second for the same number of threads.

Latency:

MySQL - ScaleGrid vs Azure Databases – Balanced Workload Latency Performance Graph
Threads ScaleGrid Azure ScaleGrid Improvement
25 76 390 -81%
50 103 612 -83%
100 240 943 -75%
150 560 1,590 -65%
175 560 2,199 -75%
We see another dramatic improvement in latency performance for balanced workloads, where ScaleGrid MySQL deployments are able to perform at less than one third the latency compared to Azure Database for MySQL.

Write-intensive

Throughput:

MySQL - ScaleGrid vs Azure Databases – Write-Intensive Throughput Performance Graph
Threads ScaleGrid Azure ScaleGrid Improvement
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%
In our write-intensive scenario, we are able to see the largest performance improvement where ScaleGrid achieves up to 4x higher throughput compared to Azure Database. This is especially apparent in our low-thread scenarios, but even at 175 threads ScaleGrid still performs 2.5x better than Azure Database.

Latency:

MySQL - ScaleGrid vs Azure Databases – Write-Intensive Latency Performance Graph
Threads ScaleGrid Azure ScaleGrid Improvement
25 76 277 -73%
50 101 383 -74%
100 298 996 -70%
150 760 1,740 -56%
175 1,089 2,009 -46%
ScaleGrid outperformed Azure Database again with an average of 64% lower latency across all number of threads for write-intensive workloads.

Across all three scenarios the reports show higher throughput and lower latency for ScaleGrid deployments than for Azure Database for MySQL.

Benchmark configuration

The plans were chosen to be as close to equivalent as possible on both sides: differences are minor and the two configurations cost the same.

  ScaleGrid MySQL on Azure Azure Database for MySQL
Instance Type Dedicated Large: Standard_Ds2_v2 2 cores General Purpose: 2 cores
RAM 7GB 10GB (5GB Memory per vCore)
SSD 128GB, Premium SSD disk, 500 IOPS 167GB, up to 500 IOPS
Deployment Type 2+1 Quorum with Semisynchronous replication +1 Read Replica Asynchronous replication
Region East US East US
Support Included Standard plan ($100)
Estimated Monthly Price $400 $400

Sysbench settings:

Configuration Details
Tool Sysbench version 1.0.20
Host Standard_Ds2_v2 2 cores (2 vcpus, 7GB memory) on East US region
# Tables 100
# Rows per table 2,000,000
Random numbers distribution Special

MySQL server settings:

Configuration Azure Scalegrid (Dedicated) Azure DB for MySQL
SQL version 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

InnoDB log file size illustrates the gap between the two platforms. ScaleGrid lets you raise it to 1GB; on Azure Database the parameter cannot be modified and defaults to 268M. More broadly, ScaleGrid exposes advanced options for tuning MySQL configuration settings, while Azure Database leaves a number of parameters fixed at platform defaults. Microsoft documents the affected parameters in its MySQL limits page.