DynamoDB何时进行节stream请求?

在回答“ Amazon DynamoDB吞吐量如何计算和限制? ”时,build议每当您超过每秒的预置吞吐量时,DynamoDB就会限制请求。 但是,这与我的经验相矛盾。

我已经在表格中发布多行,通常行数超过了规定的写入容量。 这发生在短阵内。 有一次,我甚至平均提供了5分钟的供应能力。 OTOH,平均15分钟低于容量。 那段时间我没有收到任何遏制的要求。

5分钟平均峰值8.053,configuration容量为6: 平均5分钟

平均峰值15分钟远低于configuration容量:

在这里输入图像说明

那么DynamoDB什么时候调节请求? 它是什么样的平均值呢? 超过规定容量的突发能够在被限制之前有多高?

DynamoDB旨在确保您的预配容量每秒可用。 如果您为每秒10个1kB读取configuration一个表,那么DynamoDB将为您提供足够的容量来处理吞吐率。 另外,DynamoDB有时可以让您在短时间内实现高于预定吞吐量的有限突发。 这旨在吸收客户工作负载的自然变化。 这种破裂是不能保证的,并不总是可用的(并且可用的破裂的性质可能随时间而改变)。 正如目前最佳实践文档中所述,为了获得最佳性能,您应该拥有均匀分布的工作负载,该工作负载不会超过您的预configuration容量,并均匀分配负载空间上的负载。 但是,如果应用程序的生产行为的实际情况偏离均匀分布的工作负载,则DynamoDB可能会吸收一些突发事件。

至于提供多less桌子,这取决于你的工作量。 您可以先调配到峰值的80%,然后根据您收到的多less节stream点(您可以在CloudWatch图表中看到的)和应用程序对重试导致的延迟容忍度来调整表的容量。 请记住,DynamoDB不允许在您的预configuration容量以上无限制地突发。 您可能能够吸收短时间爆发,但是您无法长时间维持高于您的预置容量水平的吞吐率。 我们可以给出的一般指导是提供接近峰值的东西,然后在观看油门时拨下。

这个答案发布在AWS论坛上

免责声明:我为Amazon,DynamoDB团队工作。

DynamoDB文档中提供了解释突发如何工作的一个提示 :

如果没有充分利用分区的吞吐量,DynamoDB将保留部分未使用的容量,以便以后突发吞吐量使用。 DynamoDB目前保留了五分钟(300秒)未使用的读写容量。

但它也说,你不能依靠这种行为:

但是,请不要devise您的应用程序,以便能够随时获得爆发容量:DynamoDB可以并且确实使用爆发容量进行后台维护和其他任务,而无需事先通知。

至less可以解释为什么有可能平均提高5分钟以上。 根据上面的解释,如果在间隔一开始就有一个高峰,在开始之前的300秒内有较less的使用,甚至可能有15分钟的平均时间(或更长的时间间隔)间隔。

Interesting Posts