python dynamodb扫描throughpu

2024-10-02 10:30:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据库有段号,节拍号,病人号

在dynamoDB版本2中,当我使用以下命令进行扫描时,我只能获得1个特定患者的值。当我输入其他片段时,患者值我得到一个throughputExceedexception。在

table.scan(segment_id__eq='xCrKYvnfZlm6VCQ',beat_id__gt=1,patient_id__eq='3854520.edf')
  1. 为什么它只对一个病人有效,而对其他病人则是一个彻头彻尾的感觉?在

Tags: 命令gt版本患者id数据库scantable
1条回答
网友
1楼 · 发布于 2024-10-02 10:30:30

您正在执行的扫描将读取DynamoDB表中的每个项目,并在满足指定条件(segment_uid_ueq='xcrkyvfzlm6vcq',beat_id_ugt=1,patient_id_ueq='3854520.edf')返回。即使不满足读取条件,也会消耗每个项目的已设置容量。如果您希望检索单个记录,那么使用对DynamoDB的GetItemBatchGetItem调用将是最有效的,因为您只会消耗指定项的读取容量。如果要检索特定范围的记录,则使用Range KeyGlobalLocal Secondary Index以便可以Query这些项,因为只会消耗满足查询条件的所有项的读取容量。你能提供更多关于表模式的信息吗?在

请参阅这个developer guide,它详细描述了扫描和查询之间的区别。在

使用查询的一个例子是,如果segment_id是散列键,beat_id是范围键。您可以查询具有指定段_id和指定beat_id范围的所有记录。这将只消耗检索这些特定记录所需的读取容量,而不是读取整个表。另外,您可以将查询filter应用于其他属性,如patient_id,这样只返回您想要的结果。在

有关扫描/查询消耗容量的详细信息:

查询和扫描最终都是一致的读取,因此一个读取容量单元将允许您以每秒8KB的速度进行读取。在

如果您仍然遇到限制,以下是一些减轻异常的方法:

  1. 增加请求之间的时间间隔,以使您的读取速率保持在配置的读取容量之下。默认情况下,SDKretries限制异常。在
  2. 增加配置的读取容量,以考虑项目大小和请求速率。 请参阅how provisioned throughput workscalculating item sizes上的这些资源。在

有关扫描定价的更多详细信息:

要计算使用Scan或Query读取表中的项所需的读取容量:

  1. 计算出您正在读取的数据量(将要读取的所有项目的大小相加)
  2. 四舍五入到4KB的最近倍数
  3. 除以4KB(强一致性读取)或8KB(最终一致读取)得到将消耗的容量单元数。在

要计算使用GetItem或BatchGetItem读取表中的项所需的读取容量:

  1. 对于每个单独的项目,将该项目的大小四舍五入到4KB的最近倍数
  2. 除以4KB(强一致性读取)或8kb(最终一致性读取)得到每个项目消耗的容量单元数。在
  3. 将每个项目将消耗的容量单位相加,得到将要消耗的容量单位的总数。在

例如,假设我的表中有10个项,它们都是1KB,我计划使用最终一致的操作检索它们。如果我用GetItem检索它们,每个单独的条目将消耗1/2的读容量单元,因此总成本将是1/2*10=5个读容量单元。如果我用scan检索它们,所有项目的总大小是10KB,这将消耗2个读容量单位。在

相关问题 更多 >

    热门问题