Update: 6th July 2014: This post was written based on my first impressions of Microsoft’s announcement of the SQL Database Service Tier Changes. Since this post was written, based on the performance testing I conducted, I believe more databases may be at risk of suffering a significant price increase. The performance tests results show S1 and to some extent S2 are quite poorly resourced tiers (esp. on disk read quota) compared to Web / Business. More details here.
- Many improvements in the move from data size to performance based service tiers.
- New service tiers represent significant price increase for databases in the 1 GB to 6 GB range; Azure uncompetitive and Microsoft risk losing customers to competitors in this database size range.
- Beyond 10 GB database size Azure remains competitive, for databases over 12 GB new pricing represents a cost reduction (assuming S1 service tier meets transaction rate requirements).
I have been mulling over the recently announced changes to the Service Tiers for Microsoft’s SQL Azure Database Service. I think on the whole they represent very good changes. Official posts about this here and here.
Whilst not explicitly stated on any official post I’ve seen, the changes look to be orientating the service more around delivering performance and much less around the size of your database. That’s a very good thing. There are lots of other improvements too, like an improved SLA, maximum database size increased to 500 GB and new/improved restore and replication options.
Still, part of the new strategy just doesn’t make sense to me. The pricing for small databases is not competitive and actually represents a very significant price increase for existing customers. The chart below will hopefully illustrate my point:
The Blue Line represents the current pricing for Web / Business databases – this is based on the size of your database. The Orange Line represents the new Basic Service Tier, which supports up to 2 GB databases. The Gray line represents the new S1 Standard Service Tier. All costs are based on the announced General Availability pricing for the Pay As You Go plans.
In this discussion I am focussing on the comparison between the existing Web databases and the new S1 tier. Whilst the Basic Tier looks attractive for very small, low/infrequently used workloads, the low size limit and “hourly transaction rate” just doesn’t fit any of my continuously running workloads – which are in the 1 to 10 GB database size range.
The Good News: above a database size of 10 GB, moving from Web to S1 will save you money, assuming the S1 transaction rate meets your requirements.
The Bad News: below 8 GB S1 will cost you more, potentially a lot more in relative terms.
One of my present workloads is an Azure messaging application whose database ranges between 1.5GB and 2.5GB in size in a typical week. Running it at present costs me about 12-15 USD per month. Under S1, that is going to become 40 USD. Wow, around a three-fold increase.
Of course, S1 supports up to 250 GB for the same price, but my messaging application doesn’t actually need anything like that much – this doesn’t feel very much like pay-for-only-what-you-use.
Surely this will also put off some (many?) new customers too from making the jump from Basic to Standard.
Other Options for Small SQL Databases: Azure and Amazon
In Azure running SQL Express in a VM comes in cheaper, though of course there are disadvantages with that too (lower resiliency and more management effort, just for starters). Outside of Azure, Amazon’s smallest RDS Cloud offering is significantly cheaper (around 28 USD per month). And Amazon offer a whole year of that service for free to new customers.
It feels to me like Microsoft needs an extra tier here – something like a “mini-S1”?
Bottom line: 40 USD per month for a database of a few GB on Azure just feels like way too much.