![AWS Dynamodb 如何根据写入容量单位优化 BatchWrite 操作](https://linux22.com/image/791963/AWS%20Dynamodb%20%E5%A6%82%E4%BD%95%E6%A0%B9%E6%8D%AE%E5%86%99%E5%85%A5%E5%AE%B9%E9%87%8F%E5%8D%95%E4%BD%8D%E4%BC%98%E5%8C%96%20BatchWrite%20%E6%93%8D%E4%BD%9C.png)
如果我们尝试使用 batchWrite 在 dynamoDb 中插入许多记录,那么 DynamoDb 可能会优化 BatchWrite 操作,以使消耗的 WCU 总大小小于每个项目的总和。
例如:
假设我尝试插入 1000 条记录,每条记录大小为 1 KB(1 WCU = 1 KB)。如果我使用 单独插入每一项PUTItem
,则将花费 1000 WCU。但是,如果我使用 batchWrite,则 dynamoDb 可能会优化批处理操作,使总成本低于 1000 WCU。
但是,我还没有找到关于 dynamoDb 如何在批量写入操作期间优化 WCU 的任何详细信息。
答案1
您没有找到任何详细信息,因为批量写入的定价与单独写入的定价相同。批量功能是一种速度优化。
答案2
这个前提是有缺陷的。这不是 BatchWriteItems 所做的。它旨在通过允许您并行化写入操作来加快处理速度。它是不是节省 WCU 的一种方法。
来自文档,强调一下。
如果您使用支持并发的编程语言,则可以使用线程并行写入项目。您的应用程序必须包含管理线程所需的逻辑。对于不支持线程的语言,您必须一次更新或删除一个指定的项目。在这两种情况下,BatchWriteItem 并行执行指定的放入和删除操作,为您提供线程池方法的强大功能,而无需给您的应用程序带来复杂性。
但:
并行处理可以减少延迟,但是无论是否并行处理,每个指定的放入和删除请求都会消耗相同数量的写入容量单位对不存在的item的删除操作会消耗一个写入能力单位。