Databases Azure SQL field-manual-complete template-specs field-manual

vCore

A vCore is the database-world way to talk about compute capacity. Instead of buying an abstract DTU bundle, you choose a number of virtual cores that more directly maps to CPU capacity and, depending on the service tier, memory and I/O limits. For an operator, vCores answer a practical question: how much database engine power is this workload allowed to use? More vCores can help busy workloads, but they also cost more and may hide poor query or indexing design.

Aliases
virtual core, Azure SQL vCore, SQL vCore, database vCore
Difficulty
fundamentals
CLI mappings
4
Last verified
2026-05-28

Microsoft Learn

A vCore is a virtual core used to size compute in Azure SQL Database and related database services. In the vCore purchasing model, the number of vCores helps determine CPU capacity, memory expectations, service limits, performance headroom, and cost for provisioned or serverless databases.

Microsoft Learn: vCore purchasing model - Azure SQL Database2026-05-28

Technical context

In Azure SQL Database and Azure SQL Managed Instance, vCores are part of the purchasing and scaling model for compute. They appear in database SKU, service objective, serverless capacity range, elastic pool settings, and resource-limit documentation. The vCore count is evaluated with service tier, hardware generation, storage size, backup storage, redundancy, and regional availability. It belongs to the data platform control plane, but its effects are visible in the data plane through CPU percentage, worker pressure, waits, query duration, and connection behavior.

Why it matters

vCores matter because they connect architecture decisions to measurable database behavior and recurring cost. Too few vCores can create CPU saturation, slow queries, longer batch windows, timeouts, and noisy incidents that look like application bugs. Too many vCores can waste budget and encourage teams to ignore indexes, query plans, or connection pooling. vCore choices also affect migration planning because teams can compare on-premises CPU capacity with Azure SQL service tiers more transparently than with DTUs. The best use of vCores is deliberate: measure workload demand, choose a tier, watch performance signals, and scale only when evidence shows compute is the real bottleneck.

Where you see it

Signals, screens, and Azure surfaces where this term usually becomes operational.

Signal 01

Azure SQL database Overview and Compute + storage screens show service tier, hardware family, and vCore capacity used for current billing and scaling decisions in production environments.

Signal 02

Azure CLI output from `az sql db show` exposes SKU, capacity, edition, and family fields that reveal how many vCores the database uses during operational reviews.

Signal 03

Metrics, Query Store, and cost reports surface vCore pressure through CPU percentage, worker waits, scale events, service objectives, and recurring compute charges during capacity planning reviews.

When this becomes relevant

Specific situations where this term helps solve real Azure design, operations, migration, security, reliability, cost, or governance problems.

  • Size an Azure SQL migration by mapping on-premises CPU demand to a transparent Azure compute setting.
  • Increase database capacity for a seasonal traffic spike after CPU metrics prove compute is the bottleneck.
  • Right-size overprovisioned dev and test databases that copied production vCore counts without production load.
  • Compare single database, elastic pool, and managed instance options using compute, memory, and cost expectations.
  • Plan reserved capacity or Azure Hybrid Benefit coverage for predictable database compute spend.

Real-world case studies

Different enterprise-style examples that show the term being used to hit measurable objectives.

Case study 01

Ticketing platform survives onsale CPU surge

Ticketing platform survives onsale CPU surge: vCores are most valuable when teams scale database compute from measured pressure, then scale back when the business event is over.

Scenario

An online ticketing platform sold seats for concerts and sports events through Azure SQL Database. During major onsales, checkout latency spiked when inventory reservation queries saturated CPU.

Business/Technical Objectives
  • Keep checkout p95 latency below 700 milliseconds during peak onsale windows.
  • Avoid a permanent compute increase for databases that were quiet most weekdays.
  • Give incident commanders a tested scale-up and scale-down runbook.
  • Prove whether CPU, not storage or locking, was the primary bottleneck.
Solution Using vCore

The database team used Query Store and Azure Monitor to correlate slow checkout calls with sustained CPU above 92 percent on a 4-vCore database. They load-tested an 8-vCore setting in staging, then scripted an Azure CLI scale operation for scheduled onsales. The runbook captured the previous SKU, applied the higher vCore count two hours before ticket release, watched worker waits and checkout latency, and scaled back after traffic normalized. Index changes were handled separately so compute was not used to hide bad query plans.

Results & Business Impact
  • Checkout p95 latency dropped from 1.9 seconds to 580 milliseconds during the next large onsale.
  • CPU headroom improved from single-digit reserve to roughly 38 percent at peak.
  • The temporary scale window avoided an estimated 61 percent of monthly compute cost versus always-on 8 vCores.
  • Incident escalations from the checkout team fell from six per onsale to one observation ticket.
