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

时间:2018-04-25 05:24:30

标签: amazon-dynamodb dynamodb-utilization

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

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

1 个答案:

答案 0 :(得分:2)

完整答案的一些背景; DynamoDB提供Autoscaling选项来管理吞吐量容量。使用自动缩放功能,您可以定义最小,最大和目标利用率。

然后,DynamoDB Autoscaling将改变最大和最大边界集之间的预配置吞吐量。它的目标是将吞吐量提供保持在利用率。

  

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

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

  

DynamoDB自动缩放仅修改预配置的吞吐量设置   当实际工作量持续升高(或抑制)时   几分钟的时间

因此,假设您的目标利用率为100%,并且您的桌面需求增加了15分钟。在前5分钟,您可能会被burst capacity保存,在第二批5分钟内,您可能会在超过吞吐量时看到数据库读/写失败,然后在大约10分钟后自动缩放应该启动提高吞吐量。

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

1)您在15分钟的时间段内看到的吞吐量容量使用量的最大变化是什么,以百分比表示?将这个数量的空间留在目标利用率中。

2)如果你有一些数据库限制,你关心多少? (即某些数据库读/写失败?)根据您对节省成本和节流的需求,调整您的目标利用率更高或更低。

让我们说你查看一周的数据,发现在15分钟内,你看到的吞吐量增幅最大的是20%。这使您的目标利用率达到80%(因为随后您的需求增加被自动缩放所吸收)*。但是,让我们说你是谨慎的,你对数据库限制你真的不行,所以为了安全起见,你可能会有70%。

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

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