平成22年度 春期 データベーススペシャリスト試験 午前II 問15
【問題15】
2相ロック方式を用いたトランザクションの同時実行制御に関する記述のうち,適切なものはどれか。
すべてのトランザクションが直列に制御され,デッドロックが発生することはない。
トランザクションのコミット順序は,トランザクション開始の時刻順となるように制御される。
トランザクションは,自分が獲得したロックをすべて解除した後にだけ,コミット操作を実行できる。
トランザクションは,必要なロック獲得命令をすべて実行した後だけ,ロック解除命令を実行できる。
【解説】
ア: すべてのトランザクションが直列に制御され,デッドロックが発生することはない。
誤り。2相ロック方式においてもデッドロックが発生することがあります。直列に制御されるわけではなく、ロックの獲得と解放のタイミングでデッドロックが生じる可能性があります。
イ: トランザクションのコミット順序は,トランザクション開始の時刻順となるように制御される。
誤り。2相ロック方式では、コミット順序は開始時刻順とは限りません。ロックの取得や操作内容によって異なる順番でコミットされます。
ウ: トランザクションは,自分が獲得したロックをすべて解除した後にだけ,コミット操作を実行できる。
誤り。2相ロック方式では、トランザクションがコミットする前にロックを解除することはありませんが、ロック解除は「第2フェーズ」で行われるため、コミット前にすべて解除するわけではなく、コミット後のタイミングで解除されます。
エ: トランザクションは,必要なロック獲得命令をすべて実行した後だけ,ロック解除命令を実行できる。
正しい。2相ロック方式では、ロック獲得の段階(第1フェーズ)とロック解除の段階(第2フェーズ)が分かれており、ロック解除命令はロックを獲得した後にのみ実行されます。この順序が保証されることで、データの整合性が保たれます。
【答え】
エ: トランザクションは,必要なロック獲得命令をすべて実行した後だけ,ロック解除命令を実行できる。
出典:平成22年度 春期 データベーススペシャリスト試験 午前II 問15