Amazonのページを見て、1RCUが4KBの商品であることを理解しました。
50アイテムのテーブルがある場合、スキャンで50アイテム全体が読み取られ、50RCUが使用されることを読みました。しかし、クエリを実行したとしましょう。テーブルは10 x 5ですが、それでも50 RCUを使用しますか?
50アイテムを含むテーブルをスキャンすると、50アイテムの合計サイズが200KB(整合性の高い読み取りの場合は400KB、結果整合性のある読み取りの場合)の場合にのみ50RCUが消費されます。ほとんどのアイテムはそれほど大きくないため、通常、50アイテムの保存に必要なのは約10KBのみです。つまり、50アイテムのテーブルをフルスキャンすると、結果整合性が得られ、コストは約3RCUになります。
消費される読み取り容量単位(RCU)は、複数の要因によって異なります。
GetItem操作を使用してアイテムが読み取られた場合、消費された容量は、アイテムのサイズ(つまり、200B)に基づいて4KBの増分で請求されます。アイテムと3KBアイテムはそれぞれ1RCUを消費し、5KBアイテムは2 RCUを消費します)
QueryまたはScan操作を使用して複数のアイテムを読み取る場合、消費される容量は、アクセスされているアイテムの累積サイズによって異なります(クエリまたはフィルターを使用している場合はスキャンからフィルターされたアイテムに対しても請求されます)。したがって、クエリまたはスキャンがそれぞれサイズが約200バイトの10個のアイテムにアクセスする場合、消費されるRCUは1つだけです。 10個のアイテムを読み取ったが、各アイテムのサイズが約5KBの場合、合計消費容量は13 RCUになります(50KB/4KB = 12.5、切り上げ、13)
さらに、結果整合性のある読み取りを実行すると、容量単位あたりのサイズを2倍にすることができます。したがって、10個の5KBアイテムを読み取るのに7RCUしかかかりません。
スループット容量の詳細 はこちらをご覧ください。
注意すべき点がいくつかあります。
クエリ-同じパーティションキー値を持つ複数のアイテムを読み取ります。返されたすべてのアイテムは単一の読み取り操作として扱われ、DynamoDBはすべてのアイテムの合計サイズを計算してから、次の4KBの境界に切り上げます。たとえば、クエリが合計サイズが40.8KBの10個のアイテムを返すとします。 DynamoDBは、操作のアイテムサイズを44KBに丸めます。クエリがそれぞれ64バイトの1500アイテムを返す場合、累積サイズは96KBです。
参照: https://docs.amazonaws.cn/en_us/amazondynamodb/latest/developerguide/ProvisionedThroughput.html