

# オンデマンドテーブルの DynamoDB 最大スループット
<a name="on-demand-capacity-mode-max-throughput"></a>

オンデマンドテーブルの場合、オプションで、個々のテーブルおよび関連するグローバルセカンダリインデックス (GSI) の 1 秒あたりの読み込みまたは書き込み (または両方) の最大スループットを指定できます。オンデマンドの最大スループットを指定すると、テーブルレベルの使用量とコストを制限できます。デフォルトでは、最大スループットの設定は適用されません。オンデマンドのスループットレートは、アカウント内のすべてのテーブルでテーブルレベルの読み取りおよび書き込みスループットに対する 40,000 の [AWS サービスクォータ](ServiceQuotas.md#default-limits-throughput)によって制限されます。必要に応じて、サービスクォータの引き上げをリクエストできます。

オンデマンドテーブルの最大スループットを設定すると、指定した最大量を超えるスループットリクエストはスロットリングされます。テーブルレベルのスループット設定は、アプリケーションの要件に応じていつでも変更できます。

オンデマンドテーブルの最大スループットを使用することでメリットを得られる一般的なユースケースの例は以下のとおりです。
+ **スループットのコスト最適化** — オンデマンドテーブルの最大スループットを使用すると、コスト予測可能性と管理可能性を高めることができます。さらに、トラフィックパターンと予算が異なるワークロードをサポートするために、オンデマンドモードを使用する柔軟性も高まります。
+ **過剰な使用からの保護** – 最大スループットを設定することで、オンデマンドテーブルに対する最適化されていないコードや不正なプロセスに伴う読み込みや書き込みの消費量の偶発的な急増を防止できます。このテーブルレベルの設定により、組織は特定の期間にわたる過剰なリソースの消費を防止できます。
+ **ダウンストリームサービスの保護** — 顧客アプリケーションには、サーバーレステクノロジーと非サーバーレステクノロジーを含めることができます。サーバーレスアーキテクチャは、需要に合わせて迅速にスケールできます。ただし、固定キャパシティを持つダウンストリームコンポーネントでは、対応できなくなる場合があります。オンデマンドテーブルに最大スループット設定を実装すると、複数のダウンストリームコンポーネントに対する大量のイベントの伝播に伴う予期しない副作用を防止できます。

オンデマンドモードの最大スループットは、新規および既存の単一リージョンのテーブル、グローバルテーブル、GSI に対して設定できます。最大スループットは、Amazon S3 ワークフローからのテーブルの復元時とデータのインポート時にも設定できます。

オンデマンドテーブルの最大スループット設定を指定するには、[DynamoDB コンソール](https://console.aws.amazon.com/dynamodb/)、[AWS CLI](AccessingDynamoDB.md#Tools.CLI)、[AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html)、または [DynamoDB API](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/Welcome.html) を使用できます。

**注記**  
オンデマンドテーブルの最大スループットは、ベストエフォートベースで適用されるため、保証されたリクエストの上限としてではなく、目標として考える必要があります。[バーストキャパシティ](burst-adaptive-capacity.md#burst-capacity)により、ワークロードが、指定した最大スループットを一時的に超える場合があります。**場合によっては、DynamoDB がバーストキャパシティを使用して、テーブルの最大スループット設定を超える読み込みや書き込みに対応します。**バーストキャパシティーにより、スロットリングされていた可能性のある読み込みまたは書き込みリクエストが成功します。

**Topics**
+ [オンデマンドモードの最大スループットを使用する際の考慮事項](#consideration-use-max-throughput-ondemand)
+ [リクエストのスロットリングと CloudWatch メトリクス](#max-throughput-ondemand-request-throttle)

## オンデマンドモードの最大スループットを使用する際の考慮事項
<a name="consideration-use-max-throughput-ondemand"></a>

オンデマンドモードでテーブルの最大スループットを使用する場合、次の考慮事項が適用されます。
+ オンデマンドテーブルまたはテーブル内のグローバルセカンダリインデックスごとに読み込みと書き込みの最大スループットを個別に設定し、特定の要件に基づいてアプローチを微調整できます。
+ Amazon CloudWatch を使用して、DynamoDB テーブルレベルの使用状況メトリクスをモニタリングおよび把握し、オンデマンドモードの適切な最大スループット設定を決定できます。詳細については、「[DynamoDB のメトリクスとディメンション](metrics-dimensions.md)」を参照してください。
+ 1 つのグローバルテーブルレプリカで読み込みや書き込み (または両方) の最大スループット設定を指定すると、同じ最大スループット設定がすべてのレプリカテーブルに自動的に適用されます。データが適切にレプリケートされるように、グローバルテーブル内のレプリカテーブルとセカンダリインデックスの書き込みスループット設定が同じであることが重要です。詳細については、「[グローバルテーブルのベストプラクティス](globaltables-bestpractices.md)」を参照してください。
+ 読み込みまたは書き込みの最大スループットとして指定できる最小値は、1 秒あたり 1 つのリクエストユニットです。
+ 指定する最大スループットは、オンデマンドテーブルまたはテーブル内の個別のグローバルセカンダリインデックスで使用できるデフォルトのスループットクォータより小さくする必要があります。

## リクエストのスロットリングと CloudWatch メトリクス
<a name="max-throughput-ondemand-request-throttle"></a>

アプリケーションがオンデマンドテーブルに設定した読み込みまたは書き込みの最大スループットを超えると、DynamoDB はリクエストのスロットリングを開始します。DynamoDB は、読み込みや書き込みをスロットリングすると、発信者に `ThrottlingException` を返します。その後、必要に応じて適切なアクションを実行できます。例えば、テーブルの最大スループット設定を増加または無効化したり、リクエストを再試行する前に短い間待ったりできます。

テーブルまたはグローバルセカンダリインデックスに設定した最大スループットのモニタリングを簡素化するために、CloudWatch はメトリクスとして [OnDemandMaxReadRequestUnits](metrics-dimensions.md#OnDemandMaxReadRequestUnits) と [OnDemandMaxWriteRequestUnits](metrics-dimensions.md#OnDemandMaxWriteRequestUnits) を提供しています。