查询 DynamoDB 时如何指定 ReadCapacityUnits

How to specify ReadCapacityUnits when querying a DynamoDB

我正在从 python 查询 DynamoDB,我想指定查询应使用的最大 ReadCapacityUnits。

例如,我的 table 有 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})

你不能。

你的记录有多大?

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

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

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

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

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