すべてのプロダクト
Search
ドキュメントセンター

Tablestore:セカンダリインデックスの課金項目

最終更新日:Jan 09, 2026

セカンダリインデックスを使用するには、追加のストレージ使用量が必要です。データテーブルにデータを挿入すると、システムはデータテーブル上に作成されたインデックステーブルにも書き込みを行う必要がある場合があります。このプロセス中に、読み取りおよび書き込み CU が消費されます。この Topic では、セカンダリインデックスの課金ルールについて説明します。

説明 キャパシティユニット (CU) は、読み取りおよび書き込みスループットの単位です。これらは、読み取りおよび書き込み操作のコストを測定するために使用される最小単位です。たとえば、システムが 1 秒あたり 1 行から 4 KB を読み取ると、1 読み取り CU が消費されます。

セカンダリインデックスを使用するには、インデックステーブルが必要です。したがって、インデックステーブルを格納するために追加のストレージ領域が必要になります。システムがデータテーブルにデータを挿入する際、同時にデータテーブル上に作成されたインデックステーブルにも書き込みを行う必要がある場合があります。このプロセス中に、読み取りおよび書き込み CU が消費されます。

セカンダリインデックスの課金には、インデックステーブルの書き込みで消費される読み取りおよび書き込み CU 数、インデックステーブルに格納されるデータ量、およびインデックステーブルから読み取られるデータ量が含まれます。

課金項目説明
データストレージデータテーブルとそのインデックステーブルを格納するために使用されるストレージ領域。
インデックステーブルの書き込みで消費される読み取り CUインデックス行の削除、挿入、または更新を行う読み取り操作によって消費される CU 数。
インデックステーブルの書き込みで消費される書き込み CUインデックス行の挿入または更新で消費される CU 数。
通常の読み取り操作で消費される CUAPI を使用してデータテーブルまたはインデックステーブルからデータを読み取るために消費される CU 数。
通常の書き込み操作で消費される CUAPI を使用してデータテーブルにデータを挿入するために消費される CU 数。

インデックステーブルのストレージ、書き込み、読み取りに関する課金ルール:

  • インデックステーブルのストレージと読み取りに関する課金ルールは、データテーブルのルールと同じです。詳細については、「課金の概要」をご参照ください。
  • システムがインデックステーブルを書き込む際、CU は次のルールに基づいて消費されます:
    • 書き込み CU は、インデックス行が挿入または更新される場合にのみ消費されます。
    • 読み取り CU は、インデックス行が削除、更新、または挿入されるときに消費されます。読み取り CU 数は、データテーブル内の対応するインデックス列から読み取られたデータ量と等しくなります。

インデックステーブルの書き込みで消費される読み取り CU の計算

データテーブルにセカンダリインデックスを作成すると、次のルールに基づいて読み取り CU が消費されます:

  • PUT 操作を使用してデータテーブルにデータ行を挿入する場合:
    • PUT 操作がデータテーブルのインデックス付き属性列にデータを挿入しない場合、つまりインデックス行が挿入されない場合。この場合、1 読み取り CU が消費されます。
    • PUT 操作がデータテーブルのインデックス付き属性列にデータを挿入する場合、つまり新しいインデックス行が挿入される場合。この場合、1 読み取り CU が消費されます。
  • PUT 操作を使用してデータテーブルの行を上書きする場合:
    • PUT 操作がデータテーブルのインデックス付き属性列を更新しない場合。この場合、1 読み取り CU が消費されます。
    • PUT 操作がデータテーブルのインデックス付き属性列を更新する場合。この場合、読み取り CU が消費されます:

      インデックス付き属性列から読み取られたデータの合計量 (プライマリキー列を除く) を 4 で除算します。消費される CU 数は、計算値を整数に切り上げた値と等しくなります。合計量が 0 KB の場合は、1 CU が消費されます。

  • UPDATE 操作を使用してデータテーブルにデータ行を挿入する場合:
    • UPDATE 操作がデータテーブルのインデックス列にデータを挿入しない場合、読み取り CU は消費されません。
    • UPDATE 操作がデータテーブルのインデックス列にデータを挿入する場合、1 読み取り CU が消費されます。
  • UPDATE 操作を使用してデータテーブルの行を更新する場合:
    • UPDATE 操作がデータテーブルのインデックス付き属性列にデータを挿入しない場合、読み取り CU は消費されません。
    • UPDATE 操作がデータテーブルのインデックス付き属性列にデータを挿入する場合、読み取り CU は次のルールに基づいて消費されます:

      インデックス列から読み取られたデータの合計量 (プライマリキー列を除く) を 4 で除算します。消費される CU 数は、計算値を整数に切り上げた値と等しくなります。合計量が 0 KB の場合は、1 CU が消費されます。

  • Delete 操作を使用してデータテーブルの行を削除する場合、読み取り CU は次のルールに基づいて消費されます:

    インデックス列から読み取られたデータの合計量 (プライマリキー列を除く) を 4 で除算します。消費される CU 数は、計算値を整数に切り上げた値と等しくなります。合計量が 0 KB の場合は、1 CU が消費されます。

  • データテーブルがプライマリキーの自動採番を使用している場合、データテーブルへのデータ挿入では読み取り CU は消費されません。プライマリキーの自動採番を使用するデータテーブルの行を更新すると、読み取り CU が消費されます。CU は、UPDATE 操作と同じルールに基づいて計算されます。
    説明 インデックステーブルによって消費される CU 数を削減するために、プライマリキーの自動採番を使用してデータテーブルにデータを挿入することを推奨します。

    プライマリキーの自動採番を使用しないデータテーブルの場合、データが取得されなくても、インデックス列に対して読み取り操作が実行されると 1 読み取り CU が消費されます。プライマリキーの自動採番を使用するデータテーブルの場合、データを挿入する際にインデックス列に対する読み取り操作は実行されません。したがって、読み取り CU は消費されません。

