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

时间:2019-01-01 09:02:53

标签: amazon-web-services amazon-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
  • 一个lambda
    • 每1分钟运行一次
    • 向DynamoDB写3个项目,每个〜8kB
    • lambda执行耗时<1秒

该应用程序可以正常运行,到目前为止没有任何限制。

CloudWatch

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

  • 此图表上的值为22 WCU

enter image description here

  • 在这张图表上是110 WCU-实际算出了-该图表分辨率为5分钟-5 * 22 = 110(以防万一我未来的自我困惑留在这里)

enter image description here

问题

我们每秒写入3笔〜8kB项-约为24 WCU。这与我们在CloudWatch(22 WCU)中看到的一致。但是表配置为只有5个WCU。我已经阅读了其他一些问题,据我了解,如果我的表配置中的WCU总数低于25,则可以免除额外费用。

  • 我是否过度使用了表的写容量?
  • 我应该节流还是要收取额外费用?
  • 据我所知,我的使用情况仍在免费套餐限制之内,但已接近(25个中的22个)。如果我在这些图表上的使用量超过25,是否需要向我收取额外费用?

1 个答案:

答案 0 :(得分:4)

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

那应该已经回答了您的问题,但需要详细说明一些细节:

理论上,配置为5 WCU的单个7KB写入将永远不会成功并引起节流,因为7KB需要7 WCU进行写入,而您仅配置了5 WCU(我们可以安全地假设您的写入将一秒钟之内发生)。幸运的是,DynamoDB工程师对此进行了思考,并实现了burst capacity。当您不使用预配容量时,您将最多保存5分钟,以便在您需要的资源超过预配容量时使用它们。提高容量利用率时要记住这一点。