令和3年度 秋期 データベーススペシャリスト試験 午前II 問13
2025年6月30日
【問題13】
2相ロック方式を用いたトランザクションの同時実行制御に関する記述のうち,適切なものはどれか。
全てのトランザクションが直列に制御され,デッドロックが発生することはない。
トランザクションのコミット順序は,トランザクション開始の時刻順となるように制御される。
トランザクションは,自分が獲得したロックを全て解除した後にだけ,コミット操作を実行できる。
トランザクションは,必要な全てのロックを獲得した後にだけ,ロック解除命令を実行できる。
【解説】
2相ロック方式(Two-Phase Locking, 2PL)の特徴
2相ロック方式は、トランザクションがロックを取得する「成長相(グロースフェーズ)」と、ロックを解放する「縮退相(シュリンクフェーズ)」の2つのフェーズに分かれています。これにより、トランザクションの直列化可能性が保証されます。
ア: 全てのトランザクションが直列に制御され,デッドロックが発生することはない。
誤り。2相ロック方式では直列化可能性が保証されますが、デッドロックが発生しないわけではありません。複数のトランザクションが互いに相手のロックを待つ状況が生じると、デッドロックが発生する可能性があります。
イ: トランザクションのコミット順序は,トランザクション開始の時刻順となるように制御される。
誤り。2相ロック方式では、トランザクションのコミット順序は開始時刻とは関係ありません。トランザクションの実行状況やロックの競合状況によってコミット順序は変わります。
ウ: トランザクションは,自分が獲得したロックを全て解除した後にだけ,コミット操作を実行できる。
誤り。2相ロック方式では、ロックの解除とコミットの順序は特に規定されていません。特に、厳密な2相ロック(Strict 2PL)では、トランザクションがコミットするまでロックを保持し続け、コミット時にまとめてロックを解除します。
エ: トランザクションは,必要な全てのロックを獲得した後にだけ,ロック解除命令を実行できる。
正しい。2相ロック方式では、トランザクションは成長相で必要なロックをすべて取得し、その後の縮退相でロックを解除します。したがって、必要な全てのロックを獲得した後にのみ、ロックの解除を開始します。
【答え】
エ: トランザクションは,必要な全てのロックを獲得した後にだけ,ロック解除命令を実行できる。
出典:令和3年度 秋期 データベーススペシャリスト試験 午前II 問13