科目A-2(多肢選択式)
複数のアプリケーションから同一のデータベースの複数テーブルを更新するトランザクションで、互いに相手がロックしている行を待ち合う状態が頻発し、デッドロックが発生している。設計上の対策として最も適切なものはどれか。
- Aすべてのトランザクションでロック粒度をテーブル単位に拡大する
- Bトランザクションの分離レベルをREAD UNCOMMITTEDに変更する
- Cロック取得のタイムアウト時間を無制限にする
- ✓トランザクションごとにテーブルへのアクセス順序を統一する
解説
デッドロックは複数のトランザクションが異なる順序でロックを取得することで発生しやすい。すべてのトランザクションでテーブルへのアクセス順序を統一すれば、循環待ちの発生を防止できる。
根拠システムアーキテクト試験 出題範囲「3.期待する技術水準」: OS、データベース、ネットワーク、セキュリティなどにかかわる基本的要素技術に関する知見をもつ(データベース設計における排他制御)。