背景
我需要扫描一个相当大的 DynamoDB 表,并且正在寻找优化扫描速度的方法。我尝试运行一个简单的扫描查询,即使运行一天后扫描也没有完成。该表大小 1.5TB
,包含 100 亿
条记录,平均记录大小为 0.15KB
详细信息
PrimaryKey: "{userId}:{barcode}"
SortKey: "{epochTimeInMillis}"
在我们的用例中,我们只能访问 userId
,并且必须扫描表以查找 PrimaryKey
中包含 userId 的行。
问题
关于我可以尝试加快 ScanTime 请求的任何想法吗?现在,我已经设置了 30K 读取容量单位,但在扫描运行时我只看到大约 1500 个 RCU 被利用,所以我认为这不是问题。
最好,
最佳答案
是的,您可以使用并行扫描来加快加载速度。我之前在自己的表上进行了大量测试,发现了以下经验法则:
当要获取的数据超过 2MB 时,并行扫描比常规扫描更有效,并且当段数等于扫描中的 MB 数时,并行扫描似乎会得到优化。例如,评估 400MB 数据的扫描最好有 400 个分段。
以下是使用并行扫描的 CLI 示例:
aws dynamodb scan --table-name YOUR-TABLE --total-segments 1 --segment 0 --select COUNT
aws dynamodb scan --table-name YOUR-TABLE --total-segments 4 --segment 0 --select COUNT
关于database - 扫描大型 DynamoDB 表 - 大小为 1.5TB,包含 100 亿条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62960771/