DVAトラブルシューティングと最適化
eコマースアプリケーションがDynamoDBテーブルを使用しており、パーティションキーに `product_category`(商品カテゴリ)、ソートキーに `product_id` を使用しています。テーブル全体のWCU(書き込みキャパシティユニット)使用率はプロビジョニング値の20%程度ですが、フラッシュセール時に特定カテゴリへの書き込みで `ProvisionedThroughputExceededException` が頻発します。このエラーの根本原因はどれですか?
ADynamoDBのバーストキャパシティが枯渇している
バーストキャパシティはむしろ一時的なスループット超過を吸収して緩和する仕組みであり、枯渇が直接の原因とは言えません。根本原因は特定パーティションへの書き込み集中によるホットパーティションです。
Bソートキーのカーディナリティ(値の種類数)が不足している
ソートキーのカーディナリティはアイテムの並び順に関係しますが、パーティション分割やパーティション単位のスループット上限には直接影響しないため、本スロットリングの原因ではありません。
C人気カテゴリに書き込みが集中し、特定パーティションのスループット上限を超過している(ホットパーティション)
✓ 正解
DynamoDBの各パーティションには最大1000WCU/3000RCUの上限があります。product_categoryをパーティションキーにすると人気カテゴリへ書き込みが集中し、テーブル全体の使用率が低くても特定パーティションの上限を超えスロットリングが発生します。
Dグローバルセカンダリインデックス(GSI)が書き込みキャパシティを消費している
GSIは独自のWCUを消費しますが、本問のように基底テーブルの特定パーティションへ書き込みが集中して発生するスロットリングの根本原因ではありません。解決策はパーティションキーへのランダムサフィックス追加(ライトシャーディング)です。
解説
DynamoDBの各パーティションにはスループット上限(1パーティションあたり最大1000WCU / 3000RCU)があります。`product_category` をパーティションキーにすると人気カテゴリへの書き込みが集中するホットパーティション問題が発生します。テーブル全体の使用率が低くても特定パーティションの上限を超えるとスロットリングが起きます。
選択肢AのDynamoDBのバーストキャパシティの枯渇は、この問題の原因ではありません。
選択肢BのソートキーのカーディナリティはDynamoDBのパーティション分割に直接影響しない要因です。
選択肢DのグローバルセカンダリインデックスはWCUを消費しますが、この問題の根本原因ではありません。
解決策としてパーティションキーへのランダムサフィックス追加(ライトシャーディング)が有効です。
ドメイン別正答率・予想スコアでリアルタイムに実力把握
無限ノックでDVAを徹底対策。全問AI生成のオリジナル問題。
無料で演習を始める →