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

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

我在亚马逊上看过这个页面,知道 1 个 RCU 是一个 4KB 的项目。

如果我有一个包含 50 个项目的表,我读到扫描将读取全部 50 个项目并使用 50 个 RCU。但是假设我做了一个查询,我的表是 10 x 5,它还会使用 50 RCU 吗?

最佳答案

仅当 50 个项目的总大小加起来等于 200KB(对于强一致性读取,或 400KB 用于最终一致性读取)时,扫描包含 50 个项目的表将消耗 50 RCU。大多数项目都没有那么大,所以 50 个项目通常只需要大约 10KB 来存储,这意味着对 50 个项目的表进行完整扫描,最终一致性,将只花费大约 3 个 RCU。

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

  • 操作(即获取与查询/扫描)
  • 元素尺寸
  • 读取是否为strongly consistent or eventually consistent

  • 如果使用 读取项目获取项目 操作比消耗的容量以 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这里。

    有几点需要注意:
  • 单个项目可能大到 400KB,因此读取一个项目可能会消耗多达 100 个 RCU。
  • 在计算项目大小时,属性名称也计入项目大小,而不仅仅是它们的值!
  • 关于amazon-web-services - 如何在 DynamoDB 查询中计算消耗的读取容量单位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50178275/

    相关文章:

    javascript - 将 AWS.cloudSearch 与 javaScript 结合使用

    amazon-web-services - 如何选择 AWS 上的特定可用区以使 Restcomm 正常工作?

    amazon-web-services - 使用 ElastiCache redis 服务器和密码解析服务器

    aws-lambda - 被 CORS 阻止,也无法使用 Amplify Functions 访问 REST API 端点

    aws-lambda - Cloudformation 上的 AWS JAVA LAMBDA

    java - 用于集成测试的 DynamoDB 假服务器

    node.js - 无法更新 DynamoDB 中的项目

    amazon-web-services - AWS : SSH to private subnet EC2 instance from public subnet EC2 instance via NAT GATEWAY is not happening

    python - 如何使用 python 检查日期是否为空?

    amazon-web-services - DynamoDB 仪表板无法保存/更新项目 : ConditionalCheckFailedException