

# DynamoDB でキャパシティモードを切り替える際の考慮事項
<a name="bp-switching-capacity-modes"></a>

DynamoDB テーブルを作成する場合、オンデマンドまたはプロビジョンドキャパシティモードのいずれかを選択する必要があります。

24 時間のローリングウィンドウで、テーブルをプロビジョンドキャパシティモードからオンデマンドモードに最大 4 回切り替えることができます。テーブルは、オンデマンドモードからプロビジョンドキャパシティモードにいつでも切り替えることができます。

**Topics**
+ [プロビジョンドキャパシティモードからオンデマンドキャパシティモードへの切り替え](#switch-provisioned-to-ondemand)
+ [オンデマンドキャパシティモードからプロビジョンドキャパシティモードへの切り替え](#switch-ondemand-to-provisioned)

## プロビジョンドキャパシティモードからオンデマンドキャパシティモードへの切り替え
<a name="switch-provisioned-to-ondemand"></a>

プロビジョンドモードでは、予想されるアプリケーションのニーズに基づいて読み込みおよび書き込みキャパシティを設定します。テーブルをプロビジョニングモードからオンデマンドモードに更新するときは、アプリケーションで実行することが予測される読み込みおよび書き込みスループットを指定する必要はありません。DynamoDB オンデマンドは、読み込みおよび書き込みリクエストの料金が従量制であるため、使用した分だけを支払います。これにより、コストとパフォーマンスのバランスを簡単に取ることができます。オプションで、個々のオンデマンドテーブルおよび関連するグローバルセカンダリインデックスの読み込みや書き込み (または両方) の最大スループットを設定して、コストと使用量を制限し続けることができます。特定のテーブルやインデックスの最大スループットの設定の詳細については、「[オンデマンドテーブルの DynamoDB 最大スループット](on-demand-capacity-mode-max-throughput.md)」を参照してください。

プロビジョンドキャパシティモードからオンデマンドキャパシティモードに切り替えると、DynamoDB は、テーブルやパーティションの構造にいくつかの変更を行います。この処理には数分かかることもあります。切り替え期間中、テーブルは以前にプロビジョニングされた書き込みキャパシティーユニットおよび読み込みキャパシティーユニットの両方と整合性のあるスループットを提供します。

### オンデマンドキャパシティモードの初期スループット
<a name="initial-throughput-ondemand-mode"></a>

最近、既存のテーブルをオンデマンドキャパシティモードに初めて切り替えた場合、テーブルがオンデマンドキャパシティモードを使用してトラフィックを以前に処理していなくても、テーブルは次に示す以前のピーク設定を持ちます。

考えられるシナリオの例を以下に示します。
+ **4,000 の WCU と 12,000 の RCU 未満に設定されたプロビジョンドテーブルが、これまでにそれを超える値にプロビジョニングされたことがない場合。**このテーブルを初めてオンデマンドに切り替えると、DynamoDB は、少なくとも 4,000 の書き込みユニット/秒、12,000 の読み込みユニット/秒を即座に維持できるようにスケールアウトします。
+ **8,000 の WCU と 24,000 の RCU に設定されたプロビジョンドテーブルの場合。**このテーブルをオンデマンドに切り替えると、少なくとも 8,000 の書き込みユニット/秒、24,000 の読み込みユニット/秒を引き続き維持できます。
+ **8,000 WCU と 24,000 RCU で設定されたプロビジョンドテーブルが、一定期間にわたり 6,000 の書き込みユニット/秒、18,000 の読み込みユニット/秒を消費した場合。**このテーブルをオンデマンドに切り替えると、少なくとも 8,000 の書き込みユニット/秒、24,000 の読み込みユニット/秒を引き続き維持できます。以前のトラフィックにより、このテーブルはスロットリングなしではるかに高いレベルのトラフィックを維持できる可能性があります。
+ **以前は 10,000 の WCU と 10,000 の RCU でプロビジョニングされていたテーブルが、現在は 10 の RCU と 10 の WCU でプロビジョニングされている場合。**このテーブルをオンデマンドに切り替えると、少なくとも 10,000 の書き込みユニット/秒、10,000 の読み込みユニット/秒を維持できます。

### 自動スケーリング設定
<a name="autoscaling-settings"></a>

テーブルをプロビジョニングモードからオンデマンドモードに更新すると、以下のようになります。
+ コンソールを使用している場合、Auto Scaling 設定 (ある場合) がすべて削除されます。
+ AWS CLI または AWS SDK を使用している場合、Auto Scaling 設定はすべて保持されます。これらの設定は、テーブルをもう一度プロビジョニングされた請求モードに更新すると適用できます。

### [DynamoDB コンソール](https://console.aws.amazon.com/dynamodb)でのキャパシティモードの一括編集
<a name="bulk-edit-capacity-mode"></a>

[DynamoDB コンソール](https://console.aws.amazon.com/dynamodb)を使用して、複数のテーブルを一括編集して、プロビジョンドキャパシティモードからオンデマンドキャパシティモードに切り替えることができます。キャパシティモードを一括編集するには。

1. DynamoDB コンソールで **[テーブル]** ページに移動します。

1. オンデマンドキャパシティモードに更新するテーブルのチェックボックスをオンにします。

1. **[アクション]** を選択し、**[オンデマンドキャパシティモードへの更新]** を選択します。

この一括オペレーションにより、各テーブルを個別に更新することなく、複数のテーブルをオンデマンドキャパシティモードに効率的に切り替えることができます。

## オンデマンドキャパシティモードからプロビジョンドキャパシティモードへの切り替え
<a name="switch-ondemand-to-provisioned"></a>

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

### 容量の管理
<a name="switch-ondemand-capacity"></a>

テーブルをオンデマンドモードからプロビジョニングモードに更新するときは、以下の点を考慮に入れてください。
+  AWS CLI または AWS SDK を使用している場合、Amazon CloudWatch を使用して消費履歴 (`ConsumedWriteCapacityUnits` および `ConsumedReadCapacityUnits` メトリクス) を参照し、新しいスループット設定を決定することで、テーブルおよびグローバルセカンダリインデックスのプロビジョンされた適切な容量設定を選択します。
**注記**  
グローバルテーブルからプロビジョニングモードに切り替える場合、すべてのリージョンレプリカにわたって基本テーブルおよびグローバルセカンダリインデックスの最大消費量を調べた上で、新しいスループット設定を決定します。
+ オンデマンドモードからプロビジョンドモードに戻す場合は、移行中にテーブルまたはインデックスのキャパシティを処理できるように、最初のプロビジョンドユニットを十分高い値に設定してください。

### Auto Scaling の管理
<a name="switch-ondemand-autoscaling"></a>

テーブルをオンデマンドモードからプロビジョニングモードに更新すると、以下のようになります。
+ コンソールを使用する場合は、以下のデフォルトで自動スケーリングを有効にすることをお勧めします。
  + 目標使用率: 70%
  + プロビジョニングされた最小キャパシティー: ユニット 5 個
  + プロビジョニングされた最大キャパシティー: リージョンの最大値
+  AWS CLI または SDK を使用している場合、前の Auto Scaling 設定 (ある場合) が保持されます。