I am sitting here trying to figure out what the elastic pool in Azure gives me. I have a customer that wants a guess on pricing if they move to Azure. They have 3 databases, on a server. The server has 96 GBs of RAM and a 3.4 Ghz processor. That is all I know. The three databases are sharing these specs, and each database has it own area of expertise:

  1. one database handles all the CMS data
  2. the second database handles all the commerce data
  3. the third database is a database that stores user info, etc - all data that doesn't fit the two others

I think the usage pattern is pretty diverse, so sometimes the commerce DB is using a lot of RAM and CPU, other times it is the CMS DB etc.

I don't think they fit well into a single database, because they are going to need three big databases then, and almost all of them are going to be under-utilized all the time. So I thought about elastic pools.

The description of elastic pools fits the above very well: all databases share eDTUs. Perfect! But one thing the docs don't describe is: do I pay for the elastic pool AND per database? Or do I just create databases on the fly, and all of them share, that is: the databases are free, but you pay for the eDTU?

I have read this https://docs.microsoft.com/en-us/azure/sql-database/sql-database-elastic-pool - but it doesn't describe my situation.

Hope someone can give me some more info.

EDIT They are going to update the docs: https://github.com/MicrosoftDocs/azure-docs/issues/49201#issuecomment-593579476. I created an issue for this asking for clarification.

  • Do the databases have a lot of queries that use the other databases? This will drive most of your decision making. – Anthony Genovese Mar 2 '20 at 15:32

When under the eDTU model you can create databases as you see fit and calculate your cost with the pricing calculator. This shows that you pay per pool, the amount of databases do not matter.

You do have a maximum amount of databases you can create. This is based on your service tier (basic, standard, premium) & performance level (eDTUs & storage).

enter image description here

Also found in the docs

enter image description here

The vCore elastic pool maximum amount of databases per pool are noted here.

A small example for a subset of Gen5 General Purpose elastic pool:

enter image description here

As a side note since you only have 3 databases to be added in your elastic pool, to be cost effective remember that:

If the aggregate amount of resources for single databases is more than 1.5x the resources needed for the pool, then an elastic pool is more cost effective.



The server has 96 GBs of RAM and a 3.4 Ghz processor

The elastic pool is mainly for smaller workloads, and multi-tenant applications. For lift-and-shift of existing SQL Servers, you're normally better-off with Azure SQL Database Managed Instance.

Only Managed Instance (or SQL Server on an Azure VM) supports cross-database queries, SQL Server Linked Servers, Transactional Replication publication and distribution, SQL Agent, and other features an on-prem SQL Server may be using.

Managed Instance starts at 4 vCores, where Elastic Pool is available in smaller sizes, down to less than 1 vCore.

  • You can do cross-database queries in elastic pool. It just requires set up. For a handful of queries, I find it is acceptable. – Anthony Genovese Mar 2 '20 at 15:33
  • 1
    I actually think that the customer has a too big database for their workload, and that is also why I am asking for info on the elastic pool. I do not know if an elastic pool, or 3 single databases would be sufficient, but i want to provide them with both solutions. – mslot Mar 2 '20 at 16:02
  • @AnthonyGenovese Elastic Query is a suitable replacement for cross-database query in some applications. – David Browne - Microsoft Mar 3 '20 at 12:39

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.