DynamoDB何时进行节stream请求?
在回答“ Amazon DynamoDB吞吐量如何计算和限制? ”时,build议每当您超过每秒的预置吞吐量时,DynamoDB就会限制请求。 但是,这与我的经验相矛盾。
我已经在表格中发布多行,通常行数超过了规定的写入容量。 这发生在短阵内。 有一次,我甚至平均提供了5分钟的供应能力。 OTOH,平均15分钟低于容量。 那段时间我没有收到任何遏制的要求。
5分钟平均峰值8.053,configuration容量为6:
平均峰值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分钟的平均时间(或更长的时间间隔)间隔。