ホーム > データベーススペシャリスト試験 > 2017年
データベーススペシャリスト試験 2017年 午前2 問15
2相ロック方式に従うトランザクションに関する記述のうち, 適切なものはどれか。
ア:デッドロックが発生することはない。
イ:同一トランザクション内であれば, アンロック後にロックを行うことができる。
ウ:トランザクションが利用するロックは, 専有ロックに限られる。
エ:トランザクションの競合直列可能性が保証される。(正解)
解説
2相ロック方式に従うトランザクションに関する記述【午前2 解説】
要点まとめ
- 結論:2相ロック方式はトランザクションの競合直列可能性を保証するため正解は「エ」です。
- 根拠:2相ロック方式はロック獲得と解放の2段階に分け、競合状態を制御し一貫性を保ちます。
- 差がつくポイント:デッドロックの有無やロックの種類、ロックの再取得可否などの誤解を避けることが重要です。
正解の理由
「エ: トランザクションの競合直列可能性が保証される。」が正解です。
2相ロック方式(Two-Phase Locking, 2PL)は、トランザクションがロックを獲得する拡張フェーズとロックを解放する縮小フェーズの2段階に分けて動作します。これにより、トランザクション間の競合が制御され、結果として競合直列可能性(スケジュールが直列スケジュールと同等の結果を生む性質)が保証されます。
2相ロック方式(Two-Phase Locking, 2PL)は、トランザクションがロックを獲得する拡張フェーズとロックを解放する縮小フェーズの2段階に分けて動作します。これにより、トランザクション間の競合が制御され、結果として競合直列可能性(スケジュールが直列スケジュールと同等の結果を生む性質)が保証されます。
よくある誤解
2相ロック方式はデッドロックを防止するものではなく、むしろデッドロックが発生する可能性があります。
また、ロックを解放した後に再度ロックを取得することはできません。
また、ロックを解放した後に再度ロックを取得することはできません。
解法ステップ
- 2相ロック方式の基本動作を理解する(拡張フェーズと縮小フェーズ)。
- 競合直列可能性の定義と2PLの関係を確認する。
- 選択肢の内容を2PLの特徴と照らし合わせる。
- デッドロックの有無やロックの再取得可否など誤りを含む選択肢を除外する。
- 競合直列可能性を保証する選択肢を正解とする。
選択肢別の誤答解説
-
ア: デッドロックが発生することはない。
→誤り。2相ロック方式でもトランザクション間で相互にロックを待つデッドロックは発生し得ます。 -
イ: 同一トランザクション内であれば, アンロック後にロックを行うことができる。
→誤り。2相ロック方式では一度ロックを解放(縮小フェーズに入る)と再度ロックを獲得できません。 -
ウ: トランザクションが利用するロックは, 専有ロックに限られる。
→誤り。2相ロック方式は共有ロック(読み取り用)と専有ロック(書き込み用)の両方を利用します。 -
エ: トランザクションの競合直列可能性が保証される。
→正解。2相ロック方式は競合直列可能性を保証する代表的な同期制御方式です。
補足コラム
2相ロック方式はデータベースのトランザクション制御で広く使われていますが、デッドロック検出や回避のために追加の仕組みが必要です。
また、厳密2相ロック(Strict 2PL)ではトランザクション終了までロックを保持し、一貫性と回復性をさらに強化します。
また、厳密2相ロック(Strict 2PL)ではトランザクション終了までロックを保持し、一貫性と回復性をさらに強化します。
FAQ
Q: 2相ロック方式でデッドロックは必ず発生しますか?
A: 必ずではありませんが、複数トランザクションが互いにロックを待つ状態が発生するとデッドロックが起こる可能性があります。
A: 必ずではありませんが、複数トランザクションが互いにロックを待つ状態が発生するとデッドロックが起こる可能性があります。
Q: 2相ロック方式はどのように競合直列可能性を保証するのですか?
A: ロック獲得と解放を2段階に分けることで、トランザクションの操作順序が直列スケジュールに相当する形に制御されるためです。
A: ロック獲得と解放を2段階に分けることで、トランザクションの操作順序が直列スケジュールに相当する形に制御されるためです。
Q: 共有ロックと専有ロックの違いは何ですか?
A: 共有ロックは読み取り用で複数トランザクションが同時に保持可能、専有ロックは書き込み用で単独で保持されます。
A: 共有ロックは読み取り用で複数トランザクションが同時に保持可能、専有ロックは書き込み用で単独で保持されます。
関連キーワード: 2相ロック方式, 競合直列可能性, トランザクション制御, デッドロック, ロック管理