两种DynamoDB表设计方案的RCU消耗对比分析
DynamoDB表设计RCU消耗分析及测试解释
哪种方案RCU消耗最低?
方案A的RCU消耗始终更低,核心原因是数据存储粒度的差异:
- 方案A:将同一cookie对应的所有用户名存储在单个项目的
associate_usernames属性中。读取时仅需一次请求获取该项目,只要项目总大小不超过8KB(最终一致读取)或4KB(强一致读取),仅消耗0.5个RCU(最终一致)或1个RCU(强一致)。即使后续该cookie关联的用户名数量增加,只要项目大小未超出阈值,RCU消耗不会变化。 - 方案B:每个用户名对应一个独立项目,查询同一cookie下的N个用户需要读取N个项目。RCU消耗会随匹配的项目数量增加而上升——DynamoDB按读取的总数据量计算RCU,最终一致读取每8KB消耗1个RCU,强一致读取每4KB消耗1个RCU。匹配的项目越多,总数据量越大,RCU消耗越高。
测试合理性及现象原因
你的测试是合理的,结果完全符合DynamoDB的RCU计算规则:
- 数据量较小时:
两种方案都仅读取1个小项目(方案A是包含单个用户名的map,方案B是单个用户项目)。假设采用最终一致读取模式,只要项目总大小≤8KB,两者的RCU消耗均为0.5(因为1个RCU支持最终一致读取8KB,小项目的读取消耗按数据占比或最小计量单位计算后显示为0.5)。 - 当partition key匹配数增至100时:
- 方案A仍读取单个项目,只要该项目包含100个用户名的map总大小≤8KB,最终一致读取的RCU消耗保持0.5。
- 方案B需要读取100个独立项目,假设每个项目大小约80字节,100个项目总大小约8KB。最终一致读取模式下,8KB恰好消耗1个RCU,因此RCU变为1。
内容的提问来源于stack exchange,提问作者Munachi Ernest
相关产品推荐
相关产品推荐

