Azure SQL has three deployment models:
- Single Database, Elastic Pool, and Managed Instance. In the Single Database model, resources are granted by database.
- In the Elastic Pool model, resources are granted to a set of multiple databases called a ‘pool’.
- The Managed Instance model is a Microsoft-maintained virtual machine with a fully-featured SQL solution onboard.
The DTU and vCore purchase models are supported by Single Database and Elastic Pool. Managed Instance can be a single VM or a pool of VMs, known as a Managed Instance Pool.
The DTU model uses an abstract unit of measure called eDTU, which represents a composite measure of CPU, memory, reads, and writes. There are three service tiers available for the DTU model: Basic, Standard, and Premium. All of the models have the same SLA of 99.99%. However, they differ in terms of input/output operation performance:
The vCore model enables the allocation of a precise amount of resources to the database or database pool.
There are two compute models available under the vCore model: Serverless and Provisioned.
The Serverless model is well-suited for infrequently used databases. When the database is idle, only storage fees are applied. The database may require time to warm up before processing data. An example of this is the load test environment database.
The provisioned model involves reserving resources that are always available, with no idle periods and full charge.
There are three available service tiers for the provisioned model: General Purpose, Business Critical, and Hyperscale.
There is no direct ratio between DTU and vCore models. Microsoft recommends to use an SQL script to fit performance for DTU to vCore model.
In most cases, the DTU model is more cost-effective. If the task does not require an SLA greater than 99.99%, data storage greater than 4TB, maximum performance greater than 4000 eDTU, or the use of cost-saving benefits such as Reserved Capacity or Azure Hybrid Benefit, then DTU is the best option.
Otherwise, vCore is required.