我有一个具有5个读取和5个写入容量的发电机表。在此表中,我有两个记录。

然后,我决定看看一次推送大量写入(一次突发中大约4000条记录)会得到什么样的错误响应。蓝色的“消耗”线直接越过红色的“容量”线,但是我没有任何错误消息。

指标显示节流正在发生,但是如果我同时超过两个容量级别,我的读取仍会发生,而我的写入仍会发生。

我花了超过30分钟的时间来插入读写工作,使其容量远远超过容量,但还没有出现错误。

我不确定这是否是因为我在node js中使用了官方的javascript SDK,它可能透明地处理了节流并重试了节流的查询?

我希望有人能对此提供一些指导。

谢谢

最佳答案

只是想在@Luc Hendriks的答案中添加有关限制的通知

即使在您超出“突发容量”并且DynamoDb开始节流之后,您也将相对很少地获得ProvisionedThroughputExceededException(根据我的经验)。这是因为SDK默默地重试了受限制的请求(所以您说对了,SDK透明地处理了限制)。

您可以使用maxRetries参数禁用自动重试,这样您就可以在度量指标出现限制后立即获得ProvisionedThroughputExceededException。

这是一个示例,该示例如何在不自动重试的情况下执行更新请求:

var aws_dynamodb = new aws.DynamoDB({maxRetries: 0}),
    aws_dynamodb_doc = new aws.DynamoDB.DocumentClient({service: aws_dynamodb});

// ...
aws_dynamodb_doc.update(params, function(err, data) {
  // ...
});

09-12 01:24