未达到配置的写入容量时,AWS DynamoDB写入请求会受到限制

时间:2016-11-14 20:51:04

标签: c# amazon-web-services amazon-dynamodb

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

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

Write capacity graph Throttled write requests graph

1 个答案:

答案 0 :(得分:2)

配置的写入吞吐量分布在表的所有分片中。根据表的大小和吞吐量,您的数据将在分片中分配。

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

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

请参阅Understand Partition Behavior

如果您的写入请求未在多个分区键之间分配,您将在达到预配置吞吐量之前遇到受限制的请求。

在您的特定情况下,您的表至少存在5个分区。这意味着每个分片每秒最多可以使用1,000个单位的写入容量。

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

请参阅Write Capacity Units

总结:如果您的写入或读取请求并行地击中所有分片,则您只能使用100%的预配置吞吐量。为此,您需要在多个不同的分区键之间分配工作负载。