

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon Keyspaces で読み取り/書き込みのキャパシティモードを設定する
<a name="ReadWriteCapacityMode"></a>

Amazon Keyspaces には、テーブルで読み込みおよび書き込みを処理するための読み取り/書き込みキャパシティモードが 2 つあります。
+  オンデマンド (デフォルト) 
+  プロビジョン済み 

 読み取り/書き込みキャパシティモードを選択すると、読み取りと書き込みのスループットの料金体系、およびテーブルスループットキャパシティの管理状態を制御できます。

**Topics**
+ [オンデマンドキャパシティモードを設定する](ReadWriteCapacityMode.OnDemand.md)
+ [プロビジョンドキャパシティモードを設定する](ReadWriteCapacityMode.Provisioned.md)
+ [Amazon Keyspaces でテーブルのキャパシティモードを表示する](ReadWriteCapacityMode.ProvisionedThroughput.ManagingCapacity.md)
+ [Amazon Keyspaces でテーブルのキャパシティモードを変更する](ReadWriteCapacityMode.SwitchReadWriteCapacityMode.md)
+ [Amazon Keyspaces でテーブルの事前ウォーミングを設定する](warm-throughput.md)

# オンデマンドキャパシティモードを設定する
<a name="ReadWriteCapacityMode.OnDemand"></a>

Amazon Keyspaces (Apache Cassandra 向け) の*オンデマンド*キャパシティモードは、キャパシティ計画なしで 1 秒あたりに数千ものリクエストを処理できる柔軟な請求オプションです。このオプションには、読み取りおよび書き込みリクエストのリクエストごとの支払い料金が用意されているため、使用した分だけ課金されます。

 オンデマンドモードを選択すると、Amazon Keyspaces により、テーブルのスループットキャパシティを以前に到達したトラフィックレベルまで即座に拡張でき、アプリケーショントラフィックが減少した時点で元に戻すことができます。ワークロードのトラフィックレベルが新たなピークに達すると、サービスは瞬時に適応してテーブルのスループットキャパシティを増やします。新規テーブルと既存のテーブルの両方で、オンデマンドキャパシティモードを有効にできます。

以下の条件のいずれかに該当する場合、オンデマンドモードは適切なオプションです。
+ 不明なワークロードを含む新しいテーブルを作成します。
+ アプリケーションのトラフィックが予測不可能です。
+ わかりやすい従量課金制の支払いを希望します。

オンデマンドモードを開始するには、コンソールまたは数行の Cassandra クエリ言語 (CQL) コードを使用して、新規のテーブルを作成するか、既存のテーブルを更新して、オンデマンドキャパシティモードを使用することができます。詳細については、「[テーブル](cql.ddl.table.md)」を参照してください。

