The following is the first in a series of posts about the Azure SQL Database DTU Calculator. This post describes the need for the calculator and the process of creating it.
As part of my job at Microsoft, I get the opportunity to work closely with companies across the US. My particular area of focus is Azure so I spend most of my days talking about a company’s business model, architecture, IT costs, and other technical issues to help them identify areas where Azure can help as well as provide them with a roadmap for migration. During one such meeting about 6 months ago, I was talking to a company about Azure SQL Database as a potential option for migrating their RackSpace SQL Server to Azure. If you’re familiar with Azure SQL Database, then you’re probably familiar with the term database throughput units (DTUs). If not, a DTU is something the Azure SQL team created to describe the relative capacity of a performance level across a blended measure of CPU, memory, reads, and writes. The article, Azure SQL Database Service Tiers and Performance Levels, contains a more thorough explanation. Anyway, during that discussion one of the company’s architects asked, “how do I know how many DTUs my database needs.”
Seems like a reasonable question and at the time I didn’t have a great answer. I’d read the guidance, Azure SQL Database introduces new near real-time performance metrics, so I was familiar with the process of starting with feature capability, picking the lowest performance level, migrating the database, and then adjusting based on utilization. However, I could see the concern this caused for the engineers. Migrating a database from location A to location B isn’t a trivial task and doing so with any level of ambiguity isn’t something any engineer would recommend. It was at that time I reached out to a friend on the Azure SQL Database team for help. The conversation went something like this (names have been changed to protect the innocent):
Hey John. Quick question… Do you have anything to do with or know anything about SQL Database DTUs?
Cool. In your opinion, would it be possible to write a DTU Calculator which a developer could run against their on-premise database to see which tier of SQL Database they would map to?
We’ve discussed doing such a thing, and I think it’s a good idea, just haven’t had the time to do it yet. Feel free to send me email, and I’ll get the right conversation going.
A calculator is born…
One of my main objectives when developing the calculator was to keep it simple – something engineers at any level of expertise could easily use. With that in mind, I spent the last several months working with the Azure SQL team to understand all the complexities of converting SQL Server performance to database throughput units and developing a website to wrap those complexities in a simple, intuitive interface which can analyze your production database workload and accurately calculate the service tier and performance level needed in Azure SQL Database – all before migration. I’m happy to announce the Azure SQL Database DTU Calculator does just that! The calculator is available to use but I’d love to hear your feedback and results. As I mentioned earlier, this post is just an introduction. Look for my next post to go into more detail about using the calculator and interpreting the results.