平成31年 春期 データベーススペシャリスト 午前II 問10

t1t10の時刻でスケジュールされたトランザクションT1〜T4がある。
時刻t10でT1がcommitを発行する直前の、トランザクションの待ちグラフを作成した。
aに当てはまるトランザクションはどれか。
ここで、SELECT(X )は共有ロックをかけて資源X を参照することを表し、update(X )は専有ロックをかけて資源X を更新することを表す。
これらのロックは、commitされるまでアンロックされないものとする。
また、トランザクションの待ちグラフの矢印は、Ti →Tj としたとき、Tj がロックしている資源のアンロックを、Ti が待つことを表す。

[トランザクションのスケジュール]
時刻 トランザクション
T1 T2 T3 T4
t1 select(A)
t2 select(B)
t3 select(A)
t4 select(B)
t5 update(B)
t6 select(C)
t7 select(C)
t8 update(C)
t9 update(A)
t10 commit

[トランザクションの待ちグラフ]
 

 ア  T1
 イ  T2
 ウ  T3
 エ  T4


答え イ


解説
時刻を追って処理を確認すると、t1t4はselect()なのでアンロック待ちは発生しない。
t5のT4のupdate(B)では専有ロックをするために、T2のアンロック待ちが発生する。T4→T2
t6t7もselect()なのでアンロック待ちは発生しない。
t8のT2のupdate(C)では専有ロックをするために、T1のアンロック待ちが発生する。T2→T1
t9のT3のupdate(A)では専有ロックをするために、T1のアンロック待ちが発生する。T3→T1
これを図にまとめると
 
になる。


キーワード
・ロック

キーワードの解説

戻る 一覧へ 次へ