令和5年度 秋期 データベーススペシャリスト試験 午前Ⅱ試験 問12を解いてみましょう。
テクノロジ系 >> データベース >> トランザクション処理
問題
2相ロック方式を用いたトランザクションの同時実行制御に関する記述のうち、適切なものはどれか。
ア 全てのトランザクションが直列に制御され、デッドロックが発生することはない。
イ トランザクションのコミット順序は、トランザクション開始の時刻順となるように制御される。
ウ トランザクションは、自身が獲得したロックを全て解除した後にだけ、コミット操作を実行できる。
エ トランザクションは、必要なすべてのロックを獲得した後にだけ、ロックを解除できる。
解説
2相ロック方式は、データベースの同時実行制御を行うための方式の一つで、データの整合性を保つために用います。この方式は、大きく分けて2つのフェーズ、つまり「成長(ロック取得)フェーズ」と「縮小(ロック解放)フェーズ」から構成されています。
アは、全てのトランザクションが直列に制御されるために2相ロックを適用しますが、それでもデッドロックが発生する可能性は排除できません。異なるトランザクションが同一のリソースを求めた場合、ロックの順序によりデッドロックが生じることがあります。この選択肢は誤りです。
イは、2相ロック方式は、トランザクション間の相互排他性を保つためのもので、トランザクションの開始の順序によってコミットの順序が決まるわけではありません。この選択肢は誤りです。
ウは、2相ロック方式では、トランザクションが全てのロックを解除した段階でコミットが可能になります。自身が獲得したロックをすべて解除しただけではコミット可能にはなりません。この選択肢は誤りです。
エは、2相ロック方式では、成長フェーズ(必要なすべてのロックを獲得するフェーズ)と縮小フェーズ(獲得したロックを解放するフェーズ)が明確に区分されます。したがって、トランザクションは必要なすべてのロックを獲得した後、その後にだけロックを解放します。これにより、データの整合性が保たれます。よって、正解は「エ」です。