IPA過去問ドリル

平成27年度 春期 データベーススペシャリスト試験 午前Ⅱ 問13

テクノロジ/データベース

2相ロック方式を用いたトランザクションの同時実行制御に関する記述のうち,適切なものはどれか。

出典:平成27年度 春期 データベーススペシャリスト試験 午前Ⅱ 問13

正解:エ

解説

2相ロック方式は,トランザクションの実行を,ロックの獲得だけを行う拡張フェーズと,ロックの解除だけを行う縮退フェーズの二つに分け,一度ロックの解除を始めたら以後は新たなロックを獲得しないように制御する方式である。これにより,必要な全てのロックを獲得し終えた後でなければ,ロックの解除を開始できないことになる。この方式は直列可能性(serializability)を保証するが,直列に実行されるわけではなく,デッドロックの発生を防ぐものでもない。

選択肢ごとの解説

  • 誤り。2相ロック方式は直列可能性を保証する制御方式であって,全てのトランザクションを直列に実行するものではなく,デッドロックが発生しないことを保証するものでもない。
  • 誤り。2相ロック方式は,ロックの獲得と解除の順序(拡張フェーズと縮退フェーズ)を制御するものであり,トランザクションのコミット順序を開始時刻順にするものではない。
  • 誤り。「自分が獲得したロックを全て解除した後にだけコミットできる」というのは逆であり,一般にコミット後にロックを解除する(コミットが縮退フェーズの一部となる)ため,コミット前に全ロックを解除しなければならないわけではない。
  • 正しい。2相ロック方式では,ロックの獲得だけを行う拡張フェーズと,ロックの解除だけを行う縮退フェーズに分かれており,必要なロック獲得命令を全て実行した後でなければ,ロック解除命令を実行できない。
データベーススペシャリストの過去問を演習モードで解く