ホーム > データベーススペシャリスト試験 > 2012年
データベーススペシャリスト試験 2012年 午前2 問19
二つのトランザクションT1, T2が, データa, bに並行してアクセスする。T1, T2の組合せのうち, 直列可能性を保証できるものはどれか。ここで, トランザクションの各操作の意味は次のとおりとする。
LOCK :データxをロックする
READ :データxを読み込む
WRITE :データxを書き出す
UNLOCK :データxをアンロックする

ア:
イ:
ウ:
エ:(正解)
解説
二つのトランザクションの直列可能性判定【午前2 解説】
要点まとめ
- 結論:選択肢「エ」のトランザクション操作は直列可能性を保証できる。
- 根拠:両トランザクションが同じ順序でロックを取得し、データ競合を防止しているため。
- 差がつくポイント:ロックの取得順序と解放タイミングが異なるとデッドロックや非直列可能な状態になる点に注意。
正解の理由
選択肢「エ」では、T1とT2が共にデータaをロックし、その後データbをロックする順序を守っています。これにより、相互にロックを奪い合うデッドロックが発生せず、操作の競合も防げます。さらに、アンロックの順序も適切で、トランザクションの操作が直列に実行された場合と同様の結果が得られるため、直列可能性が保証されます。
よくある誤解
ロックを取得すれば直列可能になると誤解しがちですが、ロックの取得順序が異なるとデッドロックや非直列可能なスケジューリングになることがあります。
解法ステップ
- 各トランザクションのロック取得順序を確認する。
- 両トランザクションが同じ順序でロックを取得しているかを判断する。
- ロックの解放タイミングが適切かを確認し、デッドロックの有無を検討する。
- 競合するデータへのアクセスが排他制御されているかをチェックする。
- 以上の条件を満たす選択肢を直列可能と判断する。
選択肢別の誤答解説
- ア:ロック取得前にREAD操作があり、ロック制御が不十分で競合状態が発生しやすい。
- イ:T1とT2が同じ順序でロックを取得しているが、両者が同時にロックを待つ可能性がありデッドロックのリスクがある。
- ウ:T2がaをロックした後にbをロックし、T1はaのロックを解放してからbをロックするため、ロック順序が異なりデッドロックが発生する可能性がある。
- エ:両トランザクションがa→bの順でロックを取得し、解放も適切で直列可能性が保証される。
補足コラム
直列可能性とは、並行実行されるトランザクションの結果が、ある直列実行の結果と同じになる性質を指します。ロックの取得順序を統一することでデッドロックを防ぎ、整合性を保つことが重要です。特に2相ロックプロトコル(2PL)はこの考え方に基づいています。
FAQ
Q: なぜロックの取得順序が重要なのですか?
A: ロックの取得順序が異なると、互いに相手のロック解除を待つデッドロックが発生しやすくなるためです。
A: ロックの取得順序が異なると、互いに相手のロック解除を待つデッドロックが発生しやすくなるためです。
Q: 直列可能性とデッドロックは同じ意味ですか?
A: いいえ。直列可能性はトランザクションの結果の整合性を指し、デッドロックはロックの競合による処理停止状態を指します。
A: いいえ。直列可能性はトランザクションの結果の整合性を指し、デッドロックはロックの競合による処理停止状態を指します。
関連キーワード: トランザクション管理, 直列可能性, ロック制御, デッドロック, 2相ロックプロトコル