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.