我在亚马逊上看过这个页面,知道 1 个 RCU 是一个 4KB 的项目。
如果我有一个包含 50 个项目的表,我读到扫描将读取全部 50 个项目并使用 50 个 RCU。但是假设我做了一个查询,我的表是 10 x 5,它还会使用 50 RCU 吗?
最佳答案
仅当 50 个项目的总大小加起来等于 200KB(对于强一致性读取,或 400KB 用于最终一致性读取)时,扫描包含 50 个项目的表将消耗 50 RCU。大多数项目都没有那么大,所以 50 个项目通常只需要大约 10KB 来存储,这意味着对 50 个项目的表进行完整扫描,最终一致性,将只花费大约 3 个 RCU。
消耗的读取容量单位 (RCU) 取决于多种因素:
如果使用 读取项目获取项目 操作比消耗的容量以 4KB 为增量计费,基于项目的大小(即 200B 项目和 3KB 项目将分别消耗 1RCU,而 5KB 项目将消耗 2RCU)
如果您使用 阅读多个项目查询 或 扫描 操作,则消耗的容量取决于正在访问的项目的累积大小(即使在使用过滤器时从查询或扫描中过滤出的项目,您也会被计费)。因此,如果您的查询或扫描访问 10 个项目,每个项目的大小约为 200 字节,那么它将仅消耗 1 个 RCU。如果读取 10 个项目,但每个项目的大小约为 5KB,则总消耗容量将为 13 个 RCU(50KB/4KB = 12.5,四舍五入为 13)
更重要的是,如果您执行最终一致的读取,那么您可以将每个容量单位的大小增加一倍。因此,读取 10 个 5KB 项目只需要 7 个 RCU。
您可以阅读 more about throughput capacity这里。
有几点需要注意:
关于amazon-web-services - 如何在 DynamoDB 查询中计算消耗的读取容量单位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50178275/