如何确定 DynamoDB 扫描/查询的最佳页面大小?

问题描述 投票:0回答:1

在本 DynamoDB 查询/扫描最佳实践指南中,我读到您可以通过减小查询/扫描的页面大小(默认最大 1MB)来帮助避免读取活动突然激增。

我有一些需要扫描整个表格的实例,我使用

paginateScan
来循环并获取所有项目 - 类似这样:

async function fetchAll() {

  const pagedScan = paginateScan({
    client: ddbDocClient,
    pageSize: 100
  }, {
    TableName: 'tickets'
  });

  const results = [];

  for await (const page of pagedScan) {
    results.push(page.Items)
  }

  return results;

}

但不明白将

pageSize
设置得较低或保持在最大 1MB 是否有任何权衡。

设置较小的页面大小是否只会使查询/扫描花费更长的时间,因此读取会分散在更长的时间内?例如,如果我需要扫描整个表格并且不在乎是否需要一段时间,我应该将页面大小设置为 1 项吗?

如果我最终只是循环获取所有项目,这有什么关系吗?

amazon-dynamodb dynamodb-queries
1个回答
0
投票

页面大小对延迟和性能都有影响。

延迟

较小的页面大小显然需要对 DynamoDB 进行更多往返,这会增加扫描的延迟。

成本

较小的页面大小实际上会在一定程度上增加成本,因为每个页面都会四舍五入到最接近的 4KB。因此,页面大小为 1 的扫描将为每个项目花费 1 RCU,而实际上您可能可以将 10 个项目放入 4KB 限制中。

为什么要减少

如果它是后台进程并且您不想消耗表中的所有容量而影响正常流量,则减小页面大小会很有帮助。较小的页面大小将使读取时间延长,并减少每秒消耗的容量。如果使用配置模式,这也可以节省成本,但这是与我前面提到的四舍五入到 4KB 的观点之间的权衡。

© www.soinside.com 2019 - 2024. All rights reserved.