DynamoDB でキャパシティモードを切り替える際の考慮事項
DynamoDB テーブルを作成する場合、オンデマンドまたはプロビジョンドキャパシティモードのいずれかを選択する必要があります。
テーブルは、オンデマンドモードからプロビジョンドキャパシティモードにいつでも切り替えることができます。キャパシティモード間で複数の切り替えを行う場合は、次の条件が適用されます。
-
オンデマンドモードで新しく作成したテーブルは、いつでもプロビジョンドキャパシティモードに切り替えることができます。ただし、オンデマンドモードに戻すことができるのは、テーブルの作成タイムスタンプから 24 時間後のみです。
-
オンデマンドモードの既存のテーブルは、いつでもプロビジョンドキャパシティモードに切り替えることができます。ただし、オンデマンドモードに戻すことができるのは、オンデマンドへの切り替えを示す最後のタイムスタンプから 24 時間後のみです。
プロビジョンドキャパシティモードからオンデマンドキャパシティモードへの切り替え
プロビジョンドモードでは、予想されるアプリケーションのニーズに基づいて読み込みおよび書き込みキャパシティを設定します。テーブルをプロビジョニングモードからオンデマンドモードに更新するときは、アプリケーションで実行することが予測される読み込みおよび書き込みスループットを指定する必要はありません。DynamoDB オンデマンドは、読み込みおよび書き込みリクエストの料金が従量制であるため、使用した分だけを支払います。これにより、コストとパフォーマンスのバランスを簡単に取ることができます。オプションで、個々のオンデマンドテーブルおよび関連するグローバルセカンダリインデックスの読み込みや書き込み (または両方) の最大スループットを設定して、コストと使用量を制限し続けることができます。特定のテーブルやインデックスの最大スループットの設定の詳細については、「オンデマンドテーブルの DynamoDB 最大スループット」を参照してください。
プロビジョンドキャパシティモードからオンデマンドキャパシティモードに切り替えると、DynamoDB は、テーブルやパーティションの構造にいくつかの変更を行います。この処理には数分かかることもあります。切り替え期間中、テーブルは以前にプロビジョニングされた書き込みキャパシティーユニットおよび読み込みキャパシティーユニットの両方と整合性のあるスループットを提供します。
オンデマンドキャパシティモードの初期スループット
最近、既存のテーブルをオンデマンドキャパシティモードに初めて切り替えた場合、テーブルがオンデマンドキャパシティモードを使用してトラフィックを以前に処理していなくても、テーブルは次に示す以前のピーク設定を持ちます。
考えられるシナリオの例を以下に示します。
-
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 の読み込みユニット/秒を維持できます。
自動スケーリング設定
テーブルをプロビジョニングモードからオンデマンドモードに更新すると、以下のようになります。
-
コンソールを使用している場合、Auto Scaling 設定 (ある場合) がすべて削除されます。
-
AWS CLI または AWS SDK を使用している場合、Auto Scaling 設定はすべて保持されます。これらの設定は、テーブルをもう一度プロビジョニングされた請求モードに更新すると適用できます。
オンデマンドキャパシティモードからプロビジョンドキャパシティモードへの切り替え
オンデマンドキャパシティーモードからプロビジョンドキャパシティーモードに戻すと、テーブルは、テーブルがオンデマンドキャパシティーモードに設定されたときに到達した前のピークと整合性のあるスループットを提供します。
容量の管理
テーブルをオンデマンドモードからプロビジョニングモードに更新するときは、以下の点を考慮に入れてください。
-
AWS CLI または AWS SDK を使用している場合、Amazon CloudWatch を使用して消費履歴 (
ConsumedWriteCapacityUnits
およびConsumedReadCapacityUnits
メトリクス) を参照し、新しいスループット設定を決定することで、テーブルおよびグローバルセカンダリインデックスのプロビジョンされた適切な容量設定を選択します。注記
グローバルテーブルからプロビジョニングモードに切り替える場合、すべてのリージョンレプリカにわたって基本テーブルおよびグローバルセカンダリインデックスの最大消費量を調べた上で、新しいスループット設定を決定します。
-
オンデマンドモードからプロビジョンドモードに戻す場合は、移行中にテーブルまたはインデックスのキャパシティを処理できるように、最初のプロビジョンドユニットを十分高い値に設定してください。
Auto Scaling の管理
テーブルをオンデマンドモードからプロビジョニングモードに更新すると、以下のようになります。
-
コンソールを使用する場合は、以下のデフォルトで自動スケーリングを有効にすることをお勧めします。
-
目標使用率: 70%
-
プロビジョニングされた最小キャパシティー: ユニット 5 個
-
プロビジョニングされた最大キャパシティー: リージョンの最大値
-
-
AWS CLI または SDK を使用している場合、前の Auto Scaling 設定 (ある場合) が保持されます。