使用事务时,DynamoDB中的ProvisionedThroughput如何计算?

时间:2017-01-23 08:45:03

标签: amazon-dynamodb

我们有一个写入容量为1,000的dynamodb表,但是当在一个事务中将约170个项目的批处理写入数据库时​​,它会遇到com.amazonaws.services.dynamodbv2.model.ProvisionedThroughputExceededException: The level of configured provisioned throughput for the table was exceeded

根据design docAs implemented, this protocol requires 7N+4 writes,是否意味着在一次交易中写入170个项目实际上需要7 * 170 + 4 = 1194个单位?

1 个答案:

答案 0 :(得分:0)

以下答案来自Pavol Zibrita(zibrita)。

几乎。这意味着您将有170个项目的1194次写入。但是,对于单位数(写入容量),它取决于项目大小以及写入dynamodb的速度。来自doc:

1 write capacity unit per item × 100 writes per second = 100 write capacity units

和1个单位用于1KB的数据,所以:

1.5 KB / 1 KB = 1.5 --> 2 units

这意味着,如果您的商品是1.5KB,则需要2个单位才能写入1个商品。如果你在1秒内完成整批,即1194次写入,你实际上需要1194x2单位。 (我不确定,事务库需要写的项目有多大,它们实际上可能很小,所以只消耗1个单元)

http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ProvisionedThroughput.html#HowItWorks.ProvisionedThroughput.Writes

你也可以考虑:

https://github.com/sebdah/dynamic-dynamodb