vCore based performance levels are very new, currently in preview and not yet rolled out to all Azure regions (The preview is not available in the following regions: West Europe, France Central, UK South, and UK West.). It does offer a totally different approach to sizing your database.
It is easier to translate an on-premises workload to a vCore based model because the components are what we are used too. Some do find the DTU model confusing. Common questions occur as to what does DTUs mean? How do I size the Azure SQL database etc.
Going back to vCore there are two types you can select from, general purpose and business critical. The biggest differences between the two tiers is the storage (in terms of type and throughput) and availability features. With business critical you can have three replicas, read scale capability and zone redundancy. See table below.
I suggest you read Microsoft’s official documentation https://docs.microsoft.com/en-us/azure/sql-database/sql-database-service-tiers.
I will not be rehashing the material, that’s not my style. I want to play with a couple of the databases and see some differences when checking some DMVs. Just before we begin an important fact is that in the initial public preview the CPUs are based on Intel E5-2673 v3 (Haswell) 2.4-GHz processors.
I decided to create a 2 vCore general purpose database.
Let’s connect to SSMS and how a “look around”.
SELECT @@VERSION SELECT * FROM sys.database_service_objectives
As you can see a general purpose tier using Gen 4. Hardware. So we have created a 2 vCore database what is the impact on the online schedulers available?
SELECT * FROM sys.dm_os_schedulers WHERE status = 'VISIBLE ONLINE'
Let’s scale up to a 8 vCore database?
SELECT * FROM sys.dm_os_schedulers WHERE status = 'VISIBLE ONLINE'
Now that’s powerful, I would very much doubt we could get that sort of CPU power with a DTU based database? Let’s check! So here is a premium P15 – (4000 DTUs) Database just as a comparison, this is the most powerful available in Microsoft Azure.
SELECT * FROM sys.database_service_objectives
SELECT count(*) FROM sys.dm_os_schedulers WHERE status = 'VISIBLE ONLINE'
Well…..I guess I was wrong.
Interested to underestand scenarios where vCore is better and where traditional DTU/Elastic pools works best!
LikeLiked by 1 person
Me too. At the moment its just easier to map your local workloads to a vCore model. I need to see if we can do the zone redundancy in premium though..
LikeLiked by 1 person