我使用的是php和AWS,我有一张3.3m的记录表,所以我需要扫描它并且我使用的是并行扫描。
我的问题是:并行扫描会在第一次执行后自动使用扫描中最后一次评估的键吗?或者我需要在params数组中设置参数。
代码是:
$totalSegments = 10;
$params = array(
'TableName' => $t,
'TotalSegments' => $totalSegments
);
$scanCommands = array();
for($i = 0; $i < $totalSegments; $i++){
$scanCommands[] = $this->db_client->getCommand('Scan', array('Segment' => $i) + $params);
}
$this->db_client->execute($scanCommands);
foreach ($scanCommands as $scanCommand) {
$result = $scanCommand->getResult();
$items = $result["Items"];
}
所以我需要知道最后一次评估的密钥是自动使用还是需要在params数组中设置。
由于
答案 0 :(得分:0)
我怀疑这是一个并行扫描,但你正在对记录进行分页。
Answer to your question is yes, you need to supply **LastEvaluatedKey** array to
get next set of records
注意:您说您有大约3M记录,如果表吞吐量不够高,您将获得需要单独处理的油门错误。如果这曾经是一段时间,那么它可以优化你的表并避免扫描(如亚马逊推荐)