平成27年度 春期 データベーススペシャリスト試験 午前Ⅱ 問13
テクノロジ/データベース2相ロック方式を用いたトランザクションの同時実行制御に関する記述のうち,適切なものはどれか。
出典:平成27年度 春期 データベーススペシャリスト試験 午前Ⅱ 問13
- ア全てのトランザクションが直列に制御され,デッドロックが発生することはない。
- イトランザクションのコミット順序は,トランザクション開始の時刻順となるように制御される。
- ウトランザクションは,自分が獲得したロックを全て解除した後にだけ,コミット操作を実行できる。
- エトランザクションは,必要なロック獲得命令を全て実行した後にだけ,ロック解除命令を実行できる。
正解:エ
解説
2相ロック方式は,トランザクションの実行を,ロックの獲得だけを行う拡張フェーズと,ロックの解除だけを行う縮退フェーズの二つに分け,一度ロックの解除を始めたら以後は新たなロックを獲得しないように制御する方式である。これにより,必要な全てのロックを獲得し終えた後でなければ,ロックの解除を開始できないことになる。この方式は直列可能性(serializability)を保証するが,直列に実行されるわけではなく,デッドロックの発生を防ぐものでもない。
選択肢ごとの解説
- ア誤り。2相ロック方式は直列可能性を保証する制御方式であって,全てのトランザクションを直列に実行するものではなく,デッドロックが発生しないことを保証するものでもない。
- イ誤り。2相ロック方式は,ロックの獲得と解除の順序(拡張フェーズと縮退フェーズ)を制御するものであり,トランザクションのコミット順序を開始時刻順にするものではない。
- ウ誤り。「自分が獲得したロックを全て解除した後にだけコミットできる」というのは逆であり,一般にコミット後にロックを解除する(コミットが縮退フェーズの一部となる)ため,コミット前に全ロックを解除しなければならないわけではない。
- エ正しい。2相ロック方式では,ロックの獲得だけを行う拡張フェーズと,ロックの解除だけを行う縮退フェーズに分かれており,必要なロック獲得命令を全て実行した後でなければ,ロック解除命令を実行できない。