在阅读了几篇关于Dynamodb的文档和博客后,我仍在努力理解RCU和WCU是如何工作的。
我部署了一个包含 5 个 RCU 的表。此表上的请求主要是平均响应有效负载为 7KB 的 GetItem
请求。我知道要测量的不是有效负载的大小,而是读取操作期间消耗的数据大小。但是,让我们假设它消耗了类似的数据大小。
从Dynamodb文档中,每个预配的RCU最多可以支持4KB的一致读取,因此如果我了解它,我的预配吞吐量可以支持高达每秒20KB而不会受到限制。
基于此,如果我的平均有效负载是7KB,我说的对吗,我的表可以支持~2个请求/秒?
如果有人能对此有所了解,我将不胜感激。
是的,你是对的
您可能已经知道其中的一些内容,但为了完整性和帮助他人,我将详细介绍一下:
>
WCU 是写入容量单位
最终一致性读取:如果最新的写入尚未在任何地方复制,您可能会得到过时的数据。
单位不等于每秒请求数。根据你阅读的内容和方式,有不同的表现。我会解释的。
有 3 种读取:强一致性、事务性和最终一致性。它是这样的:
每返回4Kb数据块(可能是数据库中的多行):
在您的示例中,您的项目约为7Kb,您希望进行高度一致的读取,这将需要2个rcu每秒读取1个项目。因为您已经配置了5个rcu,所以您是正确的,您可以预期每秒2次读取。
如果您想从数据库中榨取更多汁液,请注意您返回的数据量。我认为如果您的平均项目大小为 7Kb,那就有点令人担忧了。您可能需要考虑使用对象存储,并将对有效负载的引用存储在 dynamodb 中,而不是有效负载本身。我想这取决于您存储的内容和用例。这可能是合法的,但听起来有点可疑。