Serverless database idle cost: what you pay to do nothing
Serverless databases promise you pay only for what you use, but most of them have a floor. Understanding the minimum capacity charge is the difference between a $5 development database and a $44 one.
Quick answer
Serverless databases charge a minimum capacity even when idle unless they can scale to zero. Aurora Serverless v2 bills $0.12 per ACU-hour in us-east-1, so a 0.5 ACU floor costs about $43.80 per month to sit idle, and a 1 ACU floor costs $87.60. Configuring a minimum of 0 ACU lets the cluster pause after a configurable idle period, dropping compute to zero while storage continues at $0.10 per GB-month. Azure SQL serverless auto-pauses after a minimum of one hour idle, leaving only storage. The practical rule: set the floor to 0 for development and staging, and to a non-zero value in production only where cold-start latency of five to fifteen seconds is unacceptable.
Serverless pricing is marketed on the upside: burst to 64 ACUs during a spike, pay nothing when quiet. The downside is the floor. Most serverless database offerings require a minimum capacity, and that minimum is charged continuously whether or not a query ever arrives. For development fleets, that floor is usually the entire bill.
The floors, by service
| Service | Idle floor | Monthly at floor | Scales to zero? |
|---|---|---|---|
| Aurora Serverless v2, min 0.5 ACU | 0.5 ACU at $0.12/ACU-hr | about $43.80 | No |
| Aurora Serverless v2, min 1 ACU | 1 ACU | about $87.60 | No |
| Aurora Serverless v2, min 0 ACU | 0 after idle timeout | storage only | Yes |
| Azure SQL serverless, auto-pause 1 hr | 0 vCore when paused | storage only | Yes |
| DynamoDB on-demand | 0 | storage only | Yes |
| Cosmos DB serverless | 0 | storage only | Yes |
Storage never scales to zero on any of them. Aurora storage is $0.10 per GB-month, so a paused cluster holding 50 GB still costs $5 per month. That is fine; it is the compute floor that does the damage.
The development fleet arithmetic
Consider fifteen development and feature-branch databases on Aurora Serverless v2 with a 0.5 ACU minimum. Each costs $43.80 per month idle. The fleet costs $657 per month, and because these are development databases, they receive queries during maybe 40 working hours per month out of 730. You are paying for 690 hours of nothing, roughly $620 per month.
| Configuration | 15 dev databases | Annual |
|---|---|---|
| Min 0.5 ACU, never pauses | $657/mo | $7,884 |
| Min 0 ACU, pauses after 5 min idle | about $120/mo | about $1,440 |
| Provisioned db.t4g.medium, stopped nights and weekends | about $200/mo | about $2,400 |
| Shared single database, schema per branch | about $60/mo | $720 |
Setting the minimum to 0 ACU saves roughly $537 per month on this fleet, about $6,400 a year, for a configuration change of one line. The cost is a cold start: a paused cluster takes several seconds to resume, which is irrelevant for a developer running tests and unacceptable for a user-facing request.
When a non-zero floor is correct
Production systems with sporadic but latency-sensitive traffic need a floor. If a request arrives every few minutes and each one must respond in under a second, letting the cluster pause means some unlucky user waits ten seconds. A 0.5 ACU floor at $43.80 per month is a cheap insurance premium against that.
The second case is warm cache. Scaling to zero discards the buffer pool, so the first queries after a resume hit disk. A workload whose performance depends on a warm cache may take minutes to return to normal latency after each pause, which on a system that goes idle several times a day is worse than the floor cost.
Where serverless stops being cheaper
The other end of the curve matters just as much. At $0.12 per ACU-hour and 2 GB of memory per ACU, 8 ACUs gives roughly 16 GB and costs $0.96 per hour, about $700 per month. A provisioned db.r6g.xlarge with 32 GB costs $378 per month, roughly half, with twice the memory. Serverless becomes more expensive than provisioned somewhere around 4 to 5 sustained ACUs.
| Sustained load | Serverless v2 monthly | Nearest provisioned |
|---|---|---|
| 0.5 ACU | $43.80 | db.t4g.medium, about $50 |
| 2 ACU | $175.20 | db.r6g.large, $189 |
| 4 ACU | $350.40 | db.r6g.large, $189 |
| 8 ACU | $700.80 | db.r6g.xlarge, $378 |
| 16 ACU | $1,401.60 | db.r6g.2xlarge, $756 |
Serverless earns its premium when the ratio of peak to average is high. A workload that sits at 1 ACU for 22 hours and spikes to 16 ACU for 2 hours costs about $0.12 x 22 + $1.92 x 2, roughly $6.48 per day or $194 per month, against a provisioned instance sized for the peak at $756. That is the case serverless was built for. A workload running flat at 8 ACU is simply paying a premium for elasticity it never uses.
What to do
Set the minimum to 0 ACU everywhere except production systems with a documented latency requirement. Measure sustained ACU consumption on production serverless clusters monthly and convert anything running above 4 to 5 ACU flat to provisioned. Put the minimum capacity value in a variable driven by environment so a production module copied into staging does not carry the floor with it.
Price the capacity range from Terraform before you merge, because a minimum ACU value is a small number with a large annual consequence across a fleet. Compare serverless and provisioned options against the resource catalog, and see serverless against provisioned for the broader comparison.
FAQ
What does an idle Aurora Serverless v2 cluster cost?
At the common 0.5 ACU minimum and $0.12 per ACU-hour in us-east-1, about $43.80 per month to sit completely idle, or $87.60 at a 1 ACU minimum. Setting the minimum to 0 ACU lets the cluster pause after a configurable idle period, dropping compute to zero while storage continues at $0.10 per GB-month, so a paused cluster holding 50 GB costs about $5 per month.
Should I set the serverless minimum to zero?
Yes for development, staging, and feature-branch databases, where the cold start of several seconds is irrelevant. No for production systems with sporadic but latency-sensitive traffic, where a paused cluster means some unlucky user waits ten seconds, and no for workloads whose performance depends on a warm buffer pool that gets discarded on every pause.
How much does a development fleet waste on serverless floors?
Fifteen development databases at a 0.5 ACU minimum cost $657 per month, and they receive queries during perhaps 40 of 730 hours, so about $620 per month buys nothing. Setting the minimum to 0 ACU brings the fleet to roughly $120 per month, saving about $537 monthly or $6,400 a year for a one-line configuration change.
When does serverless become more expensive than provisioned?
Around 4 to 5 sustained ACUs. At $0.12 per ACU-hour, 8 ACUs costs about $700 per month for roughly 16 GB of memory, while a provisioned db.r6g.xlarge with 32 GB costs $378. Serverless earns its premium only when the peak-to-average ratio is high: a cluster at 1 ACU for 22 hours spiking to 16 ACU for 2 costs about $194 per month against $756 provisioned for the peak.
Does serverless storage scale to zero?
No. Storage is billed continuously on every serverless database offering. Aurora storage is $0.10 per GB-month regardless of whether compute is paused, so a paused cluster holding 50 GB still costs about $5 per month. Only the compute meter pauses, which is why the compute floor rather than storage is where the waste concentrates.
How does C3X help with serverless database cost?
C3X prices the serverless capacity range from Terraform before you merge, so a minimum ACU value carries a visible monthly figure at review time. That matters because a small number in a module is easily copied from production into fifteen development environments, and because the crossover point where provisioned becomes cheaper is a calculation nobody performs after the fact.
What to do next
See what your idle floor costs before it multiplies across a fleet. C3X reads your Terraform and prices your resources against a live catalog. Start with the quickstart.
Share this post
Try C3X on your own Terraform
Free and open source. No API key required. One command to install, one command to estimate.