【问题标题】:How many per second request can my provisioned Dynamodb throughput support我配置的 Dynamodb 吞吐量支持每秒多少个请求
【发布时间】:2019-08-13 23:58:42
【问题描述】:

阅读了几篇关于 Dynamodb 的文档和博客后,我仍然难以理解 RCU 和 WCU 的工作原理。

我部署了一个包含 5 个 RCU 的表。此表上的请求主要是GetItem 请求,平均响应负载为 7KB。我知道测量的不是有效负载的大小,而是读取操作期间消耗的数据大小。但我们只是假设它消耗了相似的数据大小。

根据 Dynamodb 文档,每个预置的 RCU 最多可以支持 4KB 的一致性读取 因此,如果我理解它,我的预置吞吐量可以支持高达每秒 20KB 的速度而不会受到限制。

基于此,如果我的平均有效负载为 7KB, 我说得对吗,我的表可以支持大约 2 个请求/秒?

如果有人能对此有所了解,将不胜感激。

【问题讨论】:

    标签: amazon-dynamodb


    【解决方案1】:

    TD;LR

    是的,你是对的

    更多详情

    您可能已经知道其中一些,但为了完整起见并帮助其他人,我将详细介绍一下:

    • RCU 是读取容量单位
    • WCU是写容量单位

    • 最终一致的读取:如果最新的写入尚未在所有地方复制,您可能会得到陈旧的数据。

    • 高度一致的读取:您始终获得最新数据。
    • 事务性读取:您正在作为 DynamoDB 事务的一部分进行读取。

    单位不等于每秒请求数。根据您阅读的内容和方式,有不同的性能配置文件。我会解释的。

    读取性能

    有 3 种读取:强一致性、事务性和最终一致性。它是这样的:

    返回的每 4Kb 数据块(可能是来自 DB 的多行):

    • 最终一致:1 个 RCU 每秒可以读取 2 个块
    • 高度一致:1 个 RCU 每秒可以读取 1 个块
    • 事务性:2 个 RCU 每秒可以读取 1 个块

    因此,对于您的示例,您的项目大约为 7Kb,并且您想要进行高度一致的读取,它需要 2 个 RCU 来每秒读取 1 个项目。由于您配置了 5 个 RCU,因此您是正确的,您可以预期每秒大约 2 次读取。

    如果您想从数据库中榨取更多汁液,请注意返回的数据量。我认为如果您的平均项目大小为 7Kb,这有点令人担忧。您可能需要考虑使用对象存储,并将对有效负载的引用存储在 dynamodb 中,而不是有效负载本身。我想这取决于您存储的内容和您的用例。这可能是合法的,但听起来有点可疑。

    【讨论】:

    • 感谢您为我解惑!这真的有帮助 我只是有点好奇 7KB 的平均大小就是这样,你能详细说明一下吗?抱歉,我对 DynamoDB 很陌生
    • 单行数据7Kb有点大,这只是一般的观察。在我看来,您可能从查询中返回了太多数据。除非您的意思是返回的不是每个项目 7Kb,而是整个结果集的大小。那你应该没事吧。以防万一,dynamodb 项目可能有助于减少数据大小。此外,您可能已经知道但不要像关系数据库那样设计 dynamodb 表。大量关于该主题的视频。我的最爱:youtube.com/watch?v=HaEPXoXVf2k&t=3010s
    猜你喜欢
    • 2018-06-25
    • 1970-01-01
    • 2015-10-02
    • 1970-01-01
    • 1970-01-01
    • 2013-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多