Pagination 使用带有分页的DynamoDB扫描操作而不是带有GSI的查询是否正确,我需要表中的所有项
我了解到,当数据较大时,dynamo db扫描操作较慢。但我想知道的是,有一个提取所有项目的场景。是否仍然首选避免扫描? 考虑到索引不是免费的,并且我需要表中的所有项,我选择这种方法Pagination 使用带有分页的DynamoDB扫描操作而不是带有GSI的查询是否正确,我需要表中的所有项,pagination,amazon-dynamodb,dynamodb-queries,amazon-dynamodb-index,Pagination,Amazon Dynamodb,Dynamodb Queries,Amazon Dynamodb Index,我了解到,当数据较大时,dynamo db扫描操作较慢。但我想知道的是,有一个提取所有项目的场景。是否仍然首选避免扫描? 考虑到索引不是免费的,并且我需要表中的所有项,我选择这种方法 请通过选择扫描操作来建议他们是否有任何问题 为什么只有扫描有并行扫描选项,默认情况下查询是并行的 如果使用带分页的查询操作,它将按顺序运行还是并行运行 如果您需要所有项目,则Scan()完全可以 只要意识到DDB 一次仅返回1MB数据,因此您需要使用ExclusiveStartKey:=LastEvaluated
如果您需要所有项目,则Scan()完全可以 只要意识到DDB
- 一次仅返回1MB数据,因此您需要使用
:=ExclusiveStartKey
LastEvaluatedKey
- Scan()可以快速使用您配置的RCU,因此请注意节流错误并重试
对于并行扫描请求,TotalSegments表示 将执行扫描操作的段总数 被分割的TotalSegments的值对应于 将执行并行扫描的应用程序工作人员。例如 如果要使用四个应用程序线程扫描表或 索引,指定TotalSegments值为4
但同样,如果使用配置读取…并行扫描将很快耗尽RCU。非常感谢您的回答。你能帮我分享一个使用node js在lambda函数中使用并行扫描的例子吗?如果我使用GSI的query,当表增长时它是否也会有性能问题?query一次只能访问一个分区中的数据。如果您需要所有项目,扫描是正确的解决方案。