Skip to main content

New: AI-powered cost optimization recommendations.

Learn more
AWS

AWS DynamoDB Pricing: A Complete Guide to Understanding and Optimizing Costs

DynamoDB pricing can be unpredictable. Learn how capacity modes, storage, and request patterns affect your bill—plus 8 strategies to cut costs.

Nishant Thorat

Nishant Thorat

Founder

11 min read

If you've ever been surprised by your DynamoDB bill, you're not alone. Amazon DynamoDB is a powerful, fully managed NoSQL database that can scale to handle millions of requests per second—AWS reported peaks as high as 151 million requests per second during Prime Day. But that scalability comes with complexity in pricing that catches many teams off guard.

The good news? Once you understand how DynamoDB pricing works, you can take control of your costs. Let's break it down.

What is Amazon DynamoDB?

DynamoDB is AWS's flagship NoSQL database service. It's serverless, meaning you don't manage infrastructure—AWS handles provisioning, patching, and scaling automatically. It's designed for applications requiring single-digit millisecond latency at any scale.

[Image: DynamoDB Table Structure]

Common use cases include:

  • Session management and user profiles
  • Real-time bidding and gaming leaderboards
  • IoT data ingestion
  • E-commerce shopping carts
  • Mobile app backends

But here's what matters for your budget: DynamoDB's pricing model is fundamentally different from traditional databases. You're not paying for a fixed server size—you're paying for what you use.

DynamoDB Free Tier

Before diving into costs, here's what AWS gives you for free every month:

ResourceFree Tier Allowance
Storage25 GB across all tables and indexes
Read Capacity25 RCUs (provisioned) OR 2.5M read request units (on-demand)
Write Capacity25 WCUs (provisioned) OR 2.5M write request units (on-demand)

This free tier is generous enough for development, testing, and small production workloads. But once you exceed these limits, understanding the pricing model becomes critical.

DynamoDB Pricing at a Glance (US East - N. Virginia)

Here's the current pricing breakdown to help you estimate costs:

On-Demand Capacity Pricing

OperationStandard Table ClassStandard-IA Table Class
Write Request Units (WRUs)$1.25 per million$1.56 per million
Read Request Units (RRUs)$0.25 per million$0.31 per million

Provisioned Capacity Pricing

ResourceHourly Rate
Write Capacity Unit (WCU)$0.00065 per WCU-hour
Read Capacity Unit (RCU)$0.00013 per RCU-hour

Storage Pricing

Table ClassPrice per GB-month
Standard$0.25
Standard-IA$0.10

Note: Prices vary by region. AWS regions outside the US typically cost 10-25% more. Always check the AWS pricing page for your specific region.

Capacity Modes: The First Big Decision

DynamoDB offers two capacity modes, and this choice fundamentally shapes your costs.

On-Demand Mode

How it works: You pay per request. No capacity planning required. DynamoDB automatically scales to handle your traffic.

[Image: On-Demand Workload Pattern]

Best for:

  • Unpredictable or variable workloads
  • New applications where traffic patterns are unknown
  • Spiky traffic with long idle periods
  • Teams that prioritize simplicity over optimization

Trade-off: On-demand is typically more expensive per request than provisioned capacity, but you never pay for unused capacity.

Provisioned Mode

How it works: You specify the number of read and write capacity units (RCUs/WCUs) per second. You pay for what you provision, whether you use it or not.

[Image: Provisioned Capacity Workload Pattern]

Best for:

  • Predictable, steady-state workloads
  • Cost-conscious teams willing to manage capacity
  • Applications where you can forecast traffic accurately

Trade-off: Lower per-request cost, but you need to monitor and adjust capacity. Over-provisioning wastes money; under-provisioning causes throttling.

Pro tip: Provisioned mode supports auto-scaling, which adjusts capacity based on utilization. This gives you some of the flexibility of on-demand with better economics.

[Image: Auto Scaling Configuration]

Database Savings Plans: The Discount Layer

AWS introduced Database Savings Plans as a commitment-based discount option. Here's what you need to know:

Capacity ModePotential Savings
On-DemandUp to ~18%
ProvisionedUp to ~12%

How it works: You commit to a consistent amount of usage (measured in dollars per hour) for a 1-year term. In return, you get discounted rates on your DynamoDB usage.