Key Takeaway for Glossary Readers

vCores are most valuable when teams scale database compute from measured pressure, then scale back when the business event is over.

Case study 02

Legal archive migration chooses transparent database capacity

Legal archive migration chooses transparent database capacity: A vCore choice makes migration capacity easier to defend when performance tests, cost, and operational evidence point to the same number.

Scenario

A legal services firm moved a document-indexing application from an aging SQL Server cluster to Azure SQL Database. Executives wanted predictable cost without slowing nightly indexing.

Business/Technical Objectives
  • Map on-premises CPU demand to an Azure SQL capacity setting finance could understand.
  • Finish nightly document indexing before the 6:00 a.m. attorney search window.
  • Avoid overbuying compute for read-heavy daytime usage.
  • Create evidence for a migration board comparing DTU and vCore options.
Solution Using vCore

The migration architects profiled the existing cluster, measured CPU during ingestion and search windows, and tested several Azure SQL vCore sizes. They chose a vCore configuration that met indexing targets while pairing it with Query Store baselines and storage metrics. Azure CLI scripts captured database SKU, capacity, redundancy, and location after each test. The team documented why an 8-vCore choice was sufficient, where indexes were improved, and which metrics would justify a future increase if document volume doubled.

Results & Business Impact
  • Nightly indexing finished in 3.7 hours, beating the five-hour objective.
  • Search p95 latency stayed under 420 milliseconds during the attorney morning peak.
  • The approved size saved 29 percent compared with the larger candidate tier tested first.
  • Migration-board review time dropped by two meetings because CLI evidence matched the performance report.
Key Takeaway for Glossary Readers

A vCore choice makes migration capacity easier to defend when performance tests, cost, and operational evidence point to the same number.

Case study 03

Logistics analytics team rightsizes idle databases

Logistics analytics team rightsizes idle databases: vCore settings should be revisited after rollout because yesterday’s emergency capacity can become tomorrow’s hidden waste.

Scenario

A logistics company kept several Azure SQL reporting databases at production-sized vCore counts after a rushed rollout. Most ran batch reports only twice per day.

Business/Technical Objectives
  • Reduce recurring database compute spend without hurting scheduled reporting windows.
  • Identify databases whose vCore count no longer matched measured workload.
  • Create a rollback path for any report that missed its service target.
  • Give FinOps a repeatable review instead of a one-time cleanup.
Solution Using vCore

Operations exported SKU and vCore settings with Azure CLI, joined the inventory with Azure Monitor CPU metrics, and reviewed the findings with report owners. Databases running below 15 percent CPU outside brief report windows were candidates for a lower vCore count. The team tested scale-down in staging, changed one database per release window, and watched report duration, CPU, waits, and user complaint tickets for seven days. Any database exceeding the agreed report window had an approved rollback command.

Results & Business Impact
  • Monthly Azure SQL compute spend for the reporting estate dropped 34 percent.
  • No scheduled report missed its delivery target during the first month after rightsizing.
  • Seven oversized databases were reduced, while two high-value dashboards stayed unchanged.
  • FinOps received a reusable quarterly review workbook tied to vCore inventory and utilization.
Key Takeaway for Glossary Readers

vCore settings should be revisited after rollout because yesterday’s emergency capacity can become tomorrow’s hidden waste.

Why use Azure CLI for this?

Azure CLI is useful for vCore work because database capacity decisions should be repeatable and evidence-based. As an engineer, I use CLI to list databases, capture SKU and capacity, compare service objectives across environments, and script safe scale changes after a change record is approved. The portal is fine for one database, but fleets need commands that can find every database using too many or too few vCores. CLI output also lets performance, finance, and operations teams review the same facts: tier, capacity, region, redundancy, and current state before anyone changes production compute during an incident. That evidence prevents guesswork during pressure-filled scale events.

CLI use cases

  • Inventory database SKU and capacity across resource groups to find which databases are using specific vCore counts.
  • Capture `az sql db show` output before and after an approved scale operation for incident or change evidence.
  • Update database capacity from a controlled script when a tested workload needs more or fewer vCores.
  • Export vCore settings into a cost-review file so FinOps can compare capacity with utilization metrics.

Before you run CLI

  • Confirm tenant, subscription, resource group, logical server, database name, and region before inspecting or changing database capacity.
  • Check whether the database is single, pooled, serverless, Hyperscale, or managed instance because vCore options differ by service shape.
  • Treat scale commands as cost-impacting and potentially disruptive; capture current SKU, capacity, and workload window before changing production.
  • Use JSON output with queries for SKU, capacity, family, edition, and state so reviewers can verify the exact vCore setting.

