AWS Scan传入不存在的ExclusiveStartKey为何仍返回结果及LastEvaluatedKey?
AWS DynamoDB Scan传入不存在的ExclusiveStartKey仍返回结果的原因分析
这种情况完全符合DynamoDB的预期行为,核心原因和它的存储排序逻辑、Scan的分页机制有关:
主键的字节序排序规则:DynamoDB会始终按照主键的字节顺序对表内所有条目排序(复合主键则先按分区键排序,再按排序键排序)。当你传入一个不存在的
ExclusiveStartKey时,系统会自动定位到第一个字节序大于该键的有效条目,并从这个位置开始执行扫描操作。Scan的起始位置定位逻辑:
ExclusiveStartKey的本质是标记扫描的起始锚点,不管这个键是否存在于表中,Scan都会基于它的排序位置来确定扫描起点。只要表中存在字节序大于该键的条目,就会返回对应的结果;如果返回的条目数量达到你设置的Limit值,或者还有未扫描的条目剩余,就会返回LastEvaluatedKey用于后续的分页请求。
你的扫描请求示例:
{ "TableName": "tks-processtracker-dumper", "ExclusiveStartKey": { "Mykey": { "S": "AKeyThatDoesntExists" } }, "Limit": 2000 }
内容的提问来源于stack exchange,提问作者Gustavo Bium Donadon
相关产品推荐
相关产品推荐

