亚马逊DynamoDB:对表的程序化吞吐量更改是否有限制?

0 投票
1 回答
757 浏览
提问于 2025-04-17 15:07

我正在处理一大堆文件,具体步骤是这样的:我先把所有文件下载到一个EC2实例上,然后运行一个脚本,逐个处理每个文件,并把它们的内容存入一个DynamoDB表格(表格中的每一项对应文件中的一行)。处理完一个批次后,我再下载下一批文件。

现在,我通过AWS的图形界面来调整预设的吞吐量,但在下载和索引的阶段,这个设置是一样的。显然,这样不太合理,因为在下载文件的时候,我根本不跟数据库交流,所以在这个阶段我需要的写入吞吐量基本上是0。

所以我想做的是,在开始索引的时候,把预设的吞吐量调高,然后在停止索引、开始下载的时候再调低。

我想知道,在一次请求中,我能把写入吞吐量增加到多高?比如说,我能把它从5调到120吗?如果不行,我该如何计算从某个值X调整到更高的值Y所需的请求次数和时间(假设X远小于Y)?减少吞吐量时也需要做类似的计算吗?

我使用的是Python的boto库。

谢谢!

1 个回答

0

在扩展写入能力时,你一次最多只能将写入能力翻倍,比如说你现在是5,那你可以增加到10,然后等20到30秒让这个变化生效,再翻倍到20,依此类推。缩减写入能力则没有限制,可以降到你想要的任何水平。

根据AWS的常见问题解答

问:我能在一次请求中改变我的预留吞吐量多少? 答:是的。亚马逊DynamoDB允许你通过一次UpdateTable的API调用将预留吞吐量提高最多100%。如果你想增加超过100%,只需再次调用UpdateTable。

举个例子,如果你的表格预留了1000个写入能力,你不能通过一次API调用将它更新到3000,因为这超过了一次UpdateTable操作允许的最大变化。要将写入能力从1000增加到3000,你可以先调用UpdateTable将吞吐量翻倍到2000,然后再调用一次UpdateTable,最终达到3000写入/秒。

撰写回答