amazon-dynamodb - 查询 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})
解决方案
你不能。
你的记录有多大?
由于 RCU最多可读取4KB 的数据(每秒),并且您指定的页面大小为 25,因此您的查询必须拥有大于约 160 字节的记录才能消耗超过 1 个 RCU。
假设您的记录为 1K,因此对于每个 RCU,您可以读取 4。由于您的页面大小为 25,因此只需要 7 个 RCU。
这里的关键是您没有使用过滤器快递。(好的!)
使用过滤器快递,即使没有返回,您仍然需要为要读取的数据付费。
另请注意,DDB 在返回之前只会读取 1MB 的数据。(即使所有记录都被过滤掉)。这就是为什么 SCAN() 而不是 Query() 可以吃掉你的 RCU。
推荐阅读
- java - 如何在 .jar 中包含和访问图像
- c# - 如何更改此动画过渡以自动发生?
- c# - 如何将 List 方法更改为 Array 方法?
- java - Spring Boot - 如何使用 cors 和 spring security 修复 Session bean
- ios - WebRTC iOS 13 问题与 Metal
- java - 如何在 Java 中截断部分字符串?
- amazon-web-services - 需要移动已部署的文件夹 - AWS CodeDeploy
- vectorization - 只有在使用 AVX 并链接到其他代码时,我才会遇到分段错误
- angular - 单击按钮时触发角管道事件
- python-3.x - 无法使用 python 3.7 运行带有 Tornado 事件循环的 ZMQStream