如果我们尝试使用batchWrite在dynamoDb中插入许多记录,那么DynamoDb可能会优化BatchWrite操作,使得消耗的WCU总大小小于每个项目组合的总和。
例如:
假设我尝试插入 1000 条记录,每条记录的大小为 1 KB (1 WCU = 1 KB)。如果我使用
PUTItem
单独插入每个项目,则需要花费 1000 WCU。但是,如果我使用batchWrite,那么 dynamoDb 可能会优化批处理操作,使总成本低于 1000 WCU。
但是,我还没有找到关于dynamoDb在批量写入操作过程中如何优化WCU的详细信息。
您尚未找到任何详细信息,因为批量写入的定价与单独写入的定价相同。批量功能是速度优化。
这个前提是有缺陷的。这不是 BatchWriteItems 所做的。它旨在通过允许并行写入操作来加快处理速度。这不是节省 WCU 的方法。
来自文档,强调我的。
如果您使用支持并发的编程语言,则可以使用线程并行写入项目。您的应用程序必须包含管理线程所需的逻辑。对于不支持线程的语言,您必须一次更新或删除一项指定的项目。在这两种情况下,BatchWriteItem 并行执行指定的放置和删除操作,为您提供线程池方法的强大功能,而无需向应用程序引入复杂性。
但是:
并行处理可以减少延迟,但是每个指定的放置和删除请求无论是否并行处理都会消耗相同数量的写入容量单位。对不存在的项目进行删除操作会消耗一个写入容量单位。