如何在DynamoDB表中计算目标利用率?

Ama*_*wal 5 amazon-dynamodb dynamodb-utilization

我们知道某个表的最小,最大预配置容量。

例如,我们的最小容量是每秒200次读取,最大容量是每秒1000次读取,那么目标利用率应该是多少?

F_S*_*O_K 5

一些完整答案的背景;DynamoDB提供了一个自动扩展选项来管理吞吐量。通过自动缩放,您可以定义最小,最大和目标利用率。

然后,DynamoDB自动缩放将在设置的最大和最小界限之间改变预配置的吞吐量。它将旨在使该吞吐量的提供保持在利用率上。

目标利用率是消耗的容量单位与预配置的容量单位之比,以百分比表示

一个很好的起点是问为什么不将目标利用率设置为100%?这听起来很有效率,因为您只需为使用的吞吐量付费。但这有一个问题:

只有当实际工作负载持续持续几分钟(或降低)时,DynamoDB自动扩展才会修改预配置的吞吐量设置

因此,假设您的目标利用率是100%,并且您对表的需求增加了15分钟。在最初的5分钟内,您可能会因为突发容量而节省下来,在接下来的5分钟内,您可能会看到由于超出吞吐量而导致数据库读取/写入失败,然后在大约10分钟后,应开始自动扩展并提高吞吐量。

这是您要通过设置目标利用率来避免的问题(即需求增加导致节流)。你需要考虑两件事

1)您在15分钟的时间内看到的吞吐量使用率的最大变化是什么(以百分比表示)?将此空间留给您的目标利用率。

2)您是否在乎数据库限制?(即某些数据库读取/写入失败?)根据您的需求调整目标利用率,以降低成本或节流。

假设您查看了一周的数据,发现在15分钟内,您看到的吞吐量最大的增长是20%。这将使您的目标利用率达到80%(因为您的需求增加将由自动缩放来吸收)*。但是,可以说您很谨慎,并且您对数据库限制确实不满意,因此,为了安全起见,您可以选择70%。

希望有助于做出一些决定。总而言之,您的目标利用率应该取决于吞吐能力变化的速度以及对节流的厌恶程度。

编辑:*数学在这里并不完美,但您会明白我的想法。它可能足够接近。

  • @Byron70 发布的数字的更新;截至 2022 年 12 月,目标利用率必须在 20 到 **90** 之间。 (3认同)
  • 以为我会注意。目标利用率必须为“> = 20且<80” (2认同)