查询 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 的原因。
我正在从 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 的原因。