ホーム > データベーススペシャリスト試験 > 2010年
データベーススペシャリスト試験 2010年 午前2 問15
2相ロック方式を用いたトランザクションの同時実行制御に関する記述のうち, 適切なものはどれか。
ア:すべてのトランザクションが直列に制御され, デッドロックが発生することはない。
イ:トランザクションのコミット順序は、トランザクション開始の時刻順となるように制御される。
ウ:トランザクションは, 自分が獲得したロックをすべて解除した後にだけ, コミット操作を実行できる。
エ:トランザクションは、必要なロック獲得命令をすべて実行した後にだけ, ロック解除命令を実行できる。(正解)
解説
2相ロック方式を用いたトランザクションの同時実行制御【午前2 解説】
要点まとめ
- 結論:2相ロック方式では、トランザクションはすべてのロック獲得を終えた後にのみロックを解除できる。
- 根拠:これにより、トランザクションの整合性が保たれ、データの競合や不整合を防止できる。
- 差がつくポイント:ロックの獲得と解除の順序を正しく理解し、コミット操作との関係を混同しないことが重要。
正解の理由
2相ロック方式(Two-Phase Locking, 2PL)は、トランザクションのロック操作を「拡張フェーズ(ロック獲得)」と「縮小フェーズ(ロック解除)」の2段階に分ける制御方式です。
この方式では、トランザクションは最初に必要なすべてのロックを獲得し(拡張フェーズ)、その後にロックを解除し始める(縮小フェーズ)ことが求められます。
したがって、「トランザクションは、必要なロック獲得命令をすべて実行した後にだけ、ロック解除命令を実行できる」という選択肢エが正解です。
この方式では、トランザクションは最初に必要なすべてのロックを獲得し(拡張フェーズ)、その後にロックを解除し始める(縮小フェーズ)ことが求められます。
したがって、「トランザクションは、必要なロック獲得命令をすべて実行した後にだけ、ロック解除命令を実行できる」という選択肢エが正解です。
よくある誤解
トランザクションがロックをすべて解除してからコミットするという誤解や、コミット順序が開始時刻順に制御されると考える誤解が多いです。
解法ステップ
- 2相ロック方式の基本ルールを確認する。
- ロック獲得と解除の順序に注目する。
- 各選択肢の記述が2相ロックのルールに合致しているか検証する。
- コミット操作とロック解除の関係を正しく理解する。
- 正しい選択肢を選ぶ。
選択肢別の誤答解説
- ア: 「すべてのトランザクションが直列に制御され、デッドロックが発生しない」は誤り。2相ロック方式でもデッドロックは発生する可能性がある。
- イ: 「コミット順序が開始時刻順になる」は誤り。コミット順序はロックの獲得・解除やトランザクションの実行状況に依存し、開始時刻順とは限らない。
- ウ: 「ロックをすべて解除した後にコミットできる」は誤り。通常、コミット前にロックは保持され、コミット後にロックを解除する。
- エ: 「必要なロック獲得命令をすべて実行した後にだけロック解除命令を実行できる」は正しい。
補足コラム
2相ロック方式はデータベースの同時実行制御で広く使われる方式で、整合性を保ちながら複数トランザクションの並行実行を可能にします。
ただし、デッドロックの発生リスクがあるため、デッドロック検出や回避の仕組みも併用されることが多いです。
ただし、デッドロックの発生リスクがあるため、デッドロック検出や回避の仕組みも併用されることが多いです。
FAQ
Q: 2相ロック方式でデッドロックは必ず発生しますか?
A: 発生する可能性はありますが、検出や回避の仕組みで対応します。
A: 発生する可能性はありますが、検出や回避の仕組みで対応します。
Q: コミット操作はロック解除の前と後、どちらに行いますか?
A: 通常はコミット操作を行った後にロックを解除します。
A: 通常はコミット操作を行った後にロックを解除します。
関連キーワード: 2相ロック方式, 同時実行制御, トランザクション管理, デッドロック, ロック制御