当我在AWS控制台中执行此查询时,它会立即返回:
但是从Java代码来看,它永远不会完成:
final List<TransactionDetails> tx = dynamoDBMapper //
.scan(TransactionDetails.class, new DynamoDBScanExpression() //
.withConsistentRead(false)
.withLimit(maxRecords) //
.withFilterConditionEntry("time", new Condition().withComparisonOperator(ComparisonOperator.LT)
.withAttributeValueList(new AttributeValue(Long.toString(time)))));
return tx;
答案 0 :(得分:4)
DynamoDB控制台一次仅显示100个结果。 DynamoDB映射器实现了扫描操作,因此它将自动遍历表中的所有项目。它将向Dynamo发出与扫描整个表一样多的请求,并且在受到限制时也会重试。
对于较小的表,扫描通常在几秒钟内完成,但是对于较大的表,尤其是如果您没有足够的预配置读取容量,则可能要花几分钟,几小时或几天的时间。
所以-检查表的大小和预配置的容量。扫描将完成,但是所需的时间肯定取决于这两个变量。