Skip to content
Cloud Efficiency Hub

Missing Reserved Capacity for Steady Cosmos DB Throughput

The short version

Production Cosmos DB accounts usually carry a stable floor of provisioned throughput that runs every hour of the year: core containers on manual RU/s, the 10% minimum of autoscale containers, and the same throughput repeated in every replica region.

PointFive Research

Cloud cost research at PointFive

Azure service
Azure Cosmos DB
Category
Databases
Reference
CER-0440
Type
Suboptimal Pricing Model

Explanation

Why the waste happens and who it affects.

That floor is billed at pay-as-you-go rates unless it is covered by Cosmos DB reserved capacity, which discounts provisioned RU/s for a one- or three-year commitment and applies automatically to matching resources.

Cosmos DB is often left out of commitment reviews that focus on VMs, and sizing is harder than for compute: reservations are bought in RU/s, autoscale throughput in single-write-region accounts consumes reservations at 1.5 times its RU/s, and some regions consume reservations at a higher ratio. Azure Advisor raises a dedicated purchase recommendation for Cosmos DB reservations, and Microsoft states discounts of up to 63% compared with regular prices.

Billing model

The pricing dimensions that drive this cost.

Pay-as-you-go throughput
Provisioned RU/s billed per hour at standard, autoscale or multi-region write rates, per region
Fixed-discount reservation
Multiples of 100 RU/s for 1 or 3 years, at 20% (1 year) or 30% (3 years) off regular prices
Progressive reservation
Units from 1,000,000 RU/s upward with larger discounts, up to 63% for the biggest three-year multi-region write units
Reservation consumption
Hourly and use-it-or-lose-it; autoscale RU/s in single write region accounts count 1.5 times, multiplied by the regional ratio

How to detect

4 checks to find it in your estate.

  • Review Azure Advisor for 'Consider Cosmos DB reserved instance to save over the pay-as-you-go costs' and the Recommended tab when purchasing an Azure Cosmos DB reservation, which analyzes the last 7, 30 and 60 days of hourly usage
  • Chart the Provisioned Throughput metric summed across accounts and regions in the intended scope over 30 to 60 days and take the lowest sustained hourly value as the reservable baseline
  • In Cost analysis, filter to Azure Cosmos DB and group by meter and pricing model to see how much provisioned throughput is billed at pay-as-you-go rates rather than covered by a reservation or savings plan
  • Exclude serverless accounts, storage and network charges from the analysis, since reservations don't cover them

How to fix

5 ways to remove the waste.

  • Buy reserved capacity for the steady baseline only, summing RU/s across all regions of each account and applying the 1.5 multiplier for single-write-region autoscale throughput and the regional ratios where they apply
  • Choose the throughput type that matches the accounts (100 RU/s or 100 multi-region write RU/s units), and use the largest progressive unit that fits for estates of 1,000,000 RU/s or more
  • Use shared or management group scope so the reservation follows throughput across subscriptions, and use exchanges when the baseline changes
  • Consider the savings plan for databases, which covers Azure Cosmos DB with an hourly spend commitment, where throughput is spread across services or likely to shift
  • Rightsize idle containers and fix throughput mode first, so the reservation isn't sized to waste

Documentation

Vendor references for pricing and configuration.