DynamoDB 表从 10 亿项记录的表中清除 4 亿条记录和批量写入限流。

0

【以下的问题经过翻译处理】 示例情景 - DynamoDB表有10亿行记录,我们为另一家公司复制了该表,现在需要删除其中10亿项中的400M项。TTL和删除并重新创建表都不是选择,因为我们需要保留我们的记录部分。我们查看了并行扫描读取表格并将要删除的行推送到批量写入操作以删除行。有更好的选择可以考虑吗?

顺便说一句,使用并行扫描和批量写入进行的初始测试在具有单个分区的1000wcu限制表格下存在限流问题,但该表具有足够的wcu容量。是否有其他建议的方法或想法来解决单个分区wcu问题?

表具有customerid number PK; LOBid String SK;和其他列<1KB 。

profile picture
专家
已提问 8 个月前8 查看次数
1 回答
0

【以下的回答经过翻译处理】 使用并发扫描,每个线程扫描表中的一个连续段。如果要删除的项目在表空间中均匀分布,您将遇到表级限制而不是分区级限制。如果在未超过分配的 WCUNumbers 情况下遇到分区级限制,则表明要删除的项目可能仅驻留在少数分区中。结果是,特定 BatchWriteItem API 调用中几乎所有项目都属于同一分区,每次可能只从几个分区中进行删除。

提高性能的一种方法是在删除操作之前进行随机化。也就是说,平行扫描线程将要删除的记录推入列表中。在平行扫描完成后,对列表中的项目进行随机排序。之后,删除线程从列表中检索要删除的项目。采用这种方法,您可以增加 BatchWriteItem API 调用中项目在多个分区中分布的可能性,从而利用多个分区的写入能力。

profile picture
专家
已回答 8 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则