aws dynamo db吞吐量

时间:2018-01-16 18:08:10

标签: amazon-web-services amazon-dynamodb throttling throughput

我无法理解AWS DynamoDb吞吐量。

让我们考虑强烈一致的读取。

现在,据我所知,在这种情况下,1个单位的容量意味着我每秒最多可以读取4KB。

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

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

也许我错过了一些明显的东西。你能帮助解决这个问题吗?

1 个答案:

答案 0 :(得分:3)

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

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会退回并重试。因此,除非你的表格真的没有配置,否则你不必担心处理限制异常。