我读到数据很大时发电机数据库扫描操作很慢。但我想知道,有一个场景来提取所有项目。是否仍然首选避免扫描?考虑到索引不是免费的,并且我需要表中的所有项目,我将采用这种方法。
- 请通过选择扫描操作建议他们是否有任何问题?
- 为什么只有 scan 有并行扫描选项,默认查询是并行的?
- 如果我将查询操作与分页一起使用,它将按顺序运行还是并行运行?
我读到数据很大时发电机数据库扫描操作很慢。但我想知道,有一个场景来提取所有项目。是否仍然首选避免扫描?考虑到索引不是免费的,并且我需要表中的所有项目,我将采用这种方法。
如果您需要所有项目,那么 Scan() 非常好。
只要意识到 DDB
ExclusiveStartKey
:=循环调用LastEvaluatedKey
反对 Scan() 的建议是尝试使用 Scan() + filter 代替 Query() 记录子集。Scan() 总是读取整个表。
另请注意,从性能角度来看,Scan() 支持并行扫描。
TotalSegments
对于并行扫描请求,TotalSegments 表示扫描操作将被分成的段的总数。TotalSegments 的值对应于将执行并行扫描的应用程序工作人员的数量。例如,如果要使用四个应用程序线程来扫描表或索引,请将 TotalSegments 值指定为 4。
但同样,如果使用预置读取......并行扫描将很快耗尽 RCU。