我已经在亚马逊上看过该页面,并了解1 RCU是一个4KB的项目。
如果我有一个包含50个项目的表,我已经读过扫描将读取完整的50个项目并使用50个RCU。但是让我说我做了一个查询,我的表是10乘5,它还会使用50 RCU吗?
答案 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。
有几点需要注意:
答案 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