Key consideration: Savings Plans offer flexibility across services, making them attractive for organizations with variable usage patterns. For extremely stable workloads, Reserved Capacity may offer deeper discounts—but with less flexibility.

What Actually Drives Your DynamoDB Bill

Here's where most teams get tripped up. DynamoDB pricing has multiple components, and understanding each one helps you optimize effectively.

1. Request Volume (Primary Cost Driver)

This is almost always your biggest cost. Reads and writes are charged per request, with pricing varying by:

  • Capacity mode (on-demand vs. provisioned)
  • Consistency model (eventually consistent reads cost half as much as strongly consistent)
  • Transaction usage (transactional operations consume more capacity)

2. Data Storage

You pay for the total storage used by your tables and indexes. This includes:

  • Base table data
  • Global Secondary Index (GSI) data
  • Local Secondary Index (LSI) data

Storage is charged per GB-month. While often smaller than request costs, storage adds up with large datasets.

3. Item Size and Structure

This is subtle but important:

  • Reads: Charged in 4 KB increments. A 5 KB item costs the same as an 8 KB item.
  • Writes: Charged in 1 KB increments. Keeping items small directly reduces costs.

4. Secondary Indexes

Global Secondary Indexes (GSIs) are powerful but expensive:

  • Every write to the base table replicates to GSIs
  • GSI storage is billed separately
  • More indexes = multiplied write costs

[Image: GSI Base Table Structure]

[Image: GSI Index Structure]

5. Consistency Model

  • Eventually consistent reads: Default, costs 50% of strongly consistent
  • Strongly consistent reads: Guaranteed latest data, costs 2x eventually consistent

6. Transactions

DynamoDB transactions (TransactWriteItems, TransactGetItems) provide atomicity but consume more capacity than standard operations. Use them only when you truly need ACID guarantees.

7. Optional Features

These add costs but may be worth it:

  • DynamoDB Streams: Pay per read request
  • Point-in-time Recovery (PITR): Continuous backups
  • On-demand Backups: Manual snapshots
  • Global Tables: Multi-region replication
  • DAX (DynamoDB Accelerator): In-memory caching layer

[Image: DynamoDB Streams and Lambda]

8 Strategies to Reduce Your DynamoDB Costs

Here's how to optimize without sacrificing performance.

1. Right-size Your Items

Keep items under size thresholds:

  • For writes: Stay under 1 KB when possible
  • For reads: Consider whether 4 KB boundaries affect your access patterns

Small items = lower costs. It's that simple.

2. Be Strategic with GSIs

Create Global Secondary Indexes only for critical access patterns. Each GSI:

  • Multiplies your write costs
  • Adds to storage costs
  • Increases operational complexity

Ask yourself: Can this query be handled differently? Sometimes a scan with a filter is cheaper than maintaining another index.

[Image: Sparse Index Behavior]

3. Use Queries, Not Scans

Scans read every item in a table. Queries target specific partitions. The cost difference can be massive:

  • Scan: Consumes RCUs for every item in the table
  • Query: Consumes RCUs only for items matching your partition key

Design your data model to support queries over scans.

4. Embrace Eventual Consistency

If your application can tolerate slightly stale data (and most can), use eventually consistent reads. You'll cut read costs in half.

Use cases where eventual consistency works fine:

  • Dashboard displays
  • Product catalogs
  • User profiles
  • Session data

5. Reserve Transactions for True ACID Needs

Transactions cost more than standard operations. Use them only when you need atomicity across multiple items—like financial transfers or inventory updates.

6. Use Standard-IA for Cold Data

DynamoDB offers a Standard-Infrequent Access (Standard-IA) table class. It's cheaper for storage but slightly more expensive for requests. Ideal for:

  • Archival data
  • Compliance logs
  • Infrequently accessed records

7. Clean Up Unused Resources

This sounds obvious, but we've seen it save thousands:

  • Delete unused tables
  • Remove orphaned indexes
  • Disable PITR and backups on development tables
  • Review and prune old GSIs

8. Implement Cost Allocation Tags

Tagging won't reduce costs directly, but it enables accountability. When teams see their DynamoDB costs attributed to their services, behavior changes.

