あるDynamoDBテーブルで断続的に `ProvisionedThroughputExceededException` が発生しています。CloudWatchで確認すると、テーブル全体の消費キャパシティはプロビジョニングされた値を大きく下回っています。この問題の最も可能性の高い原因はどれですか?
特定のパーティションキー値にアクセスが集中するホットパーティションが発生している。 DynamoDBは内部的にデータをパーティションに分散しますが、テーブル全体のスループットは各パーティションに均等に割り当てられます。特定のパーティションキーへのアクセスが集中すると(ホットパーティション)、そのパーティションだけがスロットリングされます。テーブル全体の消費量がプロビジョニング値を下回っていてもパーティション単位では上限を超えることがあるため、パーティションキー設計の見直しや書き込みシャーディングが解決策となります。 選択肢B(GSI(グローバルセカンダリインデックス)のキャパシティ不足)が原因であれば CloudWatch で GSI 固有の消費メトリクスに異常が現れますが、テーブル全体の消費量が低い状況では根本原因として合致しません。 選択肢C(DynamoDBのバーストキャパシティ枯渇)はプロビジョニング値を超えた短時間の負荷スパイクを補う機能に関するものであり、テーブル全体の消費量がプロビジョニング値を大きく下回っている場合は該当しません。 選択肢D(テーブルのオートスケーリング未設定)はキャパシティ全体が不足する場合に問題となりますが、全体消費量がプロビジョニング値を下回っている状況ではスケール不足ではなくパーティション偏りが問題です。