ホーム > データベーススペシャリスト試験 > 2020年
データベーススペシャリスト試験 2020年 午前2 問14
同時実行制御の手法の一種である楽観的制御法に関する記述として適切なものはどれか。
ア:データに対して順序付けを行い、その順序に従ってロックを掛ける。
イ:データに対してのロックは行わずに、更新対象のデータが他のトランザクションと競合がなかったことを確認してからコミットを行う。(正解)
ウ:分散データベースシステムにおいて、コミット可否の問合せをした上で、コミット指示を行う。
エ:ロックが増加していく成長フェーズである第1相と、ロックが減少していく縮退フェーズである第2相の2相制御を行う。
解説
同時実行制御の手法の一種である楽観的制御法に関する記述【午前2 解説】
要点まとめ
- 結論:楽観的制御法はロックを使わず、競合がなければコミットする手法です。
- 根拠:更新時に競合チェックを行い、問題なければ処理を確定するため、ロックのオーバーヘッドが少ないです。
- 差がつくポイント:ロックを使う悲観的制御法との違いを理解し、楽観的制御法の特徴を正確に把握することが重要です。
正解の理由
選択肢イは「データに対してのロックは行わずに、更新対象のデータが他のトランザクションと競合がなかったことを確認してからコミットを行う」と述べています。これは楽観的制御法の本質を正しく表現しています。楽観的制御法は、トランザクションの実行中はロックを掛けず、コミット直前に競合の有無を検証し、問題があればロールバックします。これにより、ロックによる待ち時間を減らし、並行性を高めることが可能です。
よくある誤解
楽観的制御法はロックを全く使わないわけではなく、コミット時に競合検査を行うため、場合によってはロールバックが発生します。悲観的制御法と混同しやすい点に注意が必要です。
解法ステップ
- 問題文の「楽観的制御法」に注目し、特徴を思い出す。
- 楽観的制御法は「ロックを掛けずに処理を進める」ことを確認。
- 各選択肢の内容をロックの有無や競合検査のタイミングで比較。
- ロックを使わず、コミット前に競合を確認する選択肢を選ぶ。
- 選択肢イがこれに該当するため正解と判断。
選択肢別の誤答解説
- ア: データに順序付けてロックを掛けるのは悲観的制御法の一種であり、楽観的制御法ではない。
- イ: 正解。ロックを使わず、コミット前に競合を確認する楽観的制御法の特徴を正しく表している。
- ウ: 分散データベースのコミット可否問い合わせは2相コミットプロトコルの説明であり、楽観的制御法とは異なる。
- エ: ロックの増減を管理する2相制御は悲観的制御法の代表的手法で、楽観的制御法とは異なる。
補足コラム
楽観的制御法は、トランザクションの競合が少ない環境で効果的です。競合が多い場合はロールバックが頻発し、逆に性能が低下することがあります。一方、悲観的制御法は競合が多い環境で安定した動作をします。システムの特性に応じて使い分けることが重要です。
FAQ
Q: 楽観的制御法はなぜロックを使わないのですか?
A: ロックによる待ち時間やデッドロックを避け、並行性を高めるためです。競合はコミット時に検査します。
A: ロックによる待ち時間やデッドロックを避け、並行性を高めるためです。競合はコミット時に検査します。
Q: 競合があった場合、楽観的制御法はどうなりますか?
A: 競合が検出されると、そのトランザクションはロールバックされ、再実行が必要になります。
A: 競合が検出されると、そのトランザクションはロールバックされ、再実行が必要になります。
関連キーワード: 同時実行制御, 楽観的制御法, 悲観的制御法, トランザクション, 競合検査, 2相制御, 2相コミット