ホーム > データベーススペシャリスト試験 > 2015年
データベーススペシャリスト試験 2015年 午前2 問13
2相ロック方式を用いたトランザクションの同時実行制御に関する記述のうち, 適切なものはどれか。
ア:全てのトランザクションが直列に制御され, デッドロックが発生することはない。
イ:トランザクションのコミット順序は, トランザクション開始の時刻順となるように制御される。
ウ:トランザクションは, 自分が獲得したロックを全て解除した後にだけ, コミット操作を実行できる。
エ:トランザクションは, 必要なロック獲得命令を全て実行した後にだけ, ロック解除命令を実行できる。(正解)
解説
2相ロック方式を用いたトランザクションの同時実行制御【午前2 解説】
要点まとめ
- 結論:2相ロック方式では、トランザクションはロック獲得フェーズとロック解放フェーズを明確に分け、獲得後にのみ解除可能です。
- 根拠:これにより、トランザクションの直列化可能性が保証され、データの整合性が保たれます。
- 差がつくポイント:ロックの獲得と解放の順序を正しく理解し、誤ってロック解除後にコミットできると考えないことが重要です。
正解の理由
選択肢エは「トランザクションは、必要なロック獲得命令を全て実行した後にだけ、ロック解除命令を実行できる」と述べています。これは2相ロック方式の基本原則である「拡張フェーズ(ロック獲得)と縮小フェーズ(ロック解放)が分離されている」ことを正確に表しています。拡張フェーズで必要なロックをすべて獲得し終わった後でなければ、ロックを解除できません。このルールにより、トランザクションの直列化可能性が保証され、データの一貫性が保たれます。
よくある誤解
2相ロック方式はデッドロックを完全に防止するわけではありません。また、コミット順序が開始時刻順になるわけでもありません。ロック解除とコミットの関係も誤解されやすいポイントです。
解法ステップ
- 2相ロック方式の基本概念を確認する(拡張フェーズと縮小フェーズの存在)。
- 拡張フェーズでロックを獲得し、縮小フェーズでロックを解除することを理解する。
- 選択肢の内容がこのルールに合致しているかを判断する。
- デッドロックの有無やコミット順序の制御についての誤りを見抜く。
- 正しい選択肢を選ぶ。
選択肢別の誤答解説
- ア:全てのトランザクションが直列に制御されるわけではなく、2相ロック方式でもデッドロックは発生する可能性があります。
- イ:コミット順序は開始時刻順に制御されるわけではなく、トランザクションの実行状況に依存します。
- ウ:トランザクションはロックを解除した後にコミットできるのではなく、コミット前にロックを保持している必要があります。
- エ:正解。ロック獲得後にのみロック解除が可能で、2相ロック方式の基本ルールを正しく示しています。
補足コラム
2相ロック方式はデータベースの同時実行制御で広く使われる手法で、トランザクションの整合性を保つために重要です。拡張フェーズでロックを獲得し、縮小フェーズで解除することで、トランザクションの直列化可能性を保証します。ただし、デッドロック検出や回避のための追加機構が必要になる場合があります。
FAQ
Q: 2相ロック方式でデッドロックは完全に防げますか?
A: いいえ。2相ロック方式は整合性を保ちますが、デッドロックは発生する可能性があり、別途検出や回避の仕組みが必要です。
A: いいえ。2相ロック方式は整合性を保ちますが、デッドロックは発生する可能性があり、別途検出や回避の仕組みが必要です。
Q: トランザクションはロックを解除してからコミットできますか?
A: いいえ。通常はコミット前に必要なロックを保持し、コミット後にロックを解除します。
A: いいえ。通常はコミット前に必要なロックを保持し、コミット後にロックを解除します。
関連キーワード: 2相ロック方式, 同時実行制御, トランザクション管理, データベース, ロック制御, 直列化可能性, デッドロック