带有“限制”参数的 DynamoDB SCAN 操作成本

elp*_*prl 7 amazon-web-services amazon-dynamodb

我对 AWS DynamoDB 还很陌生,在阅读了文档后,我不能 100% 确定在SCAN操作中使用“限制”参数时成本计算会发生什么。

我知道应该设计表,以便主要使用QUERY操作,并且SCAN将扫描整个表,从而消耗大量读取容量。我也明白 FilterExpression 不会影响扫描整个表的成本,而是过滤整个扫描返回的内容,如果扫描的项目总数超过 1 MB 的最大数据集大小限制,则扫描停止并返回结果。

我不确定的是,' Limit ' 参数是否是一种 FilterExpression,或者它是否会停止整个扫描,从而降低读取成本。

例如,如果我有一个活动表,它的排序键是一个日期字段 (updatedAt),并且它有一百万行。如果我执行了一个 Limit = 10 的 SCAN(为了获得最新的 10 个活动),我显然会得到 10 行,但是我是否会因为读取一百万行而被收费?成本是我最关心的问题。

Bor*_*rov 6

是的,还会减少消耗的读取容量,以下是DynamoDB 文档Limit中的相关部分:

扫描操作提供了一个限制参数,您可以使用该参数来设置请求的页面大小。每个具有较小页面大小的扫描或查询请求使用较少的读取操作,并在每个请求之间创建“暂停”。例如,如果每个项目为 4 KB,并且您将页面大小设置为 40 个项目,则查询请求将仅消耗 40 个强一致性读取操作或 20 个最终一致性读取操作。大量较小的扫描或查询操作将允许您的其他关键请求成功而不会受到限制。

正如您所看到的,页面大小较小的每个扫描或查询请求使用的读取操作较少

  • 感谢您的回复。这确实回答了这个问题,尽管我最近意识到扫描的顺序现在是随机的,而不是维持排序键的顺序。这意味着我无法通过 UpdatedAt 字段获取最新的 10 个活动。感谢您确认费用问题。 (2认同)