首页 > 解决方案 > 查询 DynamoDB 时如何指定 ReadCapacityUnits

问题描述

我正在从 python 查询 DynamoDB,我想指定查询应该使用的最大 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})

标签: amazon-dynamodbdynamodb-queries

解决方案


你不能。

你的记录有多大?

由于 RCU最多可读取4KB 的数据(每秒),并且您指定的页面大小为 25,因此您的查询必须拥有大于约 160 字节的记录才能消耗超过 1 个 RCU。

假设您的记录为 1K,因此对于每个 RCU,您可以读取 4。由于您的页面大小为 25,因此只需要 7 个 RCU。

这里的关键是您没有使用过滤器快递。(好的!)

使用过滤器快递,即使没有返回,您仍然需要为要读取的数据付费。

另请注意,DDB 在返回之前只会读取 1MB 的数据。(即使所有记录都被过滤掉)。这就是为什么 SCAN() 而不是 Query() 可以吃掉你的 RCU。


推荐阅读