#amazon-dynamodb #dynamodb-queries
#amazon-dynamodb #dynamodb-запросы
Вопрос:
Я запрашиваю DynamoDB из python, и я хотел бы указать максимальное значение ReadCapacityUnits, которое должен использовать запрос.
Например, в моей таблице 100 единиц ReadCapacityUnits, я хотел бы использовать только 5% из них, что равно 20.
Ниже приведен мой запрос, как я могу указать ReadCapacityUnits в этом запросе
paginator = ddb_client.get_paginator('query')
response_iterator = paginator.paginate(TableName=table_name,
IndexName=INDEX_GSI,
KeyConditionExpression=condition,
ExpressionAttributeNames={ATTR_NAME: HASH_KEY},
ExpressionAttributeValues={
PLACEHOLDER: {'S': str(value)},
},
ConsistentRead=False,
ScanIndexForward=False,
PaginationConfig={"PageSize": 25})
Ответ №1:
Вы не можете.
Насколько велики ваши записи?
Поскольку RCU — это чтение до 4 КБ данных (в секунду), и вы указали размер страницы 25, у вас должны быть записи размером более 160 байт, чтобы ваш запрос потреблял более 1 RCU.
Допустим, ваши записи составляют 1 КБ, поэтому для каждого RCU вы можете прочитать 4. Поскольку размер вашей страницы равен 25, это займет всего 7 RCU.
Ключевым моментом здесь является то, что вы не используете экспресс-фильтр. (Хорошо!)
С помощью filter express вы все равно платите за считываемые данные, даже если они не возвращаются.
Также обратите внимание, что DDB будет считывать только 1 МБ данных перед возвратом. (Даже если все записи отфильтрованы). Вот почему SCAN() в отличие от Query() может съесть ваш RCU.