使用maxPageSize和maxResultSize进行Dynamo Db查询,从而减慢查询速度

时间:2017-04-20 22:49:26

标签: java pagination amazon-dynamodb

我正在使用dynamo db分页,基于AWS文档:

- > maxResultSize是此查询中要检索的最大资源数,包括要检索的所有页面中的所有资源。

- > maxPageSize是单个页面中要检索的最大资源数;它用于分页目的。

令人惊讶的是,当我没有设置任何页面大小(1)时,DynamoDb查询明显更快,根据文档不应该这样。我假设如果我们不指定pageSize,dynamo db默认返回所有结果。

querySpec.withExclusiveStartKey(lastAccessedRecord); (1)


querySpec.withMaxPageSize(30);
            querySpec.withMaxResultSize(100);
querySpec.withExclusiveStartKey(lastAccessedRecord); (2)

1 个答案:

答案 0 :(得分:1)

ItemCollection:它确实使用了延迟加载。来自AWS文档:

  

对此Iterable返回的Iterator上的{@code Iterator.next}的每次调用都会导致只调用一次DynamoDB以检索单页结果。

另一方面,DynamoDB中的分页基于包的大小(限制1MB大小)。返回的每个页面最大为1MB(项目数量会有所不同)。通过设置maxPageSize,DynamoDB必须执行更多计算才能满足您的请求,而不是仅根据包大小返回匹配项。