Как указать ReadCapacityUnits при запросе DynamoDB

#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.