Evaluating Application Performance and Throughput in SQL Azure
The discussion of performance and throughput came up a few times in discussion with customers at PDC this year. Here are a few important things to understand when evaluating SQL Azure performance.
- SQL Azure Architecture and Provisioning Model: The details of the SQL Azure architecture and the provisioning model are here: http://msdn.microsoft.com/en-us/library/ee336256.aspx
Key takeaways; SQL Azure environment utilizes large number of nodes and the total capacity across these nodes means massive scale. SQL Azure provisions a logical server for each account. These servers are logical groupings of databases. Physically, these databases are spread across the environment to various nodes. Each node services many databases. Since placement of new databases is spread across the environment, it is not likely that 2 of your databases are on the same server.
Given this shared architecture, as long as there is excess capacity, workloads can continue to take full advantage of the nodes resources. At peak times, if resources run low, SQL Azure throttles and prioritizes workloads. This protects system stability, preventing issues like one workload monopolizing all the resources, and promote fair sharing of resources. Paired with this protection mechanism, SQL Azure employs load-balancing across nodes to ensure optimal utilization of aggregate capacity in the cluster. Load balancing in SQL Azure continually rebalances the work by moving databases within the cluster and workloads continue to take advantage of the available capacity in SQL Azure cluster. Just like any living system, the sophistication of these SQL Azure components like load balancing and throttling continues to improve and we can further exploit the capacity of the environment.
- Network Latency – The network latency is minimized when applications and data are close to each other. With the combination of Windows Azure and SQL Azure, you can host your applications and your data right next to each other in many geographies. With applications that sit at a distance to SQL Azure, connection quality an network latency may impact the performance especially for workloads that work with large data sets.
- SQL Azure High Availability – It is easy to forget that SQL Azure comes with %99.9 SLA. To ensure we are highly available, SQL Azure maintain redundant copies of your data. Some system capacity is spent on this activity but I think that is a fair compromise for most applications.
All of the above paired with the straightforward pricing model, SQL Azure environment provides great scalability and price-performance for applications.
One more thing to note before I close; given the architecture of SQL Azure, it is perfectly suited for application that take advantage of scale-out design patterns like database partitioning or sharding. Applications that utilize these patterns can access multiple nodes in SQL Azure environment thus can take advantage of larger portions of the system capacity. There are folks doing this today and I’d recommend viewing David’s talk at PDC for a deep dive into the topic;
- Cihan Biyikoglu and Henry Zhang