aws dynamodb 吞吐量

aws dynamo db throughput

关于 AWS DynamoDb 吞吐量,我有些不明白。

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

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

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

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

也许我遗漏了一些明显的东西。有人可以帮忙解决这个问题吗?

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

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

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

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

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

所以不,DynamoDB 不会增加请求延迟来满足您的 RCU 规定。它要么 returns 尽快得到结果,要么抛出异常。

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