如何在DynamoDB查询中计算消耗的读取容量单位
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在DynamoDB查询中计算消耗的读取容量单位相关的知识,希望对你有一定的参考价值。
我在亚马逊上看过这个页面,并且明白1 RCU是一个4KB的项目。
如果我有一个包含50个项目的表,我已经读过扫描将读取完整的50个项目并使用50 RCU。但是让我说我做了一个查询,我的表是10乘5,它还会使用50 RCU吗?
扫描包含50个项目的表将仅消耗50 RCU,如果50个项目的总大小相等于200KB(对于强一致性读取,或400KB用于最终一致读取)。大多数项目都不是那么大,所以50个项目通常只需要大约10KB来存储意味着对50个项目的表进行全面扫描,最终的一致性,只需要大约3 RCU。
消耗的读取容量单位(RCU)取决于多个因素:
- 操作(即获取与查询/扫描)
- 物品的大小
- 读是否是strongly consistent or eventually consistent
如果使用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。
- 在计算项目大小时,属性名称也会计入项目大小,而不仅仅是它们的值!
以上是关于如何在DynamoDB查询中计算消耗的读取容量单位的主要内容,如果未能解决你的问题,请参考以下文章