**Topics**
+ [読み取りリクエスト単位と書き込みリクエスト単位](#ReadWriteCapacityMode.requests)
+ [ピークトラフィックとスケーリングプロパティ](#ReadWriteCapacityMode.PeakTraffic)
+ [オンデマンドキャパシティモードの初期スループット](#ReadWriteCapacityMode.InitialThroughput)

## 読み取りリクエスト単位と書き込みリクエスト単位
<a name="ReadWriteCapacityMode.requests"></a>

 オンデマンドキャパシティモードのテーブルでは、アプリケーションによりあらかじめ使用されることが予測される読み取りスループットと書き込みスループットを指定する必要はありません。Amazon Keyspaces では、読み込みリクエスト単位 (RRU) と書き込みリクエスト単位 (WRU) に関して、テーブルに対して実行する読み取りと書き込みの料金が発生します。
+ 1 *RRU* は、最大 4 KB の行に対して、`LOCAL_QUORUM` 読み取りリクエスト 1 件、または ` LOCAL_ONE` リクエスト 2 件を表します。4 KB より大きい行を読み取る必要がある場合、読み取りオペレーションには追加の RRU が使用されます。必要な RRU の総数は、行サイズと、`LOCAL_QUORUM` または `LOCAL_ONE` の読み取り整合性の使用の有無によって異なります。例えば、8 KB の行の読み取りには、`LOCAL_QUORUM` 読み取り整合性を使用する 場合は 2 RRU、`LOCAL_ONE` 読み取り整合性を選択した場合は 1 RRU が必要です。
+ 1 *WRU* は、最大で 1 KB の行 1 つに対する 1 回の書き込みを表します。すべての書き込みでは `LOCAL_QUORUM` 整合性が使用されており、軽量トランザクション (LWT) の使用には追加料金はかかりません。1 KB より大きい行を書き込む必要がある場合、書き込みオペレーションでは追加の WRU が使用されます。必要な WRU の総数は、行サイズに応じて異なります。例えば、行サイズが 2 KB の場合、1 件の書き込みリクエストを実行するには 2 WRU が必要です。

サポートされている整合性レベルの詳細については、「[Apache Cassandra でサポートされている読み取り/書き込み整合性レベルと関連コスト](consistency.md)」を参照してください。

## ピークトラフィックとスケーリングプロパティ
<a name="ReadWriteCapacityMode.PeakTraffic"></a>

オンデマンドキャパシティモードが使用されている Amazon Keyspaces テーブルは、アプリケーションのトラフィックボリュームに自動的に適応します。オンデマンドキャパシティーモードは、テーブルにおける前のピークトラフィックの最大 2 倍まで瞬時に対応します。例えば、アプリケーションのトラフィックパターンは、1 秒あたりの `LOCAL_QUORUM` 読み取り数 5,000～10,000 の範囲で変動する可能性があります。1 秒あたりの読み取り数 10,000 は過去のトラフィックピークです。

このパターンでは、オンデマンドキャパシティモードは、1 秒あたりの最大読み取り数 20,000 の持続トラフィックに即座に対応します。アプリケーションによって 1 秒あたりの読み取り数 20,000 のトラフィックを維持する場合、そのピークは新たに過去のピークになり、その後のトラフィックでは 1 秒あたりの最大読み取り数が 40,000 に到達できます。

 1 つのテーブルで過去のピークの 2 倍以上が必要な場合、Amazon Keyspaces では、トラフィックボリュームの増加に合わせて、割り当るキャパシティが自動的に増加されます。これにより、そのテーブルに、追加のリクエストを処理できるだけの十分なスループットキャパシティがあることを確認できます。ただし、30 分以内に過去のピークの 2 倍を超えると、スループットキャパシティ不足エラーが発生する可能性があります。

例えば、読み取りの整合性が強力で、アプリケーションのトラフィックパターンが 1 秒あたりの読み取り数 5,000～10,000 の範囲で変動し、1 秒あたりの読み取り数 20,000 が過去に到達したトラフィックピークである場合を考えてみます。この場合、このサービスでは、1 秒あたりの最大読み取り数 40,000 に到達する 30 分以上前の段階で、トラフィックを増やすことが推奨されます。

テーブルの読み取りと書き込みのキャパシティ消費量の推定方法については、「[Amazon Keyspaces で読み取り/書き込みスループットのキャパシティ消費量を推定する](capacity-examples.md)」を参照してください。

アカウントのデフォルトクォータの詳細およびクォータを引き上げる方法については、「[Amazon Keyspaces (Apache Cassandra 向け) のクォータ](quotas.md)」を参照してください。

## オンデマンドキャパシティモードの初期スループット
<a name="ReadWriteCapacityMode.InitialThroughput"></a>

オンデマンドキャパシティモードが有効になっている新規のテーブルを作成した場合、または、初めて既存のテーブルを最近初めてオンデマンドキャパシティモードに切り替えた場合に、テーブルには、過去にオンデマンドキャパシティモードでトラフィックが扱われたことがなくても、以下に示す過去のピーク設定があります。
+  **オンデマンドキャパシティモードで新たに作成されたテーブル:** 過去のピークは、2,000 WRU および 6,000 RRU です。過去のピークを即座に 2 倍まで引き上げることができます。これにより、新たに作成されたオンデマンドテーブルにおいて、最大で 4,000 WRU および 12,000 RRU です。
+  **オンデマンドキャパシティモードに切り替えられた既存のテーブル:** 過去のピークは、テーブルにプロビジョニングされた過去の WCU と RCU の半分、またはオンデマンドキャパシティモードで新しく作成されたテーブルの設定の、どちらか高い方になります。

# プロビジョンドキャパシティモードを設定する
<a name="ReadWriteCapacityMode.Provisioned"></a>

 *プロビジョンドスループット性能*モードを選択した場合は、アプリケーションに必要な 1 秒あたりの読み込みと書き込みの回数を指定します。これにより、Amazon Keyspaces の使用状況を管理して、定義されたリクエストレート以下を維持し、予測可能性を維持できます。プロビジョンドスループットのオートスケーリングの詳細については、「[Amazon Keyspaces 自動スケーリングでスループットキャパシティを自動的に管理する](autoscaling.md)」を参照してください。

以下の条件のいずれかに該当する場合、プロビジョンドスループット性能モードは適切なオプションです。
+ アプリケーションのトラフィックが予測可能です。
+ トラフィックが一定している、または徐々に増加するアプリケーションを実行します。
+ 容量要件を予測できます。

## 読み取りキャパシティユニットと書き込みキャパシティユニット
<a name="ReadWriteCapacityMode.Provisioned.Units"></a>

 プロビジョンドスループット性能モードのテーブルでは、読み取りキャパシティユニット (RCU) と書き込みキャパシティユニット (WCU) の観点でスループットキャパシティを指定できます。
+ 1 *RCU* は、最大 4 KB の 1 行に対して、1 秒あたり 1 回の `LOCAL_QUORUM` 読み取り、または 1 秒あたり 2 回の `LOCAL_ONE` 読み取りを表しています。4 KB より大きい行を読み取る必要がある場合、読み取りオペレーションには追加の RCU が使用されます。

  必要な RCU の総数は、行サイズ、および、`LOCAL_QUORUM` と `LOCAL_ONE` の読み取りのどちらを使用するかによって異なります。例えば、行サイズが 8 KB の場合、1 秒あたり 1 回の `LOCAL_QUORUM` 読み取りを維持するには 2 RCU が必要になり、`LOCAL_ONE` 読み取りを選択した場合は 1 RCU が必要になります。
+ 1 *WCU* は、最大 1 KB の 1 行 に対する 1 回の書き込みを表します。すべての書き込みでは `LOCAL_QUORUM` 整合性が使用されており、軽量トランザクション (LWT) の使用には追加料金はかかりません。1 KB より大きい行を書き込む必要がある場合、書き込みオペレーションでは追加の WCU が使用されます。

  必要な WCU の総数は、行サイズに応じて異なります。例えば、行サイズが 2 KB の場合、1 秒あたり 1 件の書き込みリクエスト処理を維持するには 2 WCU が必要です。テーブルの読み取りと書き込みのキャパシティ消費量を推定する方法の詳細については、「[Amazon Keyspaces で読み取り/書き込みスループットのキャパシティ消費量を推定する](capacity-examples.md)」を参照してください。

アプリケーションでこれより大きな行 (上限は Amazon Keyspaces の最大行サイズ 1 MB) の読み取りまたは書き込みが行われると、消費されるキャパシティユニットがさらに増えます。行サイズを見積もる方法については、「[Amazon Keyspaces で行のサイズを推定する](calculating-row-size.md)」を参照してください。例えば、6 RCU と 6 WCU のプロビジョニングされたテーブルを作成するとします。これらの設定により、アプリケーションで次のことが可能になります。
+ 1 秒あたり最大 24 KB の `LOCAL_QUORUM` 読み取りの実行 (4 KB × 6 RCU)。
+ 1 秒あたり最大 48 KB の `LOCAL_ONE` 読み取りの実行 (読み取りスループットは 2 倍)
+ 1 秒あたり最大 6 KB の書き込みの実行 (1 KB × 6 WCU)。

 *プロビジョンドスループット*とは、アプリケーションによりテーブルから消費されるスループットキャパシティの上限です。アプリケーションがプロビジョンドスループット性能を超えると、キャパシティ不足エラーが発生する可能性があります。

例えば、十分なスループットキャパシティがない読み取りリクエストは、`Read_Timeout` 例外が発生して失敗し、`ReadThrottleEvents` メトリクスに投稿されます。十分なスループットキャパシティがない書き込みリクエストは、`Write_Timeout` 例外が発生して失敗し、`WriteThrottleEvents` メトリクスに投稿されます。

Amazon CloudWatch を使用して、プロビジョンドスループットメトリクス、実際のスループットメトリクス、キャパシティ不足イベントを監視することができます。これらのメトリクスの詳細については、[Amazon Keyspaces のメトリクスとディメンション](metrics-dimensions.md) を参照してください。

**注記**  
キャパシティ不足によるエラーが繰り返し発生すると、クライアント側のドライバー固有例外が発生する可能性があります。例えば、DataStax Java ドライバーは `NoHostAvailableException` により失敗します。

テーブルのスループットキャパシティ設定を変更する場合は、 AWS マネジメントコンソール や、CQL を使用する `ALTER TABLE` ステートメントを使用できます。詳細については「[ALTER TABLE](cql.ddl.table.md#cql.ddl.table.alter)」を参照してください。

アカウントのデフォルトクォータの詳細およびクォータを引き上げる方法については、「[Amazon Keyspaces (Apache Cassandra 向け) のクォータ](quotas.md)」を参照してください。

# Amazon Keyspaces でテーブルのキャパシティモードを表示する
<a name="ReadWriteCapacityMode.ProvisionedThroughput.ManagingCapacity"></a>

Amazon Keyspaces システムキースペースでシステムテーブルのクエリを実行して、テーブルに関するキャパシティモード情報を確認することができます。テーブルにオンデマンドスループット性モードまたはプロビジョンドスループット性能モードが使用されているかどうかも確認できます。テーブルにプロビジョンドスループット性能モードが設定されている場合、テーブルにプロビジョニングされたスループットキャパシティを確認できます。

を使用して、テーブルのキャパシティモード AWS CLI を表示することもできます。

テーブルのプロビジョンドスループットを変更するには、「[Amazon Keyspaces でテーブルのキャパシティモードを変更する](ReadWriteCapacityMode.SwitchReadWriteCapacityMode.md)」を参照してください。

------
#### [ Cassandra Query Language (CQL) ]

**例**

```
SELECT * from system_schema_mcs.tables where keyspace_name = 'mykeyspace' and table_name = 'mytable';
```

オンデマンドキャパシティモードで設定されたテーブルからは、次の結果が返されます。

```
{
   "capacity_mode":{
      "last_update_to_pay_per_request_timestamp":"1579551547603",
      "throughput_mode":"PAY_PER_REQUEST"
   }
}
```

プロビジョンドスループット性能モードで構成されたテーブルからは、次の結果が返されます。

```
{
   "capacity_mode":{
      "last_update_to_pay_per_request_timestamp":"1579048006000",
      "read_capacity_units":"5000",
      "throughput_mode":"PROVISIONED",
      "write_capacity_units":"6000"
   }
}
```

`last_update_to_pay_per_request_timestamp` 値はミリ秒単位で測定されます。

------
#### [ CLI ]

を使用してテーブルのスループットキャパシティモードを表示する AWS CLI

```
aws keyspaces get-table --keyspace-name myKeyspace --table-name myTable
```

このコマンドの出力は、テーブルがプロビジョンドキャパシティモードの場合は、次のようになります。

```
"capacitySpecification": {
        "throughputMode": "PROVISIONED",
        "readCapacityUnits": 4000,
        "writeCapacityUnits": 2000
    }
```

オンデマンドモードのテーブルの場合、出力は次のようになります。

```
"capacitySpecification": {
        "throughputMode": "PAY_PER_REQUEST",
        "lastUpdateToPayPerRequestTimestamp": "2024-10-03T10:48:19.092000+00:00"
    }
```

------

# Amazon Keyspaces でテーブルのキャパシティモードを変更する
<a name="ReadWriteCapacityMode.SwitchReadWriteCapacityMode"></a>

テーブルをプロビジョンドキャパシティモードからオンデマンドキャパシティモードに切り替えると、Amazon Keyspaces によりテーブルおよびパーティションの構造にいくつかの変更が加えられます。この処理には数分かかることもあります。切り替え期間中、テーブルでは、以前にプロビジョニングされた WCU および RCU の両方と整合性のあるスループットが得られます。

オンデマンドキャパシティモードからプロビジョンドキャパシティモードに戻すと、テーブルでは、テーブルがオンデマンドキャパシティモードに設定されたときに到達した前のピークと整合性のあるスループットが得られます。

キャパシティモードを切り替える際は、次の待機期間が適用されます。
+ オンデマンドモードで新しく作成したテーブルは、いつでもプロビジョンドキャパシティモードに切り替えることができます。ただし、オンデマンドモードに戻すことができるのは、テーブルの作成タイムスタンプから 24 時間後のみです。
+ オンデマンドモードの既存のテーブルは、いつでもプロビジョンドキャパシティモードに切り替えることができます。ただし、キャパシティモードをプロビジョンドからオンデマンドに切り替えることができるのは、24 時間に 1 回のみです。

------
#### [ Cassandra Query Language (CQL) ]

**CQL を使用してテーブルのスループットキャパシティモードを変更する**

1. テーブルのキャパシティモードを `PROVIOSIONED` に変更するには、ワークロードの予想されるピーク値に基づいて読み取りキャパシティユニットと書き込みキャパシティユニットを設定する必要があります。次のステートメントは、その一例です。このステートメントを実行して、テーブルの読み取りキャパシティユニットまたは書き込みキャパシティユニットを調整することもできます。

   ```
   ALTER TABLE catalog.book_awards WITH CUSTOM_PROPERTIES={'capacity_mode':{'throughput_mode': 'PROVISIONED', 'read_capacity_units': 6000, 'write_capacity_units': 3000}};
   ```

   プロビジョンドキャパシティモードと自動スケーリングを設定するには、「[既存のテーブルに対して自動スケーリングを設定する](autoscaling.configureTable.md)」を参照してください。

1. テーブルのキャパシティモードをオンデマンドモードに変更するには、スループットモードを `PAY_PER_REQUEST` に設定します。以下のステートメントは、この例です。

   ```
   ALTER TABLE catalog.book_awards WITH CUSTOM_PROPERTIES={'capacity_mode':{'throughput_mode': 'PAY_PER_REQUEST'}};
   ```

1. 次のステートメントを使用して、テーブルのキャパシティモードを確認できます。

   ```
   SELECT * from system_schema_mcs.tables where keyspace_name = 'catalog' and table_name = 'book_awards';
   ```

   オンデマンドキャパシティモードで設定されたテーブルからは、次の結果が返されます。

   ```
   {
      "capacity_mode":{
         "last_update_to_pay_per_request_timestamp":"1727952499092",
         "throughput_mode":"PAY_PER_REQUEST"
      }
   }
   ```

   `last_update_to_pay_per_request_timestamp` 値はミリ秒単位で測定されます。

------
#### [ CLI ]

**を使用してテーブルのスループットキャパシティモードを変更する AWS CLI**

1. テーブルのキャパシティモードを `PROVIOSIONED` に変更するには、ワークロードの予想されるピーク値に基づいて読み取りキャパシティユニットと書き込みキャパシティユニットを設定する必要があります。次のコマンドは、その一例です。このコマンドを実行して、テーブルの読み取りキャパシティユニットまたは書き込みキャパシティユニットを調整することもできます。

   ```
   aws keyspaces update-table --keyspace-name catalog --table-name book_awards  
                                       \--capacity-specification throughputMode=PROVISIONED,readCapacityUnits=6000,writeCapacityUnits=3000
   ```

   プロビジョンドキャパシティモードと自動スケーリングを設定するには、「[既存のテーブルに対して自動スケーリングを設定する](autoscaling.configureTable.md)」を参照してください。

1. テーブルのキャパシティモードをオンデマンドモードに変更するには、スループットモードを `PAY_PER_REQUEST` に設定します。以下のステートメントは、この例です。

   ```
   aws keyspaces update-table --keyspace-name catalog --table-name book_awards 
                                       \--capacity-specification throughputMode=PAY_PER_REQUEST
   ```

1. 次のコマンドを使用して、テーブルに設定されているキャパシティモードを確認できます。

   ```
   aws keyspaces get-table --keyspace-name catalog --table-name book_awards
   ```

   オンデマンドモードのテーブルの場合、出力は次のようになります。

   ```
   "capacitySpecification": {
           "throughputMode": "PAY_PER_REQUEST",
           "lastUpdateToPayPerRequestTimestamp": "2024-10-03T10:48:19.092000+00:00"
       }
   ```

------

# Amazon Keyspaces でテーブルの事前ウォーミングを設定する
<a name="warm-throughput"></a>

Amazon Keyspaces は、オンデマンドまたはプロビジョニングされたスループットに基づいてストレージパーティションを自動的にスケーリングしますが、新しいテーブルや突然のスループットピークの場合、必要なストレージパーティションの割り当てに時間がかかることがあります。新規または既存のテーブルに予想されるピークスループットをサポートするのに十分な容量を確保するために、特定の*ウォームスループット*値を手動で設定してテーブルを*事前ウォーミング*できます。

*ウォームスループット*とは、Amazon Keyspaces テーブルが瞬時にサポートできる読み取りおよび書き込みオペレーションの数を指します。これらの値は、すべての新規および既存のテーブルでデフォルトで使用できます。オンデマンドモードを使用している場合、またはプロビジョニングされたスループットを更新する場合、Amazon Keyspaces はアプリケーションがこれらの値まで即座にリクエストを発行できるようにします。

Amazon Keyspaces は、使用量が増えるとウォームスループット値を自動的に調整します。たとえば、別のデータベースからデータを移行する場合など、今後のピークイベントのスループット容量を調整するには、短時間でテラバイトのデータをロードする必要がある場合があります。テーブルのウォームスループット値を手動で増やすことができます。これは、リクエストレートが 10 倍、100 倍、またはそれ以上増加する可能性がある計画されたピークイベントに役立ちます。まず、現在のウォームスループットが予想されるトラフィックを処理するのに十分かどうかを評価します。次に、計画されたピークワークロードのテーブルを事前ウォーミングする必要がある場合は、スループット設定や[キャパシティモード](ReadWriteCapacityMode.md)を変更せずにウォームスループット値を手動で増やすことができます。

読み取りオペレーション、書き込みオペレーション、またはその両方のためにテーブルを事前ウォーミングできます。この値は、新規および既存の単一リージョンテーブルとマルチリージョンテーブルに対して増やすことができ、設定したウォームスループット設定はマルチリージョンテーブルのすべてのレプリカに自動的に適用されます。事前ウォーミングできる Amazon Keyspaces テーブルの数に制限はありません。事前ウォーミングを完了する時間は、設定した値とテーブルのサイズによって異なります。同時事前ウォーミングリクエストを送信でき、これらのリクエストはテーブルオペレーションを妨げません。そのリージョンのアカウントのテーブルクォータ制限まで、テーブルを事前ウォーミングできます。[Service Quotas コンソール](https://console.aws.amazon.com/servicequotas)を使用して現在のクォータを確認し、必要に応じて引き上げます。

Amazon Keyspaces がオンデマンド使用量またはプロビジョニングされた容量に基づいて調整するウォームスループット値は、追加料金なしですべてのテーブルでデフォルトで使用できます。ただし、デフォルトのウォームスループット値をピークトラフィックイベントの事前ウォームテーブルに手動で増やすと、追加料金が適用されます。詳細については、[「Amazon Keyspaces の料金](https://aws.amazon.com/keyspaces/pricing/)」を参照してください。

Amazon Keyspaces テーブルを事前ウォーミングするときに考慮すべきシナリオとベストプラクティスをいくつか紹介します。

## ウォームスループットと不均等なアクセスパターン
<a name="warm-throughput-scenarios-uneven"></a>

テーブルのウォームスループットは 1 秒あたり 30,000 読み取りユニットと 1 秒あたり 10,000 書き込みユニットですが、これらの値に達する前に読み取りまたは書き込みで容量超過イベントが発生する可能性があります。これは、ホットパーティションが原因である可能性があります。Amazon Keyspaces は実質的に無制限のスループットをサポートするようにスケーリングを続けることができますが、個々のパーティションは 1 秒あたり 1,000 書き込みユニットと 1 秒あたり 3,000 読み取りユニットに制限されています。アプリケーションがテーブルのパーティションのごく一部にトラフィックを送りすぎると、テーブルのウォームスループット値に達する前でも容量超過イベントが発生する可能性があります。シームレスなスケーラビリティを確保し、ホットパーティションを回避するために、[Amazon Keyspaces のベストプラクティス](bp-partition-key-design.md)に従うことをお勧めします。

## プロビジョニングされたテーブルのウォームスループット
<a name="warm-throughput-scenarios-provisioned"></a>

1 秒あたり 30,000 読み込みユニットと 1 秒あたり 10,000 書き込みユニットのウォームスループットを持つが、現在 4,000 RCUsと 8,000 WCUs。プロビジョニングされたスループット設定を更新することで、テーブルのプロビジョニングされたスループットを 30,000 RCUsまたは 10,000 WCUs まで即座にスケールできます。プロビジョニングされたスループットをこれらの値を超えて増やすと、新しいピークスループットが確立されるため、ウォームスループットは新しい高い値に自動的に調整されます。たとえば、プロビジョニングされたスループットを 50,000 RCU に設定すると、ウォームスループットは 1 秒あたり 50,000 読み取りユニットに増加します。

```
"ProvisionedThroughput": 
    {
        "ReadCapacityUnits": 4000,
        "WriteCapacityUnits": 8000 
    }
"WarmThroughput": 
    { 
        "ReadUnitsPerSecond": 30000,
        "WriteUnitsPerSecond": 10000
    }
```

## オンデマンドテーブルのウォームスループット
<a name="warm-throughput-scenarios-ondemand"></a>

新しいオンデマンドテーブルは、1 秒あたり 12,000 読み取りユニット、1 秒あたり 4,000 書き込みユニットのウォームスループットから始まります。テーブルは、これらのレベルまで持続するトラフィックに即座に対応できます。リクエストが 1 秒あたり 12,000 読み取りユニットまたは 1 秒あたり 4,000 書き込みユニットを超えると、ウォームスループットはより高い値に自動的に調整されます。

```
"WarmThroughput": 
    { 
        "ReadUnitsPerSecond": 12000,
        "WriteUnitsPerSecond": 4000
    }
```

## Amazon Keyspaces テーブルを事前ウォーミングするためのベストプラクティス
<a name="prewarming-best-practices"></a>

Amazon Keyspaces テーブルに事前ウォーミングを実装する場合は、次のベストプラクティスに従ってください。

必要な容量を正確に見積もる  
事前ウォーミングには 1 回限りのコストが発生するため、オーバープロビジョニングを避けるため、予想されるワークロードに基づいて必要なスループットを慎重に計算してください。

テーブルのスキーマを考慮する  
行が大きいテーブルでは、同じスループットに対してより多くのパーティションが必要になる場合があります。事前ウォーミング要件を推定するときに、平均行サイズを考慮します。

テーブルのパフォーマンスをモニタリングする  
事前ウォーミング後、CloudWatch メトリクスを使用して、テーブルが想定どおりに負荷を処理していることを確認します。詳細については、「[Amazon CloudWatch を使用して事前ウォーミングされたテーブルのパフォーマンスをモニタリングする](monitor-prewarming-cloudwatch.md)」を参照してください。

クォータの管理  
アプリケーションでデフォルトのクォータ (40,000 RCUs/WCUs または 2,000 パーティション) よりも高いスループットが必要な場合は、トラフィックの多いイベントよりもかなり前にリクエストクォータが増加します。クォータの引き上げをリクエストするには、[ Service Quotas コンソール](https://console.aws.amazon.com/servicequotas)を使用してください。

コストの最適化  
トラフィックの多い一時的なイベントの場合、短期間のイベントでは費用対効果が高くなる可能性があるため、大容量のプロビジョニングモードに切り替える代わりに事前ウォーミングを使用することを検討してください。料金の詳細については、[「Amazon Keyspaces の料金](https://aws.amazon.com/keyspaces/pricing/)」を参照してください。

**注記**  
テストフェーズ中にアプリケーションのパフォーマンスメトリクスをモニタリングして、事前ウォーミング設定がワークロード要件を適切にサポートしていることを確認します。

**Topics**
+ [ウォームスループットと不均等なアクセスパターン](#warm-throughput-scenarios-uneven)
+ [プロビジョニングされたテーブルのウォームスループット](#warm-throughput-scenarios-provisioned)
+ [オンデマンドテーブルのウォームスループット](#warm-throughput-scenarios-ondemand)
+ [Amazon Keyspaces テーブルを事前ウォーミングするためのベストプラクティス](#prewarming-best-practices)
+ [ウォームスループットがより高い Amazon Keyspaces テーブルを新規作成する](create-table-warm-throughput.md)
+ [既存の Amazon Keyspaces テーブルのウォームスループットを増やす](update-warm-throughput.md)
+ [Amazon Keyspaces テーブルのウォームスループットを表示する](view-warm-throughput.md)
+ [Amazon CloudWatch を使用して事前ウォーミングされたテーブルのパフォーマンスをモニタリングする](monitor-prewarming-cloudwatch.md)

# ウォームスループットがより高い Amazon Keyspaces テーブルを新規作成する
<a name="create-table-warm-throughput"></a>

コンソール、CQL、または を使用して、Amazon Keyspaces テーブルを作成するときにウォームスループット値を調整できます AWS CLI。

------
#### [ Console ]

**ウォームスループット設定で新しいテーブルを作成する方法**

1. にサインインし AWS マネジメントコンソール、[https://console.aws.amazon.com/keyspaces/home](https://console.aws.amazon.com/keyspaces/home) で Amazon Keyspaces コンソールを開きます。

1. ナビゲーションペインで [**Tables]** (テーブル) を選択して、[**Create table (テーブルの作成)**] を選択します。

1. [**Table details (テーブルの詳細)**] セクションの [**Create table (テーブルの作成)**] ページで、キースペースを選択し、新しいテーブルに名前を付けます。

1. **[列]** セクションで、テーブルのスキーマを作成します。

1. **[プライマリキー]** セクションで、テーブルのプライマリキーを定義し、オプションでクラスタリング列を選択します。

1. **[テーブルの設定]** セクションで、**[設定のカスタマイズ]** を選択します。

1. [**Read/write capacity settings (読み取り/書き込みキャパシティの設定)**] に進みます。

1. **キャパシティモードでは**、**オンデマンド**または**プロビジョンド**のいずれかを選択できます。

1. **テーブルの事前ウォーミング**セクションでは、必要に応じて **1 秒あたりの読み取り単位**と 1 **秒あたりの書き込み単位**の値を増やして、計画されたピークイベントを処理するテーブルを準備することができます。

   Amazon Keyspaces がオンデマンド使用量またはプロビジョニングされた容量に基づいて調整するウォームスループット値は、追加料金なしですべてのテーブルでデフォルトで使用できます。デフォルトのウォームスループット値を手動で増やして、ピークトラフィックイベントのテーブルを事前ウォーミングする場合、追加料金が適用されます。

1. 必要に応じて、他のオプションのテーブル機能を設定します。次に、**[Create table]** (テーブルを作成) を選択します。

------
#### [ Cassandra Query Language (CQL) ]
+ 次のいずれかの方法を使用して、ウォームスループットのテーブルを作成します。
  + プロビジョニングモードの場合は、テーブルを作成し、次の CQL 構文を使用して読み取りと書き込みの予想されるピーク容量を指定します。

    ```
    CREATE TABLE catalog.book_awards (
       year int,
       award text,
       rank int,
       category text,
       book_title text,
       author text,
       publisher text,
       PRIMARY KEY ((year, award), category, rank))
    WITH CUSTOM_PROPERTIES = {  
        'capacity_mode': {
           'throughput_mode': 'PROVISIONED',
           'read_capacity_units': 20000,
           'write_capacity_units': 10000
         },
        'warm_throughput': {  
            'read_units_per_second': 40000,  
            'write_units_per_second': 20000  
         }
    };
    ```
  + オンデマンドモードでは、テーブルを作成し、次の CQL 構文を使用して読み取りと書き込みの予想されるピーク容量を指定します。

    ```
    CREATE TABLE catalog.book_awards (
       year int,
       award text,
       rank int,
       category text,
       book_title text,
       author text,
       publisher text,
       PRIMARY KEY ((year, award), category, rank))
    WITH CUSTOM_PROPERTIES = {  
        'capacity_mode': {
           'throughput_mode': 'PAY_PER_REQUEST'
         },
        'warm_throughput': {  
            'read_units_per_second': 40000,  
            'write_units_per_second': 20000  
         }
    };
    ```

  テーブルの容量設定を確認するには、「」を参照してください[Amazon Keyspaces テーブルのウォームスループットを表示する](view-warm-throughput.md)。

------
#### [ CLI ]

1. を使用して、次のいずれかの方法を使用してウォームスループットのテーブルを作成する AWS CLI
   + プロビジョンドモードで新しいテーブルを作成し、その新規テーブルの読み取りと書き込みの予想ピークキャパシティの値を指定します。以下のステートメントは、この例です。

     ```
     aws keyspaces create-table \
     --keyspace-name 'catalog' \
     --table-name 'book_awards' \
     --schema-definition 'allColumns=[{name=year,type=int},{name=award,type=text},{name=rank,type=int},{name=category,type=text},{name=book_title,type=text},{name=author,type=text},{name=publisher,type=text}],partitionKeys=[{name=year},{name=award}],clusteringKeys=[{name=category,orderBy=ASC},{name=rank,orderBy=ASC}]' \
     --capacity-specification throughputMode=PROVISIONED,readCapacityUnits=20000,writeCapacityUnits=10000 \
     --warm-throughput-specification readUnitsPerSecond=40000,writeUnitsPerSecond=20000
     ```
   + オンデマンドモードで新しいテーブルを作成し、新しいテーブルの読み取りと書き込みに予想されるピーク容量値を指定します。以下のステートメントは、この例です。

     ```
     aws keyspaces create-table \
     --keyspace-name 'catalog' \
     --table-name 'book_awards' \
     --schema-definition 'allColumns=[{name=year,type=int},{name=award,type=text},{name=rank,type=int},{name=category,type=text},{name=book_title,type=text},{name=author,type=text},{name=publisher,type=text}],partitionKeys=[{name=year},{name=award}],clusteringKeys=[{name=category,orderBy=ASC},{name=rank,orderBy=ASC}]' \
     --warmThroughputSpecification readUnitsPerSecond=40000,writeUnitsPerSecond=20000
     ```

1. コマンドの出力は、次の例に示すように、テーブルの ARN を返します。

   ```
   {
       "resourceArn": "arn:aws::cassandra:us-east-1:111122223333:/keyspace/catalog/table/book_awards>"
   }
   ```

   テーブルの容量設定を確認するには、「」を参照してください[Amazon Keyspaces テーブルのウォームスループットを表示する](view-warm-throughput.md)。

------
#### [ Java ]

**SDK for Java を使用して新しいテーブルを作成します。**
+ プロビジョンドモードで新しいテーブルを作成し、その新規テーブルの読み取りと書き込みの予想ピークキャパシティの値を指定します。次のコード例は、この例です。

  ```
  import software.amazon.awssdk.services.keyspaces.KeyspacesClient;
  import software.amazon.awssdk.services.keyspaces.model.*;
  
  public class PreWarmingExample {
      public static void main(String[] args) {
          KeyspacesClient keyspacesClient = KeyspacesClient.builder().build();
  
          // Define schema
          List<ColumnDefinition> columns = Arrays.asList(
              ColumnDefinition.builder().name("year").type("int").build(),
              ColumnDefinition.builder().name("award").type("text").build(),
              ColumnDefinition.builder().name("rank").type("int").build(),
              ColumnDefinition.builder().name("category").type("text").build(),
              ColumnDefinition.builder().name("book_title").type("text").build(),
              ColumnDefinition.builder().name("author").type("text").build(),
              ColumnDefinition.builder().name("publisher").type("text").build()
          );
          
          List<PartitionKey> partitionKeys = Arrays.asList(
              PartitionKey.builder().name("year").build(),
              PartitionKey.builder().name("award").build()
          );
          
          List<ClusteringKey> clusteringKeys = Arrays.asList(
              ClusteringKey.builder().name("category").orderBy("ASC").build(),
              ClusteringKey.builder().name("rank").orderBy("ASC").build()
          );
          
          SchemaDefinition schema = SchemaDefinition.builder()
              .allColumns(columns)
              .partitionKeys(partitionKeys)
              .clusteringKeys(clusteringKeys)
              .build();
  
          // Define capacity specification
          CapacitySpecification capacitySpec = CapacitySpecification.builder()
              .throughputMode(ThroughputMode.PROVISIONED)
              .readCapacityUnits(20000)
              .writeCapacityUnits(10000)
              .build();
              
          // Define warm throughput specification
          WarmThroughputSpecification warmThroughput = WarmThroughputSpecification.builder()
              .readUnitsPerSecond(40000L)
              .writeUnitsPerSecond(20000L)
              .build();
  
          // Create table with PreWarming
          CreateTableRequest request = CreateTableRequest.builder()
              .keyspaceName("catalog")
              .tableName("book_awards")
              .schemaDefinition(schema)
              .capacitySpecification(capacitySpec)
              .warmThroughputSpecification(warmThroughput)
              .build();
              
          CreateTableResponse response = keyspacesClient.createTable(request);
          System.out.println("Table created with ARN: " + response.resourceArn());
      }
  }
  ```

------

# 既存の Amazon Keyspaces テーブルのウォームスループットを増やす
<a name="update-warm-throughput"></a>

コンソール、CQL、または を使用して、Amazon Keyspaces テーブルの現在のウォームスループット値を増やすことができます AWS CLI。

------
#### [ Console ]

**コンソールを使用してテーブルの事前ウォーム設定を増やす方法**

1. にサインインし AWS マネジメントコンソール、[https://console.aws.amazon.com/keyspaces/home](https://console.aws.amazon.com/keyspaces/home) で Amazon Keyspaces コンソールを開きます。

1. ナビゲーションペインで、**テーブル**を選択し、更新するテーブルを選択します。

1. テーブルの**キャパシティ**タブで、**テーブルの事前ウォーミング**に進みます。

1. **テーブルの事前ウォーミング**セクションで、**編集** を選択します。

1. **テーブルの事前ウォーミングの編集**ページで、1 **秒あたりの読み取り単位と 1** **秒あたりの書き込み単位**の値を更新できます。

1. **[Save changes]** (変更の保存) をクリックします。テーブルは、指定された事前ウォーミング設定で更新されます。

------
#### [ Cassandra Query Language (CQL) ]

**CQL を使用してテーブルのウォームスループット設定を増やす**
+ `ALTER TABLE`ステートメントを使用して、テーブルのウォームスループットを向上させます。以下のステートメントは、この例です。

  ```
  ALTER TABLE catalog.book_awards 
  WITH CUSTOM_PROPERTIES = {
      'warm_throughput': {  
          'read_units_per_second': 60000,  
          'write_units_per_second': 30000  
      }
  };
  ```

  テーブルの更新された容量設定を確認するには、「」を参照してください[Amazon Keyspaces テーブルのウォームスループットを表示する](view-warm-throughput.md)。

------
#### [ CLI ]

**を使用してテーブルの事前ウォーミング設定を増やす AWS CLI**
+ テーブルのウォームスループットを増やすには、 `update-table` コマンドを使用できます。以下のステートメントは、この例です。

  ```
  aws keyspaces update-table \
  --keyspace-name 'catalog' \
  --table-name 'book_awards' \
  --warmThroughputSpecification readUnitsPerSecond=60000,writeUnitsPerSecond=30000
  ```

  テーブルの更新された容量設定を確認するには、「」を参照してください[Amazon Keyspaces テーブルのウォームスループットを表示する](view-warm-throughput.md)。

------
#### [ Java ]

**SDK for Java を使用してテーブルの事前ウォーミング設定を更新します。**
+ テーブルのウォームスループット設定を更新します。次のコード例は、この例です。

  ```
  import software.amazon.awssdk.services.keyspaces.KeyspacesClient;
  import software.amazon.awssdk.services.keyspaces.model.*;
  
  public class UpdatePreWarmingExample {
      public static void main(String[] args) {
          KeyspacesClient keyspacesClient = KeyspacesClient.builder().build();
  
          // Define new warm throughput specification
          WarmThroughputSpecification warmThroughput = WarmThroughputSpecification.builder()
              .readUnitsPerSecond(60000L)
              .writeUnitsPerSecond(30000L)
              .build();
  
          // Update table with new PreWarming settings
          UpdateTableRequest request = UpdateTableRequest.builder()
              .keyspaceName("catalog")
              .tableName("book_awards")
              .warmThroughputSpecification(warmThroughput)
              .build();
              
          UpdateTableResponse response = keyspacesClient.updateTable(request);
          System.out.println("Table update requested: " + response.resourceArn());
      }
  }
  ```

------

# Amazon Keyspaces テーブルのウォームスループットを表示する
<a name="view-warm-throughput"></a>

コンソール、CQL、または を使用して、Amazon Keyspaces テーブルの現在のウォームスループット値を表示できます AWS CLI。

------
#### [ Console ]

**コンソールを使用してテーブルの事前ウォーミング設定を表示する方法。**

1. にサインインし AWS マネジメントコンソール、[https://console.aws.amazon.com/keyspaces/home](https://console.aws.amazon.com/keyspaces/home) で Amazon Keyspaces コンソールを開きます。

1. ナビゲーションペインで、**テーブル**を選択し、確認するテーブルを選択します。

1. テーブルの**キャパシティ**タブで、**テーブルの事前ウォーミング**に進みます。

------
#### [ Cassandra Query Language (CQL) ]

**CQL を使用してテーブルのウォームスループット設定を表示する**
+ テーブルのウォームスループット設定を表示するには、次の CQL ステートメントを使用できます。

  ```
  SELECT custom_properties
  FROM system_schema_mcs.tables 
  WHERE keyspace_name='catalog' and table_name='book_awards';
  
  // Output:
  ...
  custom_properties
  ----------------------------------------------------------------------------------
  {
      'warm_throughput': 
      {
          'read_units_per_second': '40000', 
          'write_units_per_second': '20000', 
          'status': 'AVAILABLE'
      }
  }
  ...
  ```

------
#### [ CLI ]

**を使用してテーブルのウォームスループット設定を表示する AWS CLI**
+ 次の例に示すように、 `get-table` コマンドを使用してテーブルのウォームスループット設定を表示できます。

  ```
  aws keyspaces get-table \
  --keyspace-name 'catalog' \
  --table-name 'book_awards'
  ```

  以下は、プロビジョニングモードの単一リージョンテーブルの `get-table` コマンドの出力例を示しています。

  ```
  {
      "keyspaceName": "catalog",
      "tableName": "book_awards",
      ... Existing Fields ...,
      "capacitySpecificationSummary": {
          "throughputMode": "PROVISIONED",
          "readCapacityUnits": 20000,
          "writeCapacityUnits": 10000
      },
      "warmThroughputSpecificationSummary": {
          "readUnitsPerSecond": 40000,
          "writeUnitsPerSecond": 20000,
          "status": "AVAILABLE"
      }
  }
  ```

  オンデマンドモードの単一リージョンテーブルの出力例を次に示します。

  ```
  {
      "keyspaceName": "catalog",
      "tableName": "book_awards_ondemand",
      ... Existing Fields ...,
      "capacitySpecification": {
          "throughputMode": "PAY_PER_REQUEST"
      },
      "warmThroughputSpecificationSummary": {
          "readUnitsPerSecond": 40000,
          "writeUnitsPerSecond": 20000,
          "status": "AVAILABLE"
      }
  }
  ```

------
#### [ Java ]

**SDK for Java を使用して、テーブルの事前ウォーミング設定を読み取ります。**
+ を使用してテーブルのウォームスループット値を読み取ります`get-table`。次のコード例は、この例です。

  ```
  import software.amazon.awssdk.services.keyspaces.KeyspacesClient;
  import software.amazon.awssdk.services.keyspaces.model.*;
  
  public class GetTableWithPreWarmingExample {
      public static void main(String[] args) {
          KeyspacesClient keyspacesClient = KeyspacesClient.builder().build();
  
          // Get table details including PreWarming specification
          GetTableRequest request = GetTableRequest.builder()
              .keyspaceName("catalog")
              .tableName("book_awards")
              .build();
              
          GetTableResponse response = keyspacesClient.getTable(request);
          
          // Access PreWarming details
          if (response.warmThroughputSpecification() != null) {
              WarmThroughputSpecificationSummary warmThroughputSummary = response.warmThroughputSpecification();
              System.out.println("PreWarming Status: " + warmThroughputSummary.status());
              System.out.println("Read Units: " + warmThroughputSummary.readUnitsPerSecond());
              System.out.println("Write Units: " + warmThroughputSummary.writeUnitsPerSecond());
              
              // Check if PreWarming is active
              if (warmThroughputSummary.status().equals("AVAILABLE")) {
                  System.out.println("Table is fully pre-warmed and ready for high throughput");
              } else if (warmThroughputSummary.status().equals("UPDATING")) {
                  System.out.println("Table PreWarming is currently being updated");
              }
          } else {
              System.out.println("Table does not have PreWarming enabled");
          }
      }
  }
  ```

------

# Amazon CloudWatch を使用して事前ウォーミングされたテーブルのパフォーマンスをモニタリングする
<a name="monitor-prewarming-cloudwatch"></a>

Amazon Keyspaces の事前ウォーミングでは新しい CloudWatch メトリクスは導入されませんが、既存の Amazon Keyspaces メトリクスを使用して事前ウォーミングされたテーブルのパフォーマンスをモニタリングできます。

SuccessfulRequestLatency  
このメトリクスをモニタリングして、事前ウォーミングされたテーブルが予想されるレイテンシーでリクエストを処理していることを確認します。

WriteThrottleEvents と ReadThrottleEvents  
これらのメトリクスは、適切に事前ウォーミングされたテーブルでは低いままにする必要があります。事前ウォーミングにもかかわらず容量不足エラーが発生した場合は、ウォームスループット値を調整する必要がある場合があります。

ConsumedReadCapacityUnits と ConsumedWriteCapacityUnits  
これらのメトリクスは容量の実際の消費量を示しています。これは、事前ウォーミング設定が適切かどうかを検証するのに役立ちます。

ProvisionedReadCapacityUnits と ProvisionedWriteCapacityUnits  
プロビジョニングされたテーブルの場合、これらのメトリクスには現在割り当てられている容量が表示されます。

これらのメトリクスは、CloudWatch コンソールで表示することも、CloudWatch API を使用してクエリすることもできます。詳細については、「[Amazon CloudWatch による Amazon Keyspaces のモニタリング](monitoring-cloudwatch.md)」を参照してください。