GigaOm, an independent research firm that I highly respect, released a study today comparing performance and price between a SQL Server VM on Microsoft’s Azure platform and a SQL Server VM on Amazon’s AWS EC2 platform. Azure is the clear winner. But, I’m pretty tough on vendors, as you might know from some of my blog posts. Let’s review their findings.
Before we get started, SQL Server database-as-a-service (Azure SQL Database) and/or Managed Instances are great to use, when it’s the right use case. All the rage is XaaS nowadays. But, you know as well as I do that a high number of variables exist on if you can even use one of these platforms instead of installing SQL Server in a VM somewhere. The third-party software vendor might not support a DBaaS platform (ISVs – get with the times!). The software might have some ‘legacy’ (a nice name for it) practices of leveraging software installed in the OS via xp_cmdshell, or using DB Mail to send automated emails for your business. I’m sure you have a running list of things in your environment like this that make you blush when someone mentions bad practices. Installing SQL Server in a VM, either on-prem or in the cloud, gives you full control and allows these practices to continue – because sometimes you can’t fix vendor code.
Back to the study and off of my soapbox…
First, they used an updated benchmarking suite, the TPC-E benchmark. I’m actually thrilled that they used both Windows and Linux (Red Hat Enterprise Linux specifically) as the OS platform, as it shows the validity of using Linux for SQL Server workloads, something that I’ve been a huge fan of for years. The TPC-E benchmark is more real-world than some of the older TPC benchmarks such as TPC-C, and is meant to represent an OLTP workload.
The workload on either cloud provider was not designed to be the ‘biggest’ or ‘best’, meaning massive, cost-prohibitive to most, or just unreasonable. It was meant to represent a ‘large’ deployment on either platform. I appreciate that. If you want to look at the largest platforms out there, which are admittedly quite fun to work on, they are not really representative of the vast majority of the workloads that you’ll find being placed in the public cloud. Instead, they chose to deploy a fairly big SQL Server VM on both platforms – 64 vCPUs and between 432 and 488GB of RAM. These are larger than most SQL Servers that I find in the cloud, but are representative of many of the larger SQL Servers that I manage in on-prem datacenters with businesses debating about the viability of the cloud for these workloads.
The storage configuration was quite impressive too on both servers.
The RHEL configuration was quite similar to the Windows Server configuration.
The first round of results shows that the SQL Server performance on Azure with a very similar VM configuration was over three times faster, measured in database transaction per second.
They also make some significant claims on the price improvements of SQL Server IaaS on Azure over AWS, claiming an 86.8% better price-performance ratio when comparing Azure Hybrid Benefit to AWS License Mobility. They chose to do the price comparison by looking at the overall dollar versus transactions per second metrics, which I feel is a fair comparison that factors performance into the price.
One item they note is one of our favorite performance-tuning tricks, which is to use the Azure BlobCache feature. It leverages the VM RAM and a local SSD on the virtualized host in Azure to provide free read caching to boost performance of any I/O-dependent workload, which definitely includes SQL Server workloads.
Everyone’s licensing scenario is different, and vary wildly. I urge you to do your own research into your licensing scenario, use cases, and judge equivalent scaled VMs on both platforms based on your needs. The results of the report are quite compelling, though, and it’s similar to many of the results that we develop when comparing the various cloud providers for our customers.
I never want to come off as a marketing pitch for any vendor. I intentionally do not resell software or hardware in my consulting business, as I always want the right tool for the specific situation and client at hand. Read the report, weigh the stats and compare it to your environment, and judge for yourself. Everyone’s needs, experiences, expectations, and budgets are different. Test and validate anything you’re considering moving to for yourself. As for me, I chose Azure for my production environment for my business.