Zha*_* Yi 2 amazon-web-services amazon-dynamodb
我正在使用 DynamoDB 来存储数据。我发现 1MB 是查询返回的硬限制。我有一个案例,查询一个表以获取一个分区中 1MB 的数据。我想知道我能得到的最佳表现是什么。
根据DynamoDB文档,一个分区最多可以有3000个RCU。如果我发送最终一致性读取,它应该支持每秒响应 3000 * 8KB = 24000KB = 23MB。
如果我发送一个查询请求以从一个分区获取 1MB,这是否意味着它应该响应 1/23 秒 = 43 毫秒?
我正在 lambda 中进行测试,在启用 XRay 的情况下向 DynamoDB 发送查询。根据 XRay 跟踪,它显示查询多花费了 300 毫秒。所以我不明白为什么会导致长时间的延迟。
如果我想将延迟降低到个位数毫秒,该怎么办?我不想分割分区,因为 1MB 并不是很大。
DynamoDB 确实能够实现个位数毫秒的延迟,但如果项目大小足够小以适合 1 个 RCU。在 10 毫秒内从数据库读取 1 MB 数据本身就是一项具有挑战性的任务。
您可以尝试以下方法:
一个将使用ScanIndexForward: true+进行查询Limit: N/2,另一个将使用ScanIndexForward: false+进行查询Limit: N/2。思路是从两端到中间查询相同的数据。
并行执行此操作,然后将两个响应合并为一个。然而,这可能会将延迟从 300 毫秒减少到 150 毫秒,但仍然不低于 10 毫秒。
另外,请注意,不断从数据库中读取 1 MB 的数据将产生巨大的成本。
| 归档时间: |
|
| 查看次数: |
2609 次 |
| 最近记录: |