Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How is Amazon DynamoDB throughput calculated and limited?

Is it averaged per second? Per minute? Per hour?

For example.. if I pay for 10 "read units" which allows for 10 highly consistent reads per second, will I be throttled if I try to do 20 reads in a single second, even if it was the only 20 reads that occurred in the last hour? The Amazon documentation and FAQ do not answer this critical question anywhere that I could find.

The only related response I could find in the FAQ completely ignores the issue of how usage is calculated and when throttling may happen:

Q: What happens if my application performs more reads or writes than my provisioned capacity?

A: If your application performs more reads/second or writes/second than your table’s provisioned throughput capacity allows, requests above your provisioned capacity will be throttled and you will receive 400 error codes. For instance, if you had asked for 1,000 write capacity units and try to do 1,500 writes/second of 1 KB items, DynamoDB will only allow 1,000 writes/second to go through and you will receive error code 400 on your extra requests. You should use CloudWatch to monitor your request rate to ensure that you always have enough provisioned throughput to achieve the request rate that you need.

like image 756
Brian McKelvey Avatar asked Feb 23 '12 23:02

Brian McKelvey


1 Answers

It appears that they track writes in a five minute window and will throttle you when your average over the last five minutes exceeds your provisioned throughput.

I did some testing. I created a test table with throughput of 1 write/second. If I don't write to it for a while and then send a stream of requests, Amazon seems to accept about 300 before it starts throttling.

The caveat, of course, is that this is not stated in any official Amazon documentation and could change at any time.

like image 90
abjennings Avatar answered Sep 28 '22 16:09

abjennings