我有一个具有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) {
// ...
});