What output tells you

  • The SKU and capacity fields tell which service tier and vCore count Azure currently applies to the database or pool.
  • The edition, family, and compute model fields show whether the vCore setting belongs to provisioned, serverless, Hyperscale, or another tier.
  • Provisioning state and location confirm whether a scale operation completed in the intended region and against the intended resource.
  • Comparing output across environments reveals accidental production-sized databases in non-production or underpowered databases handling real traffic.

Mapped Azure CLI commands

Azure SQL vCore inspection and scaling

direct
az sql db list --server <sql-server> --resource-group <resource-group>
az sql dbdiscoverDatabases
az sql db show --name <database> --server <sql-server> --resource-group <resource-group>
az sql dbdiscoverDatabases
az sql db update --name <database> --server <sql-server> --resource-group <resource-group> --capacity <vcores>
az sql dbconfigureDatabases
az sql elastic-pool show --name <pool> --server <sql-server> --resource-group <resource-group>
az sql elastic-pooldiscoverDatabases

Architecture context

Architecturally, a vCore is a sizing unit inside the database compute boundary. It is not the same thing as a VM vCPU, and it should not be chosen by matching names alone. The right vCore count depends on workload class, service tier, hardware configuration, storage latency expectations, high availability design, and whether the database is single, pooled, serverless, or managed instance. In a good design, the vCore setting is tied to monitoring, cost ownership, performance tests, and rollback steps. Changing it is a capacity change, not a cosmetic setting, because it can alter latency, spend, and maintenance expectations. Reviewers should approve both the target and the fallback capacity.

Security

Security impact is mostly indirect for vCores, but it still matters. Scaling compute does not grant data access, change encryption, or open a firewall. The risk appears because the people allowed to change vCore capacity often also have broad database management permissions. A rushed scale operation may happen in the wrong subscription, on the wrong server, or during an incident without approval. Larger capacity can also make abusive queries or compromised jobs run faster and cost more. Secure operations require least-privilege roles, change evidence, activity-log review, and separation between performance tuning and data-access administration for production databases. Audit trails should identify every production capacity change owner.

Cost

vCores are a direct cost driver in vCore-based database services. Provisioned compute usually bills for selected capacity while it exists, and serverless bills around used compute within configured limits. Higher vCore counts can also interact with service tier, hardware selection, reserved capacity, Azure Hybrid Benefit, storage, and backup charges. The cheapest setting is not always right; slow databases can create business cost through failed orders or delayed analytics. FinOps reviews should tie vCore count to measured utilization, rightsizing recommendations, reservation coverage, and planned demand rather than copying production capacity into every environment. Tagging and budgets should identify the service owner funding that capacity.

Reliability

Reliability depends on vCores whenever database compute is close to saturation. If a workload runs at high CPU for long periods, backups, maintenance, reporting jobs, and user transactions compete for the same engine resources. Increasing vCores can protect continuity during seasonal demand, but it should not be the only reliability plan. Teams should confirm service tier limits, failover behavior, maintenance windows, connection retry logic, and query tuning. For serverless databases, minimum and maximum vCores also affect cold-start tolerance and burst capacity. Reliable designs document when to scale up, when to scale back, and what metrics prove recovery. Load tests should confirm the headroom target before release.

Performance

vCores have a direct performance effect when database CPU is the limiting resource. More vCores can improve concurrent query execution, reduce CPU waits, and shorten batch workloads, but they do not automatically fix poor indexing, inefficient queries, blocking, network latency, or storage bottlenecks. Operators should compare CPU percentage, query duration, waits, logical reads, and connection behavior before scaling. In elastic pools, the issue may be one noisy database consuming shared capacity rather than the pool needing more total vCores. Performance tuning works best when vCore changes are tested alongside Query Store evidence. Baselines should capture the same workload before and after the change.

Operations

Operators inspect vCores through database SKU fields, service objectives, metrics, Query Store, alerts, and cost reports. In practice, they compare the configured vCore count with CPU percentage, worker waits, DTU-to-vCore migration notes, elastic pool pressure, and business calendars. Changes should be scripted or recorded, with before-and-after metrics captured for the same workload window. Runbooks should include the database name, logical server or managed instance, resource group, tier, capacity, expected duration, approval, rollback target, and monitoring dashboard. Good operations treat vCore changes as controlled capacity events with owners. Capacity changes should be visible in dashboards and incident timelines for later review.

Common mistakes

  • Treating vCores as a magic performance fix before checking Query Store, indexes, blocking, waits, and connection pooling.
  • Comparing vCores to VM vCPUs too literally and ignoring Azure SQL service tier, hardware, memory, and I/O limits.
  • Scaling the wrong database because the active subscription or logical server context was not verified first.
  • Leaving temporary scale-ups in place after an incident, turning a short performance fix into recurring waste.