Во время обучения я загрузил данные в свою таблицу DynamoDB JobsApplication
примерно с 400 сообщениями о случайных вакансиях.
Используя Node.js
и aws-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
Я отключил автомасштабирование. Так как же он израсходовал 89,5 RCUs
за 2 секунды, когда я выделил таблице только 5 RCUs
? Если бы ему нужно было потреблять 89,5 RCUs
, он мог бы использовать 5 RCUs
в секунду в течение 17,9 секунд, а затем вернуть результат, или он мог бы сказать, что таблице требуется больше RCUs
для такой дорогостоящей операции сканирования и т. д.
Итак, как он использовал 89,5 RCUs
для сканирования, когда я выделил только 5 RCUs
, это мой главный вопрос.