How CloudYali Helps You Optimize DynamoDB Costs

At CloudYali, we believe cost visibility is the foundation of cost optimization. Our platform helps you:

  • Identify idle and underutilized DynamoDB tables before they drain your budget
  • Track cost trends across all your DynamoDB resources with clear visualizations
  • Set up intelligent alerts when DynamoDB spending spikes unexpectedly
  • Allocate costs accurately to teams, projects, and environments with tagging governance
  • Discover savings opportunities through automated recommendations

The reality is that most DynamoDB cost variance comes from request volume, data shape, and index design—not from choosing the wrong region or missing a minor feature. CloudYali gives you the visibility to understand where your money goes and the insights to reduce waste.

Example Cost Calculation

Let's walk through a real-world example to see how costs add up.

Scenario: E-commerce product catalog

  • 50 GB of data
  • 10 million reads per month (eventually consistent)
  • 1 million writes per month
  • 2 Global Secondary Indexes
  • Standard table class, On-Demand mode

Monthly Cost Breakdown:

ComponentCalculationCost
Storage50 GB x $0.25$12.50
Reads10M x $0.25/million x 0.5 (eventually consistent)$1.25
Writes1M x $1.25/million$1.25
GSI Writes1M x 2 indexes x $1.25/million$2.50
GSI Storage~30 GB x $0.25 (estimated)$7.50
**Total****~$25/month**

Now compare that to provisioned capacity with similar usage:

  • 1 WCU handles ~2.6M writes/month (1 write/second x 86,400 seconds x 30 days)
  • 1 RCU handles ~2.6M eventually consistent reads/month

Provisioned Alternative:

ComponentCalculationCost
Storage50 GB x $0.25$12.50
Write Capacity1 WCU x $0.00065 x 730 hours$0.47
Read Capacity4 RCUs x $0.00013 x 730 hours$0.38
GSI CapacitySimilar overhead~$1.00
**Total****~$14.35/month**

The provisioned approach saves ~43% in this steady-state scenario. But if traffic is variable, on-demand protects you from throttling without over-provisioning.

DynamoDB vs. Other Storage Options

A quick comparison to help you choose the right tool:

Use CaseBest Option
Key-value lookups, low latencyDynamoDB
Large file storageS3
Complex relational queriesRDS or Aurora
Time-series dataTimestream
Graph relationshipsNeptune

DynamoDB excels at fast, predictable key-based access. If you're forcing it into relational query patterns, you might be paying more than necessary.

Frequently Asked Questions

How do I estimate my DynamoDB costs?

Start with these inputs:

  1. Expected read and write request volumes
  2. Average item size
  3. Number of secondary indexes
  4. Consistency requirements
  5. Storage needs

AWS offers a pricing calculator, but real-world usage often differs. We recommend starting with on-demand mode to measure actual patterns, then optimizing from there.

Should I use on-demand or provisioned capacity?

  • Choose on-demand if: Traffic is unpredictable, you're just starting, or you prioritize simplicity
  • Choose provisioned if: Traffic is steady and predictable, you want lower per-request costs, you're willing to manage capacity

How much can Database Savings Plans save?

Up to ~18% for on-demand usage and ~12% for provisioned capacity. The actual savings depend on your commitment amount and usage patterns.

What's the biggest DynamoDB cost mistake teams make?

Over-indexing. We consistently see teams create GSIs "just in case" and forget about them. Each unused index costs money on every write operation.

How do I know if my DynamoDB tables are over-provisioned?

Look at your consumed capacity vs. provisioned capacity in CloudWatch. If utilization is consistently below 20-30%, you're likely over-provisioned. CloudYali can surface these insights automatically.

Ready to Take Control of Your DynamoDB Costs?

DynamoDB pricing doesn't have to be a mystery. With the right visibility and optimization strategies, you can run high-performance applications without budget surprises.

[See how CloudYali can help you optimize your AWS costs](https://cloudyali.io)

Have questions about DynamoDB pricing or cloud cost optimization? We'd love to hear from you.

#DynamoDB#NoSQL#Database Pricing#AWS Cost Management#Serverless#Cost Optimization#FinOps

Ready to optimize your cloud costs?cloud costs

Start your free trial today and see how CloudYali can help you save.