Synapse Pricing Explained: DWUs, Serverless, and Spark

Azure Synapse has three separate cost meters — dedicated SQL pools, serverless SQL, and Spark pools — and each works completely differently. Understanding all three is essential before you build anything, because it is easy to design an architecture that looks cheap on a whiteboard but becomes expensive in practice. This page gives you real numbers, real examples, and concrete strategies to keep costs under control.

The three pricing models side by side

ComponentPricing modelEast US rate (approx.)When you pay
Dedicated SQL pool computeHourly per DWU tier$1.51/hr (DW100c) to $181.20/hr (DW30000c)While pool is running (paused = $0)
Dedicated SQL pool storagePer TB per month$23.20/TB/monthAlways, even while paused
Serverless SQL poolPer TB data processed$5.00/TB scannedPer query (10 MB minimum)
Spark poolPer vCore-hour$0.1765/vCore-hr (East US)While cluster is running (auto-pause = $0)
Synapse PipelinesPer activity run + DIU-hour for data movement$0.25/1000 pipeline activity runs; $0.25/DIU-hrPer execution
Data integration (data flows)Per vCore-hr for cluster + execution overhead$0.274/vCore-hrPer data flow execution

All prices are approximate as of early 2026 in East US and vary by region. Always verify current rates on the Azure Synapse pricing page before budgeting.

Dedicated SQL pool pricing: DWU tiers

The dedicated SQL pool is measured in Data Warehouse Units (DWUs). A DWU is an abstraction — it represents a bundle of CPU, memory, and I/O resources allocated to your pool. More DWUs means more compute nodes, which means faster query execution and higher concurrency.

Synapse uses the Gen2 DWU scale (prefixed with “DW” and suffixed with “c”), ranging from DW100c to DW30000c. Gen2 can also be scaled in steps: DW100c, DW200c, DW300c, DW400c, DW500c, DW1000c, DW1500c, DW2000c, DW2500c, DW3000c, and up to DW30000c in 1000c increments.

DWU tierCompute nodesMax concurrency (queries)Hourly cost (East US)Monthly cost (24/7)
DW100c14$1.51$1,087
DW500c520$7.54$5,429
DW1000c1032$15.08$10,858
DW3000c3064$45.24$32,573

The key insight here is that you can and should pause the pool when it is not in use. Unlike the serverless pool, you pay for the dedicated pool by the hour whether or not any queries are running. Pausing a DW1000c pool for 16 hours per day reduces the monthly compute bill from $10,858 to $3,620 — a 67% saving with no architectural changes.

Automating pause and resume with Azure CLI

Do not rely on manually pausing pools. Automate it:

# Pause a dedicated SQL pool
az synapse sql pool pause \
  --workspace-name ws-synapse-demo \
  --name myDedicatedPool \
  --resource-group rg-synapse-demo

# Resume a dedicated SQL pool
az synapse sql pool resume \
  --workspace-name ws-synapse-demo \
  --name myDedicatedPool \
  --resource-group rg-synapse-demo

# Check pool state
az synapse sql pool show \
  --workspace-name ws-synapse-demo \
  --name myDedicatedPool \
  --resource-group rg-synapse-demo \
  --query "status" \
  --output tsv

In production, put these commands inside an Azure Logic App or Azure Automation runbook triggered by a schedule or by the completion of your nightly load pipeline.

Serverless SQL pricing: pay per query

The serverless pool charges $5 per terabyte of data processed. “Processed” means data read from storage — not data returned to you. A query that reads 1 TB of Parquet files and returns 1,000 rows still costs $5 for the TB scanned.

This makes file format and query writing critically important for cost control. Here is a concrete example:

ScenarioFile formatData scannedCost per query
SELECT * from 12-month dataset, 100 columnsCSV~500 GB (entire files)$2.50
SELECT 5 columns from same 12-month datasetCSV~500 GB (all columns read)$2.50
SELECT 5 columns from same 12-month datasetParquet~25 GB (only 5/100 columns)$0.13
SELECT 5 columns, filter on partitioned month folderParquet (partitioned)~2 GB (1/12 months, 5 columns)$0.01

Moving from unpartitioned CSV to partitioned Parquet reduces cost by 99.6% for filtered queries. This is not a minor optimisation — it is the difference between a $2,500/month serverless SQL bill and a $10/month bill for the same analytical workload.

