1秒あたりの平均ですか?毎分? 1時間当たり?
たとえば、1秒あたり10回の一貫した読み取りを可能にする10の「読み取りユニット」に料金を支払った場合、1秒間に20回の読み取りを実行しようとすると、それが唯一の20回の読み取りであったとしても、抑制されます。最後の1時間? AmazonのドキュメントとFAQは、この重要な質問に私が見つけたどこにも回答していません。
FAQで見つけることができる唯一の関連する応答は、使用量の計算方法とスロットルが発生する可能性がある場合の問題を完全に無視します。
Q:アプリケーションがプロビジョニングされた容量より多くの読み取りまたは書き込みを実行するとどうなりますか?
A:アプリケーションがテーブルのプロビジョニングされたスループット容量で許可されるよりも多くの読み取り/秒または書き込み/秒を実行する場合、プロビジョニングされた容量を超えるリクエストは抑制され、400エラーコードを受け取ります。たとえば、1,000書き込み容量ユニットを要求し、1 KBアイテムの1,500書き込み/秒を実行しようとした場合、DynamoDBは1,000書き込み/秒しか通過できず、追加のリクエストでエラーコード400を受け取ります。 CloudWatchを使用してリクエストレートを監視し、必要なリクエストレートを達成するために常に十分なプロビジョニングされたスループットを確保する必要があります。
DynamoDBは「バースト容量」を提供し、テーブルから読み取られるデータ量の急増を可能にします。詳細については、以下をご覧ください。 http://docs.aws.Amazon.com/amazondynamodb/latest/developerguide/GuidelinesForTables.html#GuidelinesForTables.Bursting
基本的には、@ abjenningsが気づいたことです。5分ウィンドウを使用して、テーブルからの読み取りの平均数を計算します。
書き込みを5分のウィンドウで追跡し、最後の5分間の平均がプロビジョニングされたスループットを超えるとスロットルされるようです。
私はいくつかのテストを行いました。 1書き込み/秒のスループットでテストテーブルを作成しました。しばらく書き込みを行わずにリクエストのストリームを送信すると、Amazonはスロットルを開始する前に約300を受け入れるようです。
もちろん、注意すべき点は、これはAmazonの公式ドキュメントには記載されておらず、いつでも変更される可能性があることです。
1秒あたり10回の非常に一貫性のある読み取りを可能にする10個の「読み取りユニット」の料金を支払う場合、たとえ1時間に20回の読み取りしか行われなかったとしても、1秒に20回の読み取りを実行しようとするとスロットルされますか?
はい、これは Amazon DynamoDB が高速でシームレスなスケーラビリティを備えた予測可能なパフォーマンスであるという概念そのものによるものです-引用されたFAQは実際には、これを正しく正しく処理しています(つまり、操作/秒を文字どおりに実行する必要があります)。ただし、計算は Amazon DynamoDBのプロビジョニングされたスループット によく示されています。
書き込み容量の単位を使用すると、最大1KBのサイズのアイテムに対して1秒あたり1回の書き込みを実行できます。同様に、読み取り容量の単位を使用すると、1秒あたり1つの強い整合性のある読み取り(または2つの最終的に整合性のある読み取り)を実行できます1秒あたり)サイズが1KBまでのアイテムアイテムが大きいほど、より多くの容量が必要になります。 1秒あたりに実行する必要がある読み取りまたは書き込みの数を見積もり、アイテムのサイズ(最も近いKBに切り上げ)を掛けることで、必要な読み取りおよび書き込み容量の単位数を計算できます。
書き込みに必要な容量の単位= 1秒あたりの項目書き込み数x項目サイズ(最も近いKBに切り上げ)
読み取りに必要な容量の単位* = 1秒あたりの項目読み取り数x項目サイズ(最も近いKBに切り上げ)*最終的に一貫した読み取りを使用すると、読み取りに関して2倍のスループットが得られます毎秒。
[重点鉱山]
これらの計算を実際のユースケースに正しく適用することは潜在的に複雑ですが、たとえば、次のような詳細を必ず確認してください。 Amazon DynamoDBのプロビジョニングされたスループットのガイドライン もそれに応じて。
から [〜#〜] aws [〜#〜] :
DynamoDBは現在、最大5分間(300秒)の未使用の読み取りおよび書き込み容量を保持しています。
DynamoDBは、パーティションごとのスループットのプロビジョニングにある程度の柔軟性を提供します。パーティションのスループットを十分に活用していない場合、DynamoDBは未使用の容量の一部を保持し、後でスループットをバースト的に使用します。 DynamoDBは現在、最大5分間(300秒)の未使用の読み取りおよび書き込み容量を保持しています。読み取りまたは書き込みアクティビティがときどきバーストする間、これらの追加のキャパシティーユニットは非常に速く消費できます。これは、テーブルに定義した1秒あたりのプロビジョニングされたスループットキャパシティよりも速くなります。ただし、常に利用可能なバースト容量に依存するようにアプリケーションを設計しないでください。DynamoDBは、事前通知なしにバックグラウンドのメンテナンスやその他のタスクにバースト容量を使用できます。
私の推測では、彼らは故意にそれを明示的に述べていません。おそらく、月や星の位置によって変化/地域差/依存する傾向があるか、情報を公開することで虐待が助長される可能性があります。私は最悪のシナリオに基づいて計算を行います。
'write-limit
'から10 units/sec
はテーブルの1つです。 Cloudwatchグラフ( 画像を参照 )は、これを1ユニット(11 writes/sec
)。小さな小刻みな部屋があると思います(<= 10%
)。繰り返しますが、私はただ仮定しています...