python dynamodb扫描吞吐量错误
我有一个数据库,有段id,节拍id,病人id 在dynamoDB版本2中,当我使用以下命令进行扫描时,我只能获得1个特定患者的值。当我输入其他段时,患者值我得到一个直通的OutExceedeDexceptionpython dynamodb扫描吞吐量错误,python,amazon-dynamodb,database-scan,Python,Amazon Dynamodb,Database Scan,我有一个数据库,有段id,节拍id,病人id 在dynamoDB版本2中,当我使用以下命令进行扫描时,我只能获得1个特定患者的值。当我输入其他段时,患者值我得到一个直通的OutExceedeDexception table.scan(segment_id__eq='xCrKYvnfZlm6VCQ',beat_id__gt=1,patient_id__eq='3854520.edf') 为什么它只对1名患者有效,而对其他患者则提供了一个全面的预防 您正在执行的扫描读取DynamoDB表中的每个项
table.scan(segment_id__eq='xCrKYvnfZlm6VCQ',beat_id__gt=1,patient_id__eq='3854520.edf')
您正在执行的扫描读取DynamoDB表中的每个项目,并在其满足指定条件时返回它(segment_id_uueq='XcrkyvFnzlm6vcq',beat_id_ugt=1,patient_id_ueq='3854520.edf')。每次读取(即使项目不符合条件)都会消耗您提供的读取容量。如果您希望检索单个记录,那么使用或调用DynamoDB将是最有效的,因为您将只消耗指定项的读取容量。如果您希望检索特定范围的记录,则使用or命令可以更高效地检索这些项,因为您将只消耗满足查询条件的所有项的读取容量。您能提供更多关于表模式的信息吗 请参阅详细描述扫描和查询之间差异的部分 使用查询的一个示例是,segment_id是散列键,beat_id是范围键。您可以查询具有指定段id和指定节拍id范围的所有记录。这只会消耗检索这些特定记录所需的读取容量,而不会读取整个表。此外,您可以将查询应用于其他属性,如patient_id,以便只返回您想要的结果 有关扫描/查询消耗容量的更多详细信息: 查询和扫描最终都是一致的读取,所以一个读取容量单元可以让您以每秒8KB的速度读取 如果您仍然遇到节流,以下是一些缓解异常的方法:
例如,假设我的表中有10个项目,它们都是1KB,我计划用最终一致的操作检索它们。如果我使用GetItem检索它们,每个单独的项目将消耗1/2的读取容量单位,因此总成本将为1/2*10=5个读取容量单位。如果我用scan检索它们,所有项目的总大小为10KB,这将消耗2个读取容量单位。这将消耗大量读取容量。回答太棒了。谢谢因此,查询是我正在寻找的函数(而不是扫描):)