You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS DynamoDB部分GSI写入吞吐量为主表两倍的原因咨询

DynamoDB GSI写入吞吐量翻倍的原因分析

核心原因

带排序键的GSI,当主表写入操作涉及GSI分区键+排序键的变更(含重复设置相同值)时,DynamoDB会对GSI执行删除旧条目+插入新条目两次操作,直接导致写入吞吐量翻倍。

详细拆解

  • GSI写入逻辑差异:
    • 无排序键的GSI:仅依赖分区键,只要分区键值未变化,哪怕更新主表其他属性,GSI仅执行1次写入操作,吞吐量与主表匹配(40)。
    • 带排序键的GSI:当主表写入操作修改了GSI的排序键属性(哪怕是把值改成和原来一样),DynamoDB会判定为GSI条目需要"替换"——先删除旧的键组合条目,再插入新的键组合条目,这两次操作各消耗1个WCU,最终总吞吐量是主表的2倍(80)。
  • 趋势匹配的原因:主表的每次写入都触发了GSI的两次写入,所以两者的12小时使用趋势完全同步,只是数值翻倍。

验证方向

  • 检查应用代码中的主表写入操作,确认是否每次都更新了那三个GSI的排序键对应属性(包括无意识的重复赋值)。
  • 查看CloudWatch中GSI的WriteCapacityUnits指标,对比主表的WriteCapacityUnits,看是否严格呈2倍关系;同时观察GSI中DeleteItem和PutItem的占比,若Delete占比接近50%,则可确认是两次写入导致的。

优化建议

  • 避免无意义的GSI键属性更新:在UpdateItem操作中,不要包含GSI排序键属性的赋值(除非确实需要修改其值)。
  • 调整GSI键设计:如果排序键的变更频率高,考虑是否可以用其他属性作为排序键,或者重新评估该GSI的必要性,减少这类高消耗的写入操作。

内容的提问来源于stack exchange,提问作者sfaust

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 15:03:26