共有ロックと専有ロックから待ち関係を求める

共有ロック同士は共存できますが,専有ロックへの変更は他の共有ロックの解放を待ちます。 $T_2$ はCの専有ロック取得で $T_1$ を待ちます。$T_3$ はAの更新で $T_1$ と $T_4$ を待ち,$T_4$ はBの更新で $T_2$ と $T_3$ を待ちます。グラフの辺に対応させると,$d=T_1$,$c=T_3$,$b=T_4$,したがって $a=T_2$ です。

t1t_1〜t10t_{10} の時刻でスケジュールされたトランザクション T1T_1〜T4T_4 がある。時刻 t10t_{10} で T1T_1 が commit を発行する直前の,トランザクションの待ちグラフを作成した。aa に当てはまるトランザクションはどれか。ここで,select (X) は共有ロックを掛けて資源 X を参照することを表し,update (X) は専有ロックを掛けて資源 X を更新することを表す。これらのロックは,commit された時にアンロックされるものとする。また,トランザクションの待ちグラフの矢印は,Ti→TjT_i\to T_j としたとき,TjT_j がロックしている資源のアンロックを,TiT_i が待つことを表す。

〔トランザクションのスケジュール〕

時刻

トランザクション

T1T_1

T2T_2

T3T_3

T4T_4

t1t_{1}

select (A)

−

−

−

t2t_{2}

−

select (B)

−

−

t3t_{3}

−

−

select (B)

−

t4t_{4}

−

−

−

select (A)

t5t_{5}

−

−

−

update (B)

t6t_{6}

select (C)

−

−

−

t7t_{7}

−

select (C)

−

−

t8t_{8}

−

update (C)

−

−

t9t_{9}

−

−

update (A)

−

t10t_{10}

commit

−

−

−

〔トランザクションの待ちグラフ〕

問題画像
出典令和4年度 春期 システムアーキテクト試験 午前Ⅱ 問24
ア
T1T_1
イ
T2T_2
ウ
T3T_3
エ
T4T_4