database - 扫描大型 DynamoDB 表 - 大小为 1.5TB,包含 100 亿条记录

标签 database amazon-web-services amazon-dynamodb

背景

我需要扫描一个相当大的 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/

相关文章:

java - 如何确定 DynamoDB 项目是否确实被删除?

php获取图像名称并添加到数据库?

amazon-s3 - 如何将S3中的10,000个文件公开

java - 扁平化对象是否会使用 @DynamoDBFlattened 自动更新?

amazon-web-services - EC2 实例上的静态页面不在 CloudFormation 中的负载均衡器后面提供服务

ssl - AWS 负载均衡器始终将 443 路由到 8443

amazon-web-services - 模拟 AWS Promise 时出现 "docClient.scan(...).promise is not a function"错误

mysql - java.lang.IncompatibleClassChangeError : Found class com. mysql.jdbc.Statement,但接口(interface)是预期的

database - Postgres : Best way to move data from public schema of one DB to new schema of another DB

mysql - 如何检查 mysql DB 列是否具有对象的 json 数组并包含特定字符串