無限ノック › DVA 練習問題一覧 › 問題
DVAトラブルシューティングと最適化

あるアプリケーションは、DynamoDBテーブル(プロビジョニングモード)に対して書き込みを行っています。テーブルにはGSIが1つ設定されています。最近、ベーステーブルへの書き込みで断続的にProvisionedThroughputExceededExceptionが発生しますが、ベーステーブル自体の消費WCUはプロビジョニング値に達していません。CloudWatchメトリクスでは、GSIの消費WCUがプロビジョニング値に張り付いています。この問題を解決する最も適切な方法はどれですか。

A
GSIのプロビジョニングされたWCUを増やすか、テーブルをオンデマンドモードに変更する
✓ 正解
GSIのWCUが不足するとベーステーブルの書き込みまでスロットリングされる(バックプレッシャー)。GSIのWCU増加またはオンデマンド化でGSI側の容量不足を解消すれば、ベーステーブルの書き込み失敗も併せて解消する。
B
ベーステーブルのプロビジョニングされたWCUを増やして書き込みスループットを確保する
ベーステーブルの消費WCUはプロビジョニング値に達しておらず、ベーステーブルの容量は不足していない。原因はGSI側の容量不足にあるため、ベーステーブルのWCUを増やしてもスロットリングは解消しない。
C
GSIの射影タイプを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生成のオリジナル問題。

無料で演習を始める →
← DVA の問題一覧に戻る