IPA公式正解:エ トランザクションは,必要な全てのロックを獲得した後にだけ,ロックを解除できる。
※ 正解はIPA公表の解答です。解説は当サイトが生成AIを用いて作成しています。誤りにお気づきの場合はお問い合わせください。
【解説】正解は選択肢【エ】です。2相ロック方式(Two-Phase Locking: 2PL)は、ロックを獲得する「成長相」とロックを解放する「縮小相」の2つのフェーズに分ける方式です。一度でもロックを解除(縮小相)したら新たなロックの獲得はできず、必要な全てのロックを獲得した後にだけロックを解除できます。
【詳細解説】■ 本問の核心・解法のポイント
2相ロック(2PL)は、トランザクションの直列可能性(シリアライザビリティ)を保証するためのプロトコルです。
トランザクションの実行期間を、ロックの獲得のみを行う「成長相(Growing phase)」と、ロックの解放のみを行う「縮小相(Shrinking phase)」の2段階に厳格に分離します。一度縮小相に入ってロックを解除し始めた後は、いかなる新たなロックも獲得できません。したがって、「必要な全てのロックを獲得し終えた後にだけロックを解除できる」ことになります。
・各選択肢の徹底解説:
・ア:2相ロックは直列可能性を保証しますが、複数のトランザクションが互いに相手の保持する資源を要求することでデッドロックが発生する可能性があります。
・イ:コミット順序はロックの獲得・解放のタイミングや競合状況に依存し、トランザクションの開始時刻順になるとは限りません。
・ウ:通常の2相ロックでは、コミット操作の前に縮小相に入って一部のロックを解除することが可能です(厳密2相ロックの場合はコミット時まで保持します)。全ロック解除後でなければコミットできないわけではありません。
・エ:【選択肢エ★】2相ロックでは、成長相(ロック獲得のみ)から縮小相(ロック解除のみ)へ一度だけ遷移するため、必要な全てのロックを獲得した後でなければロックを解除できません。
よって正解はエです。