書き込み CU 数の計算

データテーブルにデータを挿入し、セカンダリインデックスを作成すると、書き込み CU が消費されます。書き込み CU は、次のルールに基づいて消費されます:

  • データテーブルに行を挿入してもインデックステーブルのデータが更新されない場合、書き込み CU は消費されません。
  • データテーブルに行を挿入し、新しいインデックス行がインデックステーブルに挿入される場合、書き込み CU が消費されます。書き込み CU 数は、挿入されたインデックス行のサイズによって決まります。
  • データテーブルに行を挿入し、インデックステーブルからインデックス行が削除される場合、書き込み CU が消費されます。書き込み CU 数は、削除されたインデックス行のサイズによって決まります。
  • データテーブルに行を挿入し、インデックステーブルのインデックス行が更新される場合、書き込み CU が消費されます。書き込み CU 数は、更新されたインデックス行のサイズによって決まります。
  • データテーブルに行を挿入し、インデックステーブルからインデックス行が削除され、別のインデックス行がインデックステーブルに挿入される場合、書き込み CU が消費されます。書き込み CU 数は、削除されたインデックス行と挿入されたインデックス行の合計サイズによって決まります。

詳細なルール:

  • PUT 操作を使用してデータテーブルにデータ行を挿入する場合:
    • PUT 操作がデータテーブルのインデックス付き属性列にデータを挿入しない場合、つまりインデックス行が挿入されない場合。この場合、読み取り CU は消費されません。
    • PUT 操作がデータテーブルのインデックス付き属性列にデータを挿入する場合、つまり新しいインデックス行が挿入される場合。各インデックステーブルで消費される書き込み CU:

      挿入されたインデックス行のデータの合計量を 4 で除算します。消費される CU 数は、計算値を整数に切り上げた値と等しくなります。

  • PUT 操作を使用してデータテーブルの行を上書きする場合:
    • PUT 操作がデータテーブルのインデックス付きプライマリキー列のみを更新する場合。この場合、書き込み CU は消費されません。
    • PUT 操作がデータテーブルのインデックス列を更新する場合。書き込み CU は次のルールに基づいて消費されます:

      PUT 操作によって更新されるすべてのインデックス (疎インデックスを除く) は、一定数の書き込み CU を消費します。

  • UPDATE 操作を使用してデータテーブルにデータ行を挿入する場合:
    • UPDATE 操作がデータテーブルのインデックス列にデータを挿入しない場合、書き込み CU は消費されません。
    • UPDATE 操作がデータテーブルのインデックス列にデータを挿入する場合、各インデックステーブルで消費される書き込み CU:
      • UPDATE 操作で新しいインデックス行が挿入される場合、書き込み CU が消費されます。インデックス行のデータの合計サイズを 4 で除算します。消費される CU 数は、計算値を整数に切り上げた値と等しくなります。
      • インデックス行が挿入されない場合、書き込み CU は消費されません。
  • UPDATE 操作を使用してデータテーブルの行を更新する場合:
    • UPDATE 操作がインデックス付き属性列を更新しない場合、書き込み CU は消費されません。
    • UPDATE 操作がインデックス付き属性列を更新する場合、各インデックステーブルで消費される書き込み CU は、次のルールに基づいて計算されます:
      • インデックステーブルに更新対象の行に基づいて作成されたインデックス行が既に存在する場合、削除 CU が消費されます。削除 CU 数は、削除されたインデックス行のインデックス付きプライマリキーのサイズによって決まります。
      • 更新された行に基づいて新しいインデックス行が挿入される場合、書き込み CU が消費されます。書き込み CU 数は、挿入されたインデックス行のインデックス付きプライマリキーのサイズによって決まります。
      • UPDATE 操作が既存のインデックス行の属性データのみを更新し、新しいインデックス行が挿入されない場合、更新 CU が消費されます。

      インデックス行のデータの合計量を 4 で除算します。消費される CU 数は、計算値を整数に切り上げた値と等しくなります。

  • DELETE 操作を使用してデータテーブルの行を削除する場合、書き込み CU は次のルールに基づいて消費されます:

    インデックステーブルに削除対象の行に基づいて作成されたインデックス行が既に存在する場合、書き込み CU が消費されます。対応するインデックス列のデータの合計量 (プライマリキー列を除く) を 4 で除算します。消費される書き込み CU は、計算値を整数に切り上げた値と等しくなります。

  • プライマリキーの自動採番を使用するデータテーブルにデータを挿入する場合、書き込み CU が消費されます。書き込み CU は、PUT 操作と同じルールに基づいて計算されます。プライマリキーの自動採番を使用するデータテーブルの行を更新する場合、書き込み CU が消費されます。書き込み CU は、UPDATE 操作と同じルールに基づいて計算されます。

