Introduction
Many organizations struggle with unpredictable workloads upon their multiple databases holding various applications. Over-pay to high resources all the time is based on peak usage calculations. Compromise on performance by assigning the lower resources and experience ineffective solutions.
Azure Elastic pools allow us to manage multiple databases that have varying performance. In an Elastic pool, multiple databases can share DTUs amongst themselves as and when they need which can result in better performance and cost savings. An Elastic database pool provides elastic database transaction units (eDTUs) and storage (GBs) that are shared by multiple databases. It also allows us to allocate a shared set of computing resources to a collection of Azure SQL databases, meaning that your databases are running in a shared resource pool on a co-tenanted Azure server over which you have no direct control. The benefit of using an Elastic Pool in Azure SQL Server database is that using it, a single database can be moved in and out of an elastic pool, which gives us flexibility. The elastic pool is a collection of a single database with a shared set of resources, such as CPU or memory. Single databases can be moved into and out of an elastic pool.
Understanding eDTUs and DTUs
This article assumes that you are familiar with the term DTUs. DTUs are a bit abstract but determine the relative horsepower of the database in comparison with others. It does not match a certain number of operations/second but rather a comparison between the different instance scales(if you are new to DTUs you can find some useful info here). So 5 DTUs are the smallest version and should be used for very low usage. A 20 DTU Database is 4 times more capable than the 5 DTU database.
Resource Allocation for Azure Elastic SQL Pools
A large difference between the peak and average utilization of a database indicates prolonged periods of low utilization and short periods of high utilization. This utilization pattern is ideal for sharing resources across databases. A database should be considered for a pool when its peak utilization is about 1.5 times greater than its average utilization.
All databases in an elastic pool share the same allocation of resources, such as CPU, memory, worker threads, storage space, tempdb, on the assumption that only a subset of databases in the pool will use compute resources at any given time. Azure SQL Database elastic pools are a simple, cost-effective solution for managing and scaling multiple databases that have varying and unpredictable usage demands. The databases in an elastic pool are on a single server and share a set number of resources at a set price. Elastic pools solve this problem by ensuring that databases get the performance resources they need when they need it. They provide a simple resource allocation mechanism within a predictable budget. The DTU allocation per database is unaffected, but now we have an overall eDTU limit for the pool. A 200eDTU elastic pool, for example, provides the same compute size as an S4(200 DTU) Azure SQL Database. Of course, now those 200 DTUs are shared by however many databases you have in the pool.
There is some additional cost to pooling: eDTUs are 1.5x the price of DTUs. This is explained by pooled resources being more likely to be used, meaning that the Azure platform. The minimum configurable data storage is 1 GB.
Single Database DTU and Storage Limits
|
Basic
|
Standard
|
Premium
|
|
|
Maximum storage size per database
|
2 GB
|
1 TB
|
1 TB
|
|
Maximum storage size per pool
|
156 GB
|
4 TB
|
4TB
|
|
Maximum eDTUs per database
|
5
|
3000
|
4000
|
|
Maximum eDTUs per pool
|
1600
|
3000
|
4000
|
|
Maximum number of databases per pool
|
500
|
500
|
100
|

Join the conversation! Your thoughts help the community grow.