3

在做教程时,我将数据批量加载到我的 dynamoDBJobsApplication表中,其中包含大约 400 个随机工作帖子。

这是桌子的样子

使用Node.jsaws-sdk我执行了扫描操作。

var AWS = require('aws-sdk');
AWS.config.update({
  region: 'us-east-1'
});
var print = require('./../lib/helpers').printPretty;
var dynamodb = new AWS.DynamoDB();

var epochNow = 1506043477;

var params = {
  "TableName": "GMJS.Job",
  "FilterExpression": "CountryId = :country AND ClosingTime > :time",
  "ExpressionAttributeValues": {
    ":country": {
      "S": "18"
    },
    ":time": {
      "N": epochNow.toString()
    }
  },
  "ReturnConsumedCapacity": "TOTAL"
};

dynamodb.scan(params).promise()
  .then(print)
  .catch(print);

我的表当前分配了 5 个 RCU 和 WCU。扫描操作在不到 2 秒的时间内给出了结果,除了结果显示以下信息:

"Count": 7,
    "ScannedCount": 100,
    "ConsumedCapacity": {
        "TableName": "GMJS.Job",
        "CapacityUnits": 89.5
    }
}
Size of data: 50.8 KB

我已经关闭了自动缩放。那么RCUs当我只给RCUs桌子分配 5 个时,它是如何在 2 秒内消耗 89.5 的呢?如果它必须消耗 89.5 RCUs,它可能RCUs每秒使用 5 个 17.9 秒,然后返回结果,或者它可能会说该表需要更多RCUs用于如此昂贵的扫描操作等。

RCUs那么,当我只分配 5 个时,它是如何使用 89.5进行扫描的,这RCUs是我的主要问题。

4

1 回答 1

6

DynamoDB 有一定的爆发能力,可以在需要的时候投入使用:

DynamoDB 在每个分区的吞吐量配置方面提供了一些灵活性。当您没有充分利用分区的吞吐量时,DynamoDB 会保留一部分未使用的容量,以供以后突增使用吞吐量。DynamoDB 目前最多保留五分钟(300 秒)未使用的读写容量。在偶尔突发的读取或写入活动期间,这些额外的容量单位可能会很快被消耗掉,甚至比您为表定义的每秒预置吞吐量容量还要快。但是,不要将您的应用程序设计为依赖于随时可用的突发容量:DynamoDB 可以并且确实将突发容量用于后台维护和其他任务,恕不另行通知。

笔记

未来,这些突发容量的细节可能会发生变化。

https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GuidelinesForTables.html#GuidelinesForTables.Bursting

于 2018-03-29T13:52:05.567 回答