Spark pool pricing: vCore-hours

Spark pools charge per vCore-hour. Each Spark pool has a driver node and executor nodes. The driver always runs for the duration of the session. Executors scale between your min and max node counts based on workload.

Node sizes in Synapse Spark:

Node sizevCoresMemoryCost per node-hour (East US)
Small4 vCores32 GB$0.706
Medium8 vCores64 GB$1.412
Large16 vCores128 GB$2.824
XLarge32 vCores256 GB$5.648

A Medium pool with 1 driver + 5 executors running for 2 hours costs: 6 nodes × $1.412/node-hour × 2 hours = $16.94. With auto-pause set to 15 minutes, you pay for the actual job time plus up to 15 minutes of idle time. For a nightly job that runs for 1.5 hours, this comes to roughly $13/night or $390/month — far less than running a dedicated pool around the clock.

# Create a Spark pool with auto-pause enabled
az synapse spark pool create \
  --workspace-name ws-synapse-demo \
  --name SparkPoolDev \
  --resource-group rg-synapse-demo \
  --node-size Medium \
  --min-node-count 3 \
  --max-node-count 10 \
  --enable-auto-scale true \
  --delay 15 \
  --enable-auto-pause true \
  --spark-version 3.4
# --delay 15 means auto-pause after 15 minutes of inactivity

Architecture decisions that reduce cost

The biggest cost lever in Synapse is architectural: choosing the right engine for each workload instead of defaulting to a dedicated pool for everything.

Use the serverless pool for exploration and low-frequency reporting. If a report runs once a day and reads 50 GB of Parquet, the serverless pool costs $0.25/day. The same report on a DW100c pool that runs 24/7 costs $1.51/hour regardless of query frequency.

Use a dedicated pool only for high-concurrency, latency-sensitive BI. If 50 users are hitting Power BI dashboards that need sub-second response, and those dashboards query a 10 TB warehouse, a dedicated pool with result-set caching is worth the cost. For 5 users running a daily report, it is not.

Use Spark pools for ETL and ML — not for SQL. Spark is priced per vCore-hour and auto-pauses. Running a nightly Spark ETL job is much cheaper than using a dedicated SQL pool for transformation work, because you pay only for the hours the job runs.

Common mistakes

  1. Not pausing the dedicated pool during development. Development is exploratory — you run a query, think for 10 minutes, run another query. The dedicated pool charges for all 10 minutes of thinking time. Use the serverless pool during development; use the dedicated pool only for production workloads.
  2. Storing data in CSV format in ADLS and querying it with serverless SQL. CSV reads all bytes of all columns. Parquet reads only the bytes in the columns your query uses. Converting a CSV-heavy data lake to Parquet can reduce serverless SQL costs by 10x or more.
  3. Running Spark pool notebooks interactively without auto-pause. An open Synapse Studio notebook session keeps a Spark cluster alive until it times out or is manually stopped. A 5-node Medium pool left running overnight costs 8 hours × 6 nodes × $1.412 = $67.78 for doing nothing.
  4. Sizing the dedicated pool for peak load and leaving it there permanently. Use the elastic scaling API to scale up before heavy ETL loads and back down for regular query traffic. A pool that is 10x oversized for most of the day is 10x more expensive than it needs to be.

Frequently asked questions

How much does a Synapse dedicated SQL pool cost per month?

A DW100c pool running 24/7 in East US costs approximately $1.51/hour or about $1,087/month. However, you can pause the pool when not in use. If you run it only 8 hours per day on weekdays (roughly 174 hours/month), the cost drops to around $263/month. You still pay for storage separately.

Is the serverless SQL pool free?

There is no fixed charge for the serverless SQL pool — you pay only for the data it scans, at roughly $5 per terabyte in most regions. There is a minimum charge of 10 MB per query. Querying a well-partitioned Parquet table that reads 2 GB costs about $0.01.

Can I set a spending limit on Synapse?

Synapse does not have built-in hard spending caps. You can set a data processed limit on the serverless SQL pool (a soft stop that blocks new queries once the monthly threshold is reached). For dedicated pools and Spark pools, use Azure Cost Management budgets with alerts, and automate pool pausing via Logic Apps or Azure Automation.

Last verified: 19 March 2026 Cloud services change frequently. Verify details against official documentation before making infrastructure decisions.