平成24年度 春期 データベーススペシャリスト試験 午前II 問19
【問題19】
二つのトランザクション T1, T2 が、データ a, b に並行してアクセスする。T1, T2 の組合せのうち、直列可能性を保証できるものはどれか。ここで、トランザクションの各操作の意味は次のとおりとする。
【解説】
直列可能性とは、複数のトランザクションが並行して実行される際、その実行結果がトランザクションを直列(順番に一つずつ)に実行した場合と同じになることを指します。これを保証するためには、各トランザクションが2相ロック方式(Two-Phase Locking, 2PL)に従う必要があります。
2相ロック方式では、トランザクションは以下の2つのフェーズを持ちます:
- 成長フェーズ:ロックを取得するが、ロックを解放しない。
- 縮小フェーズ:ロックを解放するが、新たなロックを取得しない。
この方式に従うことで、デッドロックの回避と直列可能性の保証が可能となります。
ア:
両トランザクションとも、データ `a` をロックする前に読み込んでおり、2相ロック方式に従っていません。したがって、直列可能性は保証されません。
イ:
両トランザクションとも、データ `a` をアンロックした後にデータ `b` をロックしています。これは、ロックの取得と解放が交互に行われているため、2相ロック方式に従っていません。したがって、直列可能性は保証されません。
ウ:
T1 はデータ `a` をアンロックした後にデータ `b` をロックしており、2相ロック方式に従っていません。T2 はデータ `b` をアンロックした後にデータ `a` をロックしており、こちらも2相ロック方式に従っていません。したがって、直列可能性は保証されません。
エ:
両トランザクションとも、必要なすべてのロックを取得した後にデータの読み書きを行い、最後にロックを解放しています。これは2相ロック方式に従っており、直列可能性が保証されます。
出典:平成24年度 春期 データベーススペシャリスト試験 午前II 問19