web-dev-qa-db-ja.com

DynamoDBクエリで計算された読み取り容量単位の消費量

Amazonのページを見て、1RCUが4KBの商品であることを理解しました。

50アイテムのテーブルがある場合、スキャンで50アイテム全体が読み取られ、50RCUが使用されることを読みました。しかし、クエリを実行したとしましょう。テーブルは10 x 5ですが、それでも50 RCUを使用しますか?

6
zuba

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しかかかりません。

スループット容量の詳細 はこちらをご覧ください。

注意すべき点がいくつかあります。

  • 1つのアイテムが400KBにもなる可能性があるため、アイテムを読み取ると100RCUも消費される可能性があります。
  • アイテムサイズを計算するとき、属性名は値だけでなくアイテムサイズにもカウントされます。
16
Mike Dinescu

クエリ-同じパーティションキー値を持つ複数のアイテムを読み取ります。返されたすべてのアイテムは単一の読み取り操作として扱われ、DynamoDBはすべてのアイテムの合計サイズを計算してから、次の4KBの境界に切り上げます。たとえば、クエリが合計サイズが40.8KBの10個のアイテムを返すとします。 DynamoDBは、操作のアイテムサイズを44KBに丸めます。クエリがそれぞれ64バイトの1500アイテムを返す場合、累積サイズは96KBです。

参照: https://docs.amazonaws.cn/en_us/amazondynamodb/latest/developerguide/ProvisionedThroughput.html

0
rajd