Databricks SQL warehouse pricing: serverless vs pro vs classic
Short answer: Databricks SQL warehouses come in three types, and the $/DBU sticker misleads. Classic and pro warehouses bill DBUs plus the cloud VMs they run on in your account. Serverless bills one higher DBU rate with the VMs included. At today's US list prices, a serverless SQL warehouse costs about 19% less per running hour than a pro warehouse of the same size on AWS, once you add the EC2 bill pro runs on. It also starts in seconds and can stop after 5 minutes idle (1 minute through the API), against about 4 minutes to start and a 10-minute minimum auto-stop for pro and classic. For bursty dashboards and ad hoc queries, that idle time can matter more than the rate.
Current SQL warehouse rates per DBU
Premium tier, each cloud's main US region, straight from DBU Watch's daily data:
| Cloud · region (Premium) | Classic $/DBU + VMs | Pro $/DBU + VMs | Serverless $/DBU (VMs incl.) |
|---|---|---|---|
| AWS · us-east-1 (N. Virginia) | $0.22 | $0.55 | $0.70 |
| Azure · East US | $0.22 | $0.55 | $0.70 |
| Google Cloud · us-central1 (Iowa) | $0.22 | $0.55 | $0.70 |
Serverless SQL lists at $0.70/DBU in the main US region on all three clouds. Classic and pro also pay the cloud VM bill; serverless doesn't. Unlike jobs compute, AWS and Google Cloud list the same SQL warehouse rates on Premium and Enterprise, so the Azure Premium = AWS/GCP Enterprise tier mapping (Databricks) doesn't change the comparison here.
What's in each type, per Databricks docs:
- Serverless: Photon, Predictive IO and Intelligent Workload Management (IWM). Compute runs in Databricks' account, starts in "typically between 2 and 6 seconds," and scales down quickly when demand drops.
- Pro: Photon and Predictive IO, no IWM. "The compute layer exists in your AWS account," and it "takes several minutes to start up (typically approximately 4 minutes)." Databricks suggests pro mainly where serverless isn't available in your region or you need custom networking.
- Classic: Photon only, "entry-level performance," same ~4-minute start.
What each size costs per hour
Every warehouse size burns a fixed number of DBUs per hour per cluster: 2X-Small is 4, X-Small 6, Small 12, Medium 24, Large 40, X-Large 80, up to 528 for 4X-Large (Microsoft Learn; Microsoft's Azure Databricks pricing page lists the same DBU counts for classic and pro). For pro and classic on AWS, Databricks documents which EC2 instances sit behind each size: an i3 driver plus 1 to 512 i3.2xlarge workers (Databricks docs). Adding those at on-demand list price gives the real hourly cost:
| Size | DBU/h | EC2 behind it (pro/classic) | EC2 $/h | Classic $/h all-in | Pro $/h all-in | Serverless $/h |
|---|---|---|---|---|---|---|
| 2X-Small | 4 | 1× i3.2xlarge + 1× i3.2xlarge | $1.248 | $2.13 | $3.45 | $2.80 |
| X-Small | 6 | 1× i3.2xlarge + 2× i3.2xlarge | $1.872 | $3.19 | $5.17 | $4.20 |
| Small | 12 | 1× i3.4xlarge + 4× i3.2xlarge | $3.744 | $6.38 | $10.34 | $8.40 |
| Medium | 24 | 1× i3.8xlarge + 8× i3.2xlarge | $7.488 | $12.77 | $20.69 | $16.80 |
| Large | 40 | 1× i3.8xlarge + 16× i3.2xlarge | $12.48 | $21.28 | $34.48 | $28.00 |
| X-Large | 80 | 1× i3.16xlarge + 32× i3.2xlarge | $24.96 | $42.56 | $68.96 | $56.00 |
AWS us-east-1, Premium tier, one cluster, on-demand EC2 list prices from DBU Watch's daily data. Excludes EBS, networking and storage. Databricks notes serverless "may, in some cases, use different instance types" than pro and classic, but that its price/performance per size is "similar" (Databricks docs).
So pro's $0.55/DBU is really about $0.86 per DBU all-in on a Small warehouse, against $0.70 for serverless. Classic is cheaper still per running hour (about 24% below serverless in this table), but Databricks describes it as “entry-level performance”: no Predictive IO, no Intelligent Workload Management, and the same slow start as pro (Databricks docs).
Every extra cluster multiplies these numbers. Pro and classic are limited to one cluster per 10 concurrent queries (docs), so a Small warehouse scaled to 3 clusters bills 3 × 12 = 36 DBUs an hour.
The idle bill: auto-stop and startup
"Idle SQL warehouses continue to accumulate DBU and cloud instance charges until they are stopped" (Databricks docs). The defaults matter:
- Pro and classic: auto-stop defaults to 45 minutes; the minimum is 10.
- Serverless: defaults to 10 minutes; the minimum is 5 in the UI and 1 minute if you create the warehouse through the API (docs).
Example, not a benchmark. A Small warehouse behind a team's dashboards gets 6 bursts of use a weekday, each with 10 minutes of actual queries, far enough apart that the warehouse stops in between. 22 weekdays a month, AWS us-east-1 list prices from the table above:
| Small warehouse, AWS us-east-1 | Billed per session | Per month |
|---|---|---|
| Pro, default auto-stop (45 min) | 55 min | $1,251.62 |
| Pro, minimum auto-stop (10 min) | 20 min | $455.14 |
| Serverless, default auto-stop (10 min) | 20 min | $369.60 |
| Serverless, UI minimum (5 min) | 15 min | $277.20 |
| Serverless, API minimum (1 min) | 11 min | $203.28 |
Same work, very different bills: the default pro setup costs 4.52× what serverless at a 5-minute auto-stop does, and most of the gap is idle time, not the rate. We ignore startup time entirely here; pro and classic take about 4 minutes to start against seconds for serverless (docs), so any billed startup only adds to their side.
The picture changes for a warehouse that's busy all day. A Medium warehouse running 10 hours every weekday (220 hours a month) costs $3,696.00 on serverless, $4,551.36 on pro at on-demand EC2 prices, and $2,808.96 on classic. With steady load, idle time stops mattering and the hourly rate decides. Reserved or savings-plan EC2 pricing lowers the pro and classic VM line; serverless VMs are bundled into the DBU, so those discounts don't apply there.
Two defaults that inflate SQL spend
- Size: a new warehouse defaults to X-Large (docs). That's 80 DBUs an hour, or $56.00/hour on serverless at US list price, per cluster. Databricks does suggest starting larger and sizing down (docs), so do the sizing down: watch for spill to disk and Peak Queued Queries before going bigger.
- Type through the API: in the UI the default type is serverless where it's available, but "using the SQL warehouses API with default parameters, the default SQL warehouse type is classic" (docs). Terraform or scripts that don't set
enable_serverless_computeandwarehouse_typeexplicitly can quietly create classic warehouses.
One more: materialized views and streaming tables you create from Databricks SQL aren't billed at the warehouse rate. Databricks says their creation and updates are "charged at the DLT Serverless rates and billed using Automated Serverless SKUs" (Databricks SQL pricing).
Region matters
Serverless SQL ranges from $0.70 to $1.09/DBU across AWS regions, $0.70 to $1.16 on Google Cloud, and $0.70 to $1.771 on Azure in our data (Premium tier; the top Azure rate is in IN Central Jio, IN West Jio). Check yours in the price table, or compare Azure regions side by side on the Azure region pages.
How to check what your warehouses cost
- Query
system.billing.usage: SQL warehouse usage carriesusage_metadata.warehouse_id(docs). Group by warehouse andsku_name, and joinsystem.billing.list_pricesto turn DBUs into dollars (docs). - For pro and classic, add the EC2, VM or Compute Engine charges from your cloud bill. Tags you set on the warehouse help you find them (docs).
- Compare billed hours to the hours people actually ran queries. A big gap means auto-stop is set too long.
- If a pro warehouse is in a region with serverless, test the switch: Databricks has an "Upgrade to Serverless" option on existing warehouses (docs).
For the same trade-off on jobs instead of SQL, see serverless vs. classic compute, and for how DBUs and the VM bill fit together, the pricing explainer.
Get the monthly pricing digest
Every Databricks price change, once a month. Free.
We only use your email for the monthly digest. Unsubscribe anytime with one click. Privacy