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