インデックステーブルサイズの計測

インデックステーブルのサイズは、データテーブルと同じルールに基づいて計測されます。インデックステーブルのサイズは、すべての行の合計サイズと等しくなります。行の合計サイズは、プライマリキーと属性データの合計サイズと等しくなります。詳細については、「データストレージ」をご参照ください。

インデックステーブルの読み取りで消費される CU 数の計算

SDK、コンソール、または DLA などの他のメソッドを使用してインデックステーブルを読み取ると、読み取り CU が消費されます。読み取り CU 数は、データテーブルの読み取りと同じルールに基づいて計算されます。

次の例では、2 つのインデックステーブルを持つデータテーブルを使用して、さまざまな条件下で CU がどのように消費されるかを説明します。

データテーブル Table には、2 つのプライマリキー列 PK0 と PK1、および 3 つの事前定義列 Col0、Col1、Col2 が含まれています。データテーブル上には、2 つのインデックステーブル Index0 と Index1 が作成されます。Index0 には、3 つのプライマリキー Col0、PK0、PK1 と 1 つの属性列 Col2 が含まれます。Index1 には、4 つのプライマリキー Col1、Col0、PK0、PK1 が含まれ、属性列はありません。UPDATE 操作を使用して PK0 と PK1 を更新します。

  • データテーブルに行が存在しない場合:
    • Col3 を更新しても、読み取り CU または書き込み CU は消費されません。
    • Col1 を更新すると、次の CU が消費されます:
      • 1 読み取り CU
      • 書き込み CU は消費されません
    • Col0 と Col1 を更新すると、次の CU が消費されます:
      • 1 読み取り CU
      • Index0 は書き込み CU を消費します。書き込み CU 数は、Col0、PK0、PK1 に挿入されたデータの合計量によって決まります。Index1 は書き込み CU を消費します。書き込み CU 数は、Col0、Col1、PK0、PK1 に挿入されたデータの合計量によって決まります。
  • データテーブルに行が既に存在する場合:
    • Col3 を更新しても、読み取り CU または書き込み CU は消費されません。
    • Col2 を更新すると、次の CU が消費されます:
      • 読み取り CU が消費されます。読み取り CU 数は、Col0 から読み取られたデータ量によって決まります。UPDATE 操作が Col0 にデータを挿入する場合、1 CU が消費されます。
      • Index0 について、UPDATE 操作が Col0 にデータを挿入する場合、Index0 は書き込み CU を消費しません。UPDATE 操作が Col0 のデータを更新する場合、Index0 は書き込み CU を消費します。書き込み CU 数は、Col0、PK0、PK1、Col2 に挿入されたデータの合計量によって決まります。Index1 は書き込み CU を消費しません。
    • Col1 を更新すると、次の CU が消費されます:
      • 読み取り CU が消費されます。読み取り CU 数は、Col0 と Col1 から読み取られたデータ量によって決まります。合計量が 0 KB の場合は、1 CU が消費されます。
      • Index0 は書き込み CU を消費しません。Index1 について、インデックス行が挿入される場合、書き込み CU が消費されます。書き込み CU 数は、Col0 から読み取られ、Col1、PK0、PK1 に挿入されたデータ量によって決まります。Index1 について、Col0 のデータが更新されない場合、インデックス行は挿入されず、書き込み CU は消費されません。Col0 と Col1 のデータが更新される場合、対応するインデックス行を削除するために書き込み CU が消費されます。書き込み CU 数は、Col0、Col1、PK0、PK1 から読み取られたデータの合計量によって決まります。