提问者:小点点

AWS DynamoDB。我是否过度使用了写入容量?


DynamoDB自由层提供:

  • 25 GB存储空间
  • 25单位读取容量
  • 25单位写入容量

容量单位(SC/EC - 强/最终一致):

  • 1 RCU = 1 SC 读取 4kB 项目/秒
  • 1 RCU = 2 EC 读取 4kB 项目/秒
  • 1 WCU = 1 次写入 1kB 项目/秒

我的申请:

  • 一个DynamoDB表5 RCU,5 WCU
  • 一个λ<ul>
  • 每1分钟运行一次
  • 向DynamoDB写入3个项目,每个项目约8kB
  • lambda执行需要

该应用程序工作正常,目前没有节流。

在我的CloudWatch中有一些图表(忽略7:00之后的部分):

  • 这个图表上的值是22 WCU

    < li >在这个图表上是110 WCU -实际算出来的-这个图表分辨率是5分钟- 5*22=110(留在这里以防我未来的自己搞不清楚)

我们每秒有3次写入约8kB项——即约24个WCU。这与我们在CloudWatch(22个WCU)中看到的一致。但是表被配置为只有5个WCU。我已经阅读了一些其他问题,据我所知,如果我的表配置中的WCU总和低于25个,我可以安全地支付额外费用。

  • 我是否过度使用表的写入容量?
  • 我应该期待节流还是额外费用?
  • 据我所知,我的使用量仍然在免费层限制内,但很接近(25个中的22个)。如果我在这些图表上的使用量超过25个,我需要额外付费吗?

共1个答案

匿名用户

配置的预配容量为每秒,而您在CloudWatch中看到的数据为每分钟。因此,您配置的每秒5 WCU转换为每分钟300 WCU(5 WCU*60秒),远高于每分钟消耗的22 WCU。

这应该已经回答了你的问题,但要详细阐述一些细节:

理论上,配置了5个WCU的7KB单次写入永远不会成功并导致节流,因为7KB需要7个WCU才能写入,而您只配置了5 WCU(我们可以安全地假设您的写入将在一秒内发生)。幸运的是,DynamoDB工程师考虑到了这一点,并实现了突发容量。当您不使用已调配的容量时,您可以将其保存长达5分钟,以便在需要的容量超过已调配容量时使用。这是提高容量利用率时要记住的一点。