代码之家  ›  专栏  ›  技术社区  ›  Connor Bishop

aws dynamo db吞吐量

  •  3
  • Connor Bishop  · 技术社区  · 8 年前

    关于AWS DynamoDb吞吐量,有一些我无法理解的地方。

    让我们考虑强一致性读取。

    现在,我明白了,在这种情况下,1个容量单位意味着我可以每秒读取高达4KB的数据。

    “每秒”这一点让我有点困惑。如果您确切知道读取数据的速度,那么可以适当设置单位。但是如果你对阅读时间不太挑剔呢?

    假设我的表只分配了1个读取单元,并且我尝试读取超过4KB的项。现在,这肯定意味着我的阅读时间将超过1秒?这很好,但文档中提到请求失败。当我没有要求在特定时间内读取数据时,AWS如何确定我使用了太多的单位?

    也许我错过了一些明显的东西。你能找个人帮我清理一下吗?

    1 回复  |  直到 8 年前
        1
  •  4
  •   F_SO_K    8 年前

    DynamoDB在中最多可以消耗300秒的未使用吞吐量 burst capacity .

    DynamoDB中的最大项目大小为400KB,而1个RCU最多可读取4KB。

    假设您想读取400KB大小的项目,并且您的表上有1个RCU。您可以每100秒检索一次该项目。

    由于突发容量,您总是有时间读取该项目,因为事实上,您可以一次性使用多达300个RCU,而不仅仅是1个。

    想象一下,以400KB的项开始表。您需要等待100秒,而无需花费任何RCU,以便获得足够的突发容量来获取该项目。101秒后,您发出请求,花费100个RCU获得物品。再过5秒钟,您再次发出请求,但由于节流异常而被拒绝。

    因此,DynamoDB不会增加请求延迟来满足您的RCU规定。它要么尽快返回结果,要么抛出异常。

    编辑:顺便提一下,所有AWS DynamoDB SDK都会为您处理节流异常。如果您尝试读取某个项目,但由于没有足够的可用吞吐量而被拒绝,则SDK会退出并重试。因此,除非您的表确实配置不足,否则您不必担心处理节流异常。

    推荐文章