DVAトラブルシューティングと最適化
あるアプリケーションは、DynamoDBテーブル(プロビジョニングモード)に対して書き込みを行っています。テーブルにはGSIが1つ設定されています。最近、ベーステーブルへの書き込みで断続的にProvisionedThroughputExceededExceptionが発生しますが、ベーステーブル自体の消費WCUはプロビジョニング値に達していません。CloudWatchメトリクスでは、GSIの消費WCUがプロビジョニング値に張り付いています。この問題を解決する最も適切な方法はどれですか。
AGSIのプロビジョニングされたWCUを増やすか、テーブルをオンデマンドモードに変更する
✓ 正解
GSIのWCUが不足するとベーステーブルの書き込みまでスロットリングされる(バックプレッシャー)。GSIのWCU増加またはオンデマンド化でGSI側の容量不足を解消すれば、ベーステーブルの書き込み失敗も併せて解消する。
BベーステーブルのプロビジョニングされたWCUを増やして書き込みスループットを確保する
ベーステーブルの消費WCUはプロビジョニング値に達しておらず、ベーステーブルの容量は不足していない。原因はGSI側の容量不足にあるため、ベーステーブルのWCUを増やしてもスロットリングは解消しない。
CGSIの射影タイプをKEYS_ONLYからALLに変更し、書き込みを分散させる
射影タイプをALLにするとGSIへ書き込むデータ量が増え、必要WCUはむしろ増加する。書き込みは分散されずGSIのスロットリングを悪化させるため、問題解決には逆効果となる。
DベーステーブルのプロビジョニングされたRCUを増やして読み取り容量を確保する
発生しているのは書き込み(WCU)のスロットリングであり、RCUは読み取り容量を指す。RCUを増やしても書き込みスループットには影響せず、ProvisionedThroughputExceededExceptionは解消しない。
解説
GSIに書き込み容量が不足すると、ベーステーブルへの書き込みがバックプレッシャーによってスロットリングされる。これはGSIの更新が追いつかなくなるのを防ぐためのDynamoDBの仕様である。
GSIのWCUを十分にプロビジョニングするか、テーブルをオンデマンドモードにしてGSI側の容量を自動調整させれば、ベーステーブルの書き込み失敗も解消する。
選択肢Bのベーステーブルへの対処は原因に当たらない。
選択肢Cの射影変更は逆効果。
選択肢DのRCUは読み取り容量で無関係。
ドメイン別正答率・予想スコアでリアルタイムに実力把握
無限ノックでDVAを徹底対策。全問AI生成のオリジナル問題。
無料で演習を始める →