メニュー
Amazon DynamoDB
開発者ガイド (API Version 2012-08-10)

読み取りと書き込みのスループット設定

DynamoDB で新しいテーブルを作成する際は、プロビジョニングされたスループットのキャパシティ(テーブルがサポートできる読み込みおよび書き込みアクティビティの量)を指定する必要があります。DynamoDB はこの情報を使用し、スループット要件を満たすのに十分なシステムリソースを予約します。

注記

オプションで DynamoDB Auto Scaling を許可してテーブルのスループットキャパシティを管理できますが、この場合もテーブル作成時には読み取りおよび書き込みキャパシティの初期設定を指定する必要があります。DynamoDB Auto Scaling はこれらの初期設定を開始点として使用した後、アプリケーションの要件に応じて設定を動的に調整します。

詳細については、「DynamoDB Auto Scaling によるスループットキャパシティの自動管理」を参照してください。

DynamoDB では、自動的にテーブルパーティション全体にデータが分散され、AWS Cloud の複数のサーバーに格納されます。 (詳細については、「パーティションとデータ分散」を参照してください)。最適なスループットを実現するために、これらのパーティション全体にできるだけ均一に読み込みリクエストを分散する必要があります。例えば、10,000 ユニットの読み取りキャパシティーでテーブルをプロビジョニングしているとします。テーブル内の単一の項目に 10,000 の読み取りリクエストを発行すると、すべての読み込みアクティビティが単一のパーティションに集中します。ただし、リクエストの対象をテーブル内のすべての項目に広げると、DynamoDB は並列でパーティションにアクセスできます。

アプリケーションデータとアクセス要件が変わると、テーブルのスループット設定を変更しなければならない場合があります。DynamoDB Auto Scaling を使用している場合、スループット設定は実際のワークロードに応じて自動的に調整されます。UpdateTable オペレーションを使用し、テーブルのスループットキャパシティを手動で調整することもできます。既存のデータストアから新しい DynamoDB テーブルにデータをバルクロードする必要がある場合などに便利です。大容量の書き込みスループットを設定したテーブルを作成し、データのバルクロードが完了してからこの設定を削減ですることができます。

キャパシティーユニット(アプリケーションが 1 秒あたりに読み込み/書き込みを行うデータ量)についてスループット要件を指定します。これらの設定は必要に応じて後から変更できます。また、DynamoDB Auto Scaling を有効化して自動的に変更することもできます。

読み込みキャパシティーユニット

読み込みキャパシティーユニットは、最大サイズ 4 KB の項目について、1 秒あたり 1 回の強力な整合性のある読み込み、あるいは 1 秒あたり 2 回の結果的に整合性のある読み込みを表します。

注記

DynamoDB 読み込み整合性の詳細については、「読み込み整合性」を参照してください。

例えば、10 ユニットのプロビジョニングされた読み取りキャパシティーでテーブルを作成するとします。これにより、最大 4 KB の項目について、1 秒あたり 10 回の強い整合性のある読み込み、または 20 回の結果的に整合性のある読み込みを行えます。

4 KB を超える項目の読み込みには、より多くの読み取りキャパシティーユニットを消費します。例えば、8 KB(4 KB × 2)の項目の強い整合性のある読み込みは、2 ユニットの読み込みキャパシティーユニットを消費します。同じ項目の結果的に整合性のある読み込みは、読み込みキャパシティーを 1 ユニットしか消費しません。

読み込みの項目サイズは、次の 4 KB の倍数に切り上げられます。例えば、3,500 バイトの項目の読み込みは、4 KB の項目の読み取りと同じスループットを消費します。

書き込みキャパシティーユニット

書き込みキャパシティーユニットは、最大でサイズが 1 KB の項目について、1 秒あたり 1 回の書き込みを表します。

例えば、10 ユニットのプロビジョニングされた書き込みキャパシティーでテーブルを作成するとします。これにより、1 秒あたり最大でサイズが 1 KB の項目について、1 秒あたり 10 回の書き込みを行えます。

書き込みの項目サイズは、次の 1 KB の倍数に切り上げられます。例えば、500 バイトの項目の書き込みは、1 KB の項目の書き込みと同じスループットを消費します。

リクエストのスロットリングとバーストキャパシティー

テーブルがサポートできるよりも高いレートでアプリケーションが読み込みや書き込みを行うと、DynamoDB はこれらのリクエストのスロットリングを開始します。読み込みや書き込みをスロットリングした DynamoDB は、発信者に ProvisionedThroughputExceededException を返します。その後、アプリケーションは、リクエストの再試行前に短時間待機するなど、適切なアクションを実行できます。

注記

ソフトウェア開発には AWS SDK を使用することをお勧めします。AWS SDK は、スロットリングされたリクエストを再試行するための組み込みサポートを提供します。このロジックを自身で記述する必要はありません。詳細については、「エラーの再試行とエクスポネンシャルバックオフ」を参照してください。

DynamoDB コンソールは、テーブルの Amazon CloudWatch メトリクスを表示するため、スロットリングされた読み込みリクエストや書き込みリクエストをモニタリングできます。過剰なスロットリングが発生した場合は、テーブルのプロビジョニングされたスループット設定を増加させることを検討する必要があります。

場合によっては、DynamoDB はバーストキャパシティーを使用し、テーブルのスループット設定を超過する読み込みや書き込みに対応します。バーストキャパシティーにより、スロットリングされていた可能性のある読み込みまたは書き込みリクエストが成功します。バーストキャパシティーはベストエフォートベースで使用されます。DynamoDB は、このキャパシティーが常に使用できることを保証しません。詳細については、「急激に増大するキャパシティーは控えめに使用する」を参照してください。

初期スループット設定の選択

すべてのアプリケーションは、データベースの読み込みおよび書き込みについて異なる要件を持っています。DynamoDB テーブルの初期スループット設定を決定する際は、次を入力することを検討する必要があります。

  • 項目のサイズ。 一部のサイズの小さい項目は、1 ユニットのキャパシティーで読み込みや書き込みできます。アイテムのサイズが大きくなると、複数のキャパシティーユニットが必要になります。テーブルに入る項目のサイズを見積もることにより、テーブルのプロビジョニングされたスループットの正確な設定を指定することができます。

  • 予測される読み込みおよび書き込みリクエストのレート。 項目のサイズに加え、1 秒あたりに必要な読み込みや書き込みの数を見積もる必要があります。

  • 読み込み整合性の要件。 読み込みキャパシティーユニットは、強い整合性のある読み込みオペレーションに基づいています。ただし、このオペレーションには、データベースリソースの消費量は結果整合性のある読み込みの 2 倍になります。アプリケーションが強力な整合性のある読み込みを要求するか、またはこの要件を緩和して結果的に整合性のある読み込み行うかどうかを決定する必要があります (DynamoDB での読み取り操作はデフォルトで結果的に整合性を持ちますが、必要に応じてこれらの操作に強力な整合性のある読み込みをリクエストできます)。

注記

プロビジョニングされたスループットについての推奨事項と関連トピックについては、「テーブルのベストプラクティス」を参照してください。

スループット設定の変更

テーブルの DynamoDB Auto Scaling を有効化している場合は、スループットキャパシティーは実際の使用量に応じて動的に調整されます。手動による介入は必要ありません。

AWS マネジメントコンソール または UpdateTable 操作を使用してテーブルのプロビジョニングされたスループット設定を変更できます。スループットキャパシティーは、必要に応じて何度でも増やすことができます。減らすことができるのは、1 UTC 暦日にテーブルあたり 9 回までです。詳細については、「DynamoDB での制限」を参照してください。