DynamoDB填充空表,数据吨数上限为1000WCU

问题描述 投票:0回答:1

我正在编写一个脚本,该脚本应该用最短的数据(〜650Gb表)填充新表。所有记录之间的partition(hash)键是不同的,所以我无法想象更好的键。我已将此表的预配置WCU设置为4k。当脚本运行时,16个独立线程以高速率将不同的数据放入表中。在执行期间,我收到ProvisionedThroghputException。 Cloudwatch图形显示消耗的WCU上限为1000WCU。如果所有数据都放在一个分区中,则可能会发生这种情况。据我了解,当数据大小超过10Gb限制时,DynamoDb将创建新分区。 是这样吗?因此,在此数据填充操作中,我只有1个分区,可以理解1000WCU的限制。

我已经检查了https://aws.amazon.com/ru/premiumsupport/knowledge-center/dynamodb-table-throttled/但是,似乎这些建议适用于已经填充的表,因此您尝试在其中添加许多新数据。所以我有3个问题:1.如何加快将数据插入新的空表的过程?2. DynamoDB何时决定创建新分区?3.我是否可以设置最小数量的分区(例如4),以使用预配置WCU(4k)的全部功能?

UPD Cloudwatch图:enter image description here

UPD2哈希键是长号。实际上,它并不是很独特。但是具有相同HASH键但排序键不同的最大行为2。

amazon-web-services amazon-dynamodb throttling
1个回答
1
投票

您无法手动指定DDB使用的分区数。它会在后台自动处理。

但是,其处理方式在F_SO_K提供的链接中列出。

  • 每10GB数据1个
  • 每配置3000RCU和/或1000WCU 1。

如果已配置4000WCU,则应该至少有4个分区,并且应该看到消耗了4000WCU。特别是考虑到您说您的哈希键对于每条记录都是唯一的,您应该使数据均匀散布,并且不要进入“热”分区。

您提到cloudwatch显示消耗的WCU为1000,cloudwatch是否也显示了预配置的容量为4000WCU?

如果是这样,则不确定发生了什么,可能必须致电AWS。

© www.soinside.com 2019 - 2024. All rights reserved.