Databases FinOps Engineering · April 2026 · 7 min read AWS

Aurora Serverless v2 vs Provisioned: where does the crossover point actually sit?

Senior Database Reliability Engineer Fintech, AWS-native April 2026
← Back to blog

Aurora Serverless v2 was supposed to settle the question: pay for what you use, autoscale gracefully, never over-provision a database again. In practice, the math turns out to be more interesting. ACU billing is generous when your database is genuinely idle for long stretches — and brutal when it is not.

This post puts both options on a simulation canvas and walks through the three traffic shapes where the answer flips.

How ACUs actually bill

An Aurora Capacity Unit (ACU) is roughly 2 GiB of memory plus proportional CPU and network. As of mid-2026, ACUs bill at ~$0.12/hour in us-east-1. The smallest configuration scales between 0.5 ACU (idle floor) and a maximum you set. Crucially, billing is per-second of consumed capacity, with rapid scale-up but a noticeably lazier scale-down.

The equivalent provisioned instance — a db.r6g.large — has 2 vCPU, 16 GiB RAM, and bills at ~$0.29/hour reserved or ~$0.46/hour on-demand. Roughly equivalent to 8 ACUs running flat-out.

Three traffic shapes, three different answers

Idle-heavy (dev, batch, B2B)

Database does real work 2–4 hours per day. Serverless v2 wins decisively — often 60–70% cheaper than provisioned. The 0.5 ACU floor is the killer feature.

Steady-state (consumer SaaS)

Sustained baseline of 4–6 ACUs equivalent. Crossover territory. Provisioned + RI typically wins by 25–35%. Serverless only wins if traffic has long deep troughs.

Sustained high (mature platform)

Database sits at 8+ ACUs equivalent all day. Serverless v2 is dramatically more expensive — sometimes 2–3× the cost of a reserved provisioned cluster.

The crossover math

If your average consumed capacity over a month is below roughly 40% of the equivalent provisioned instance's capacity, Serverless v2 wins on cost alone. Above that, provisioned wins. With a 1-year reserved instance commitment, the threshold drops to about 60% — meaning provisioned wins even more often.

Avg utilisationServerless v2 (max 16 ACU)db.r6g.xlarge on-demanddb.r6g.xlarge 1-yr RI
20% (dev workload)$210/mo$670/mo$420/mo
40% (light prod)$420/mo$670/mo$420/mo
70% (busy prod)$740/mo$670/mo$420/mo
95% (saturated)$1,010/mo$670/mo$420/mo

Hidden failure modes

Cost is only half the story. Two operational quirks of Serverless v2 surface only under simulated load:

The decision rule we use

If a workload spends >50% of the day above 40% of its peak capacity, default to provisioned + RI. If a workload genuinely idles or has nightly windows, default to Serverless v2. Run the simulation either way — the gap between "default" and "right answer" can be five figures annually on a single database.

How to simulate this on pinpole

On the pinpole canvas, drop an Aurora node, choose Serverless v2 with your ACU range, attach the application traffic source, and run the simulation. The simulator propagates traffic, models ACU consumption per second, and returns a live monthly cost. Swap the same node to provisioned with a chosen instance class and re-run. The diff is your decision.

This is exactly the kind of question that draw.io and the Pricing Calculator cannot answer together — one is a picture, the other is a spreadsheet. Simulation lets you ask "what does this database actually cost under the traffic shape we actually have."

Stop guessing whether Serverless v2 wins for your workload.

Wire both variants on the pinpole canvas, replay your real traffic shape, and let the cost simulator answer.

Start 14-day free trial →