提问者:小点点

当未达到配置的写入容量时,AWS DynamoDB写入请求被抑制


我编写了一个异步数据迁移工具,用于将数据迁移到 AWS DynamoDB。我们在 Dynamo 的目标表中预置了大量资源。

下面是我们的写入容量图和受限制的请求图。如果我们甚至没有接近写入容量,为什么如此大量的请求会受到限制?所有数据最终都在流动,但非常缓慢,因为我会不断重试。


共1个答案

匿名用户

预置的写入吞吐量分布在表的所有分片之间。根据表的大小和吞吐量,数据分布在分片中。

( readCapacityUnits / 3,000 ) + ( writeCapacityUnits / 1,000 ) = initialPartitions (rounded up)

每10 GB的数据也会创建一个分区。

请参见了解分区行为。

如果您的写入请求没有分布在多个分区键之间,那么在达到配置的吞吐量之前,您将遇到被限制的请求。

在您的特定情况下,您的表至少包含5个部分。这意味着每个碎片每秒最多可以使用1000个单位的写入容量。

第二件要考虑的是物品的大小。每个写请求每1KB项目大小消耗1个写容量单位。

请参阅写入容量单位。

总而言之:只有当您的写入或读取请求并行命中所有分片时,您才能使用100%的预配吞吐量。为此,您需要将工作负载分布在多个不同的分区键之间。