如何在DynamoDB查询中计算消耗的读取容量单位

时间:2018-05-04 15:21:35

标签: amazon-web-services aws-lambda amazon-dynamodb alexa-skills-kit

我已经在亚马逊上看过该页面,并了解1 RCU是一个4KB的项目。

如果我有一个包含50个项目的表,我已经读过扫描将读取完整的50个项目并使用50个RCU。但是让我说我​​做了一个查询,我的表是10乘5,它还会使用50 RCU吗?

2 个答案:

答案 0 :(得分:4)

如果50个项目的总大小相等于200KB(对于强一致性读取,或400KB用于最终一致读取),则扫描包含50个项目的表将消耗50 RCU。大多数项目都不是那么大,所以50个项目通常只需要大约10KB来存储意味着对50个项目的表进行全面扫描,最终的一致性,只需要大约3 RCU。

消耗的读取容量单位(RCU)取决于多个因素:

如果使用 GetItem 操作读取项目,则消耗的容量按4KB的增量计费,具体取决于项目的大小(即200B项目和3KB项目将消耗1RCU,而5KB项目将消耗2 RCU)

如果您使用查询扫描操作阅读多个项目,则所消耗的容量取决于访问的项目的累积大小(即使是使用过滤器过滤掉查询或扫描的项目,也会收到帐单。因此,如果您的查询或扫描访问10个项目,每个项目大小约为200个字节,那么它将只消耗1个RCU。如果您阅读10个项目,但每个项目大小约为5KB,那么总消耗容量将为13 RCU(50KB / 4KB = 12.5,向上舍入,为13)

更重要的是,如果您执行最终一致性读取,那么您可以将每个容量单位的大小加倍。因此,读取10个5KB的项目只需要7 RCU。

您可以在此处阅读more about throughput capacity

有几点需要注意:

  • 单个项目可能大到400KB,因此阅读项目可能会消耗多达100 RCU。
  • 在计算项目大小时,属性名称也会计入项目大小,而不仅仅是它们的值!

答案 1 :(得分:2)

查询-读取具有相同分区键值的多个项目。所有 返回的项目被视为单个读取操作,其中DynamoDB 计算所有项目的总大小,然后四舍五入到下一个4 KB边界。例如,假设您的查询返回10个项目,这些项目的 组合大小为40.8 KB。 DynamoDB将项目大小四舍五入到 操作至44 KB。如果查询返回1500个项目,每个项目64个字节, 累积大小为96 KB。

参考:https://docs.amazonaws.cn/en_us/amazondynamodb/latest/developerguide/ProvisionedThroughput.html