DynamoDB 是内存数据库吗?

不是。DynamoDB 不是内存数据库——每一次写入都会被持久化到持久存储上,并自动跨三个可用区复制。当你需要内存级速度时,DynamoDB Accelerator(DAX)会加上一层全托管的内存缓存,把最终一致性读取从个位数毫秒压到微秒。

从设计上就是持久的

DynamoDB 是一个持久化的操作型数据库:写入被存放在持久介质上,并默认跨三个可用区复制,支撑着 99.99% 的可用性 SLA。这与纯内存存储的取舍正好相反——在后者里数据活在 RAM 中,持久性是可选的。

不加缓存它也很快

基础的 DynamoDB 在任何规模下都提供稳定的个位数毫秒级读写,因为每次读取都直接命中一个分区键,而不是去扫描。大多数工作负载压根不需要缓存。

唯一「内存版」的 DynamoDB 是那个模拟器

混淆通常从 DynamoDB Local 开始,它确实有一个内存模式。启动它,横幅就这么写着:

docker run -p 8000:8000 amazon/dynamodb-local -jar DynamoDBLocal.jar -inMemory -sharedDb
Initializing DynamoDB Local with the following configuration:
Port:	8000
InMemory:	true
Version:	3.3.0

写入一个项目,重启容器,然后再去找它:

after write:            {"total":{"N":"42"},"pk":{"S":"ORDER#1"}}
tables after restart:   []
read after restart:     ResourceNotFoundException | Cannot do operations on a non-existent table

跟着一起没的是整张表,不只是那个项目。这个参数属于测试用的模拟器。托管服务没有对应的设置,也没有任何一种模式会让一次已确认的写入只活在 RAM 里。

DAX:那层内存

当微秒真的要紧时——实时竞价、游戏排行榜、热门商品页——DAX 就是 AWS 的答案:一个与 DynamoDB 兼容的写穿式内存缓存,用极少的代码改动把最终一致性读取的性能提升一个数量级。它不适合强一致性读取或写密集型工作负载。

深入了解

一致性指南里理解一致性上的取舍,反过来的问题见 DynamoDB 能当缓存用吗?,用定价计算器估算读取成本,并下载 DynoTable 来查看你的表。

在 DynoTable: 查询预览标签 ScanQuery 并在表元数据允许时显示 RCU 估计,因此您可以在运行之前查看完整读取的成本。普通分区键 Query 调用不会显示 RCU 线路。参见SQL Workbench — preview the query cost

深入了解

最后核实于 2026-07-13,依据上方链接的 AWS 官方文档。

2026-07-28 针对 DynamoDB Local 3.3.0,经由 @aws-sdk/client-dynamodb 3.1095.0、Node v24.18.0 复现。上方的横幅与三行输出均为原样照录。

深入了解

根据上面链接的官方AWS文档上次验证时间为 2026 年 7 月 13 日。

于 2026 年 7 月 28 日在 Node v24.18.0 上通过 @aws-sdk/client-dynamodb 3.1095.0 针对 DynamoDB Local 3.3.0 复制。横幅和三个输出行是逐字记录的。

无需控制台即可使用 DynamoDB

一款快速的 DynamoDB 桌面客户端,可运行 DynamoDB 无法执行的真正 SQL——JOINs、GROUP BY、聚合——并支持可视化编辑和运行在你自己的 Bedrock 密钥上的 AI agent。

30 天免费试用,无需信用卡 — 之后为无时间限制的免费版。