Resource limits for elastic pools using the DTU purchasing model
Applies to: Azure SQL Database
This article provides the detailed resource limits for databases in Azure SQL Database that are within an elastic pool using the DTU purchasing model.
- For DTU purchasing model limits for single databases on a server, see Overview of resource limits on a server.
- For DTU purchasing model resource limits for Azure SQL Database, see DTU resource limits single databases and DTU resource limits elastic pools.
- For vCore resource limits, see vCore resource limits - Azure SQL Database and vCore resource limits - elastic pools.
- For more information regarding the different purchasing models, see Purchasing models and service tiers.
Each read-only replica has its own resources such as DTUs, workers, and sessions. Each read-only replica is subject to the resource limits detailed later in this article.
Note
The Gen5 hardware in the vCore purchasing model has been renamed to standard-series (Gen5).
For Azure SQL Database elastic pools, the following tables show the resources available at each service tier and compute size. You can set the service tier, compute size, and storage amount using:
Important
For scaling guidance and considerations, see Scale an elastic pool
The resource limits of individual databases in elastic pools are generally the same as for single databases outside of pools based on DTUs and the service tier. For example, the max concurrent workers for an S2 database is 120 workers. So, the max concurrent workers for a database in a Standard pool is also 120 workers if the max DTU per database in the pool is 50 DTUs (which is equivalent to S2).
For the same number of DTUs, resources provided to an elastic pool may exceed the resources provided to a single database outside of an elastic pool. This means it is possible for the eDTU utilization of an elastic pool to be less than the summation of DTU utilization across databases within the pool, depending on workload patterns. For example, in an extreme case with only one database in an elastic pool where database DTU utilization is 100%, it is possible for pool eDTU utilization to be 50% for certain workload patterns. This can happen even if max DTU per database remains at the maximum supported value for the given pool size.
Note
The storage per pool resource limit in each of the following tables do not include tempdb
and log storage.
eDTUs per pool | 50 | 100 | 200 | 300 | 400 | 800 | 1200 | 1600 |
---|---|---|---|---|---|---|---|---|
Included storage per pool (GB) | 5 | 10 | 20 | 29 | 39 | 78 | 117 | 156 |
Max storage per pool (GB) | 5 | 10 | 20 | 29 | 39 | 78 | 117 | 156 |
Max In-Memory OLTP storage per pool (GB) | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A |
Max number DBs per pool 1 | 100 | 200 | 500 | 500 | 500 | 500 | 500 | 500 |
Max concurrent workers per pool 2 | 100 | 200 | 400 | 600 | 800 | 1600 | 2400 | 3200 |
Max concurrent logins per pool | 100 | 200 | 400 | 600 | 800 | 1600 | 2400 | 3200 |
Max concurrent external connections per pool 3 | 10 | 20 | 40 | 60 | 80 | 150 | 150 | 150 |
Max concurrent sessions per pool 2 | 30000 | 30000 | 30000 | 30000 | 30000 | 30000 | 30000 | 30000 |
Min DTU per database choices | 0, 5 | 0, 5 | 0, 5 | 0, 5 | 0, 5 | 0, 5 | 0, 5 | 0, 5 |
Max DTU per database choices | 5 | 5 | 5 | 5 | 5 | 5 | 5 | 5 |
Max storage per database (GB) | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 |
1 See Resource management in dense elastic pools for additional considerations.
2 For the max concurrent workers for any individual database, see Single database resource limits. For example, if the elastic pool is using standard-series (Gen5) and the max vCore per database is set at 2, then the max concurrent workers value is 200. If max vCore per database is set to 0.5, then the max concurrent workers value is 50 since on standard-series (Gen5) there are a max of 100 concurrent workers per vCore. For other max vCore settings per database that are less 1 vCore or less, the number of max concurrent workers is similarly rescaled.
3 See External Connections for additional details on what counts as an external connection.
eDTUs per pool | 50 | 100 | 200 | 300 | 400 | 800 |
---|---|---|---|---|---|---|
Included storage per pool (GB) 1 | 50 | 100 | 200 | 300 | 400 | 800 |
Max storage per pool (GB) | 500 | 750 | 1024 | 1280 | 1536 | 2048 |
Max In-Memory OLTP storage per pool (GB) | N/A | N/A | N/A | N/A | N/A | N/A |
Max number DBs per pool 2 | 100 | 200 | 500 | 500 | 500 | 500 |
Max concurrent workers per pool 3 | 100 | 200 | 400 | 600 | 800 | 1600 |
Max concurrent logins per pool | 100 | 200 | 400 | 600 | 800 | 1600 |
Max concurrent external connections per pool 4 | 10 | 20 | 40 | 60 | 80 | 150 |
Max concurrent sessions per pool 3 | 30000 | 30000 | 30000 | 30000 | 30000 | 30000 |
Min DTU per database choices | 0, 10, 20, 50 | 0, 10, 20, 50, 100 | 0, 10, 20, 50, 100, 200 | 0, 10, 20, 50, 100, 200, 300 | 0, 10, 20, 50, 100, 200, 300, 400 | 0, 10, 20, 50, 100, 200, 300, 400, 800 |
Max DTU per database choices | 10, 20, 50 | 10, 20, 50, 100 | 10, 20, 50, 100, 200 | 10, 20, 50, 100, 200, 300 | 10, 20, 50, 100, 200, 300, 400 | 10, 20, 50, 100, 200, 300, 400, 800 |
Max storage per database (GB) | 1024 | 1024 | 1024 | 1024 | 1024 | 1024 |
1 See SQL Database pricing options for details on additional cost incurred due to any extra storage provisioned.
2 See Resource management in dense elastic pools for additional considerations.
3 For the max concurrent workers for any individual database, see Single database resource limits. For example, if the elastic pool is using standard-series (Gen5) and the max vCore per database is set at 2, then the max concurrent workers value is 200. If max vCore per database is set to 0.5, then the max concurrent workers value is 50 since on standard-series (Gen5) there are a max of 100 concurrent workers per vCore. For other max vCore settings per database that are less 1 vCore or less, the number of max concurrent workers is similarly rescaled.
4 See External Connections for additional details on what counts as an external connection.
eDTUs per pool | 1200 | 1600 | 2000 | 2500 | 3000 |
---|---|---|---|---|---|
Included storage per pool (GB) 1 | 1200 | 1600 | 2000 | 2500 | 3000 |
Max storage per pool (GB) | 2560 | 3072 | 3584 | 4096 | 4096 |
Max In-Memory OLTP storage per pool (GB) | N/A | N/A | N/A | N/A | N/A |
Max number DBs per pool 2 | 500 | 500 | 500 | 500 | 500 |
Max concurrent workers per pool 3 | 2400 | 3200 | 4000 | 5000 | 6000 |
Max concurrent logins per pool | 2400 | 3200 | 4000 | 5000 | 6000 |
Max concurrent external connections per pool 4 | 150 | 150 | 150 | 150 | 150 |
Max concurrent sessions per pool 3 | 30000 | 30000 | 30000 | 30000 | 30000 |
Min DTU per database choices | 0, 10, 20, 50, 100, 200, 300, 400, 800, 1200 | 0, 10, 20, 50, 100, 200, 300, 400, 800, 1200, 1600 | 0, 10, 20, 50, 100, 200, 300, 400, 800, 1200, 1600, 2000 | 0, 10, 20, 50, 100, 200, 300, 400, 800, 1200, 1600, 2000, 2500 | 0, 10, 20, 50, 100, 200, 300, 400, 800, 1200, 1600, 2000, 2500, 3000 |
Max DTU per database choices | 10, 20, 50, 100, 200, 300, 400, 800, 1200 | 10, 20, 50, 100, 200, 300, 400, 800, 1200, 1600 | 10, 20, 50, 100, 200, 300, 400, 800, 1200, 1600, 2000 | 10, 20, 50, 100, 200, 300, 400, 800, 1200, 1600, 2000, 2500 | 10, 20, 50, 100, 200, 300, 400, 800, 1200, 1600, 2000, 2500, 3000 |
Max storage per database (GB) | 1024 | 1536 | 1792 | 2304 | 2816 |
1 See SQL Database pricing options for details on additional cost incurred due to any extra storage provisioned.
2 See Resource management in dense elastic pools for additional considerations.
3 For the max concurrent workers for any individual database, see Single database resource limits. For example, if the elastic pool is using standard-series (Gen5) and the max vCore per database is set at 2, then the max concurrent workers value is 200. If max vCore per database is set to 0.5, then the max concurrent workers value is 50 since on standard-series (Gen5) there are a max of 100 concurrent workers per vCore. For other max vCore settings per database that are less 1 vCore or less, the number of max concurrent workers is similarly rescaled.
4 See External Connections for additional details on what counts as an external connection.
eDTUs per pool | 125 | 250 | 500 | 1000 | 1500 |
---|---|---|---|---|---|
Included storage per pool (GB) 1 | 250 | 500 | 750 | 1024 | 1536 |
Max storage per pool (GB) | 1024 | 1024 | 1024 | 1024 | 1536 |
Max In-Memory OLTP storage per pool (GB) | 1 | 2 | 4 | 10 | 12 |
Max number DBs per pool 2 | 50 | 100 | 100 | 100 | 100 |
Max concurrent workers per pool (requests) 3 | 200 | 400 | 800 | 1600 | 2400 |
Max concurrent logins per pool | 200 | 400 | 800 | 1600 | 2400 |
Max concurrent external connections per pool 4 | 20 | 40 | 80 | 150 | 150 |
Max concurrent sessions per pool 3 | 30000 | 30000 | 30000 | 30000 | 30000 |
Min eDTUs per database | 0, 25, 50, 75, 125 | 0, 25, 50, 75, 125, 250 | 0, 25, 50, 75, 125, 250, 500 | 0, 25, 50, 75, 125, 250, 500, 1000 | 0, 25, 50, 75, 125, 250, 500, 1000 |
Max eDTUs per database | 25, 50, 75, 125 | 25, 50, 75, 125, 250 | 25, 50, 75, 125, 250, 500 | 25, 50, 75, 125, 250, 500, 1000 | 25, 50, 75, 125, 250, 500, 1000 |
Max storage per database (GB) | 1024 | 1024 | 1024 | 1024 | 1536 |
1 See SQL Database pricing options for details on additional cost incurred due to any extra storage provisioned.
2 See Resource management in dense elastic pools for additional considerations.
3 For the max concurrent workers for any individual database, see Single database resource limits. For example, if the elastic pool is using standard-series (Gen5) and the max vCore per database is set at 2, then the max concurrent workers value is 200. If max vCore per database is set to 0.5, then the max concurrent workers value is 50 since on standard-series (Gen5) there are a max of 100 concurrent workers per vCore. For other max vCore settings per database that are less 1 vCore or less, the number of max concurrent workers is similarly rescaled.
4 See External Connections for additional details on what counts as an external connection.
eDTUs per pool | 2000 | 2500 | 3000 | 3500 | 4000 |
---|---|---|---|---|---|
Included storage per pool (GB) 1 | 2048 | 2560 | 3072 | 3548 | 4096 |
Max storage per pool (GB) | 2048 | 2560 | 3072 | 3548 | 4096 |
Max In-Memory OLTP storage per pool (GB) | 16 | 20 | 24 | 28 | 32 |
Max number DBs per pool 2 | 100 | 100 | 100 | 100 | 100 |
Max concurrent workers per pool 3 | 3200 | 4000 | 4800 | 5600 | 6400 |
Max concurrent logins per pool | 3200 | 4000 | 4800 | 5600 | 6400 |
Max concurrent external connections per pool 4 | 150 | 150 | 150 | 150 | 150 |
Max concurrent sessions per pool 3 | 30000 | 30000 | 30000 | 30000 | 30000 |
Min DTU per database choices | 0, 25, 50, 75, 125, 250, 500, 1000, 1750 | 0, 25, 50, 75, 125, 250, 500, 1000, 1750 | 0, 25, 50, 75, 125, 250, 500, 1000, 1750 | 0, 25, 50, 75, 125, 250, 500, 1000, 1750 | 0, 25, 50, 75, 125, 250, 500, 1000, 1750, 4000 |
Max DTU per database choices | 25, 50, 75, 125, 250, 500, 1000, 1750 | 25, 50, 75, 125, 250, 500, 1000, 1750 | 25, 50, 75, 125, 250, 500, 1000, 1750 | 25, 50, 75, 125, 250, 500, 1000, 1750 | 25, 50, 75, 125, 250, 500, 1000, 1750, 4000 |
Max storage per database (GB) | 2048 | 2560 | 3072 | 3584 | 4096 |
1 See SQL Database pricing options for details on additional cost incurred due to any extra storage provisioned.
2 See Resource management in dense elastic pools for additional considerations.
3 For the max concurrent workers for any individual database, see Single database resource limits. For example, if the elastic pool is using standard-series (Gen5) and the max vCore per database is set at 2, then the max concurrent workers value is 200. If max vCore per database is set to 0.5, then the max concurrent workers value is 50 since on standard-series (Gen5) there are a max of 100 concurrent workers per vCore. For other max vCore settings per database that are less 1 vCore or less, the number of max concurrent workers is similarly rescaled.
4 See External Connections for additional details on what counts as an external connection.
Important
More than 1 TB of storage in the Premium tier is currently available in all regions except: China East, China North, Germany Central, and Germany Northeast. In these regions, the storage max in the Premium tier is limited to 1 TB. For more information, see P11-P15 current limitations.
If all DTUs of an elastic pool are used, then each database in the pool receives an equal amount of resources to process queries. The SQL Database service provides resource sharing fairness between databases by ensuring equal slices of compute time. Elastic pool resource sharing fairness is in addition to any amount of resource otherwise guaranteed to each database when the DTU min per database is set to a non-zero value.
Note
For additional information on storage limits in the Premium service tier, see Storage space governance.
For each elastic pool, you can optionally specify per database minimum and maximum DTUs to modify resource consumption patterns within the pool. Specified min and max values apply to all databases in the pool. Customizing min and max DTUs for individual databases in the pool is not supported.
You can also set maximum storage per database, for example to prevent a database from consuming all pool storage. This setting can be configured independently for each database.
The following table describes per database properties for pooled databases.
Property | Description |
---|---|
Max DTUs per database | The maximum number of DTUs that any database in the pool may use, if available based on utilization by other databases in the pool. Max DTUs per database is not a resource guarantee for a database. If the workload in each database does not need all available pool resources to perform adequately, consider setting max DTUs per database to prevent a single database from monopolizing pool resources. Some degree of over-committing is expected since the pool generally assumes hot and cold usage patterns for databases, where all databases are not simultaneously peaking. |
Min DTUs per database | The minimum number of DTUs reserved for any database in the pool. Consider setting a min DTUs per database when you want to guarantee resource availability for each database regardless of resource consumption by other databases in the pool. The min DTUs per database may be set to 0, and is also the default value. This property is set to anywhere between 0 and the average DTUs utilization per database. |
Max storage per database | The maximum database size set by the user for a database in a pool. Pooled databases share allocated pool storage, so the size a database can reach is limited to the smaller of remaining pool storage and maximum database size. Maximum database size refers to the maximum size of the data files and does not include the space used by the log file. |
Important
Because resources in an elastic pool are finite, setting min DTUs per database to a value greater than 0 implicitly limits resource utilization by each database. If, at a point in time, most databases in a pool are idle, resources reserved to satisfy the min DTUs guarantee are not available to databases active at that point in time.
Additionally, setting min DTUs per database to a value greater than 0 implicitly limits the number of databases that can be added to the pool. For example, if you set the min DTUs to 100 in a 400 DTU pool, it means that you will not be able to add more than 4 databases to the pool, because 100 DTUs are reserved for each database.
While the per database properties are expressed in DTUs, they also govern consumption of other resource types, such as data IO, log IO, buffer pool memory, and worker threads. As you adjust min and max per database DTUs values, reservations and limits for all resource types are adjusted proportionally.
Min and max per database DTU values apply to resource consumption by user workloads, but not to resource consumption by internal processes. For example, for a database with a per database max DTU set to half of the pool eDTU, user workload cannot consume more than one half of the buffer pool memory. However, this database can still take advantage of pages in the buffer pool that were loaded by internal processes. For more information, see Resource consumption by user workloads and internal processes.
The following table lists tempdb
sizes for single databases in Azure SQL Database:
Service-level objective | Maximum tempdb data file size (GB) |
Number of tempdb data files |
Maximum tempdb data size (GB) |
---|---|---|---|
Basic Elastic Pools (all DTU configurations) | 13.9 | 12 | 166.7 |
Standard Elastic Pools (50 eDTU) | 13.9 | 12 | 166.7 |
Standard Elastic Pools (100 eDTU) | 32 | 1 | 32 |
Standard Elastic Pools (200 eDTU) | 32 | 2 | 64 |
Standard Elastic Pools (300 eDTU) | 32 | 3 | 96 |
Standard Elastic Pools (400 eDTU) | 32 | 3 | 96 |
Standard Elastic Pools (800 eDTU) | 32 | 6 | 192 |
Standard Elastic Pools (1200 eDTU) | 32 | 10 | 320 |
Standard Elastic Pools (1600-3000 eDTU) | 32 | 12 | 384 |
Premium Elastic Pools (all DTU configurations) | 13.9 | 12 | 166.7 |
- For vCore resource limits for a single database, see resource limits for single databases using the vCore purchasing model
- For DTU resource limits for a single database, see resource limits for single databases using the DTU purchasing model
- For vCore resource limits for elastic pools, see resource limits for elastic pools using the vCore purchasing model
- For resource limits for managed instances in Azure SQL Managed Instance, see SQL Managed Instance resource limits.
- For information about general Azure limits, see Azure subscription and service limits, quotas, and constraints.
- For information about resource limits on a logical SQL server, see overview of resource limits on a logical SQL server for information about limits at the server and subscription levels.