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

问题描述 投票:0回答:1

我在亚马逊上看过这个页面,并且明白1 RCU是一个4KB的项目。

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

amazon-web-services aws-lambda amazon-dynamodb alexa-skills-kit
1个回答
4
投票

扫描包含50个项目的表将仅消耗50 RCU,如果50个项目的总大小相等于200KB(对于强一致性读取,或400KB用于最终一致读取)。大多数项目都不是那么大,所以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。
  • 在计算项目大小时,属性名称也会计入项目大小,而不仅仅是它们的值!
© www.soinside.com 2019 - 2024. All rights reserved.