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

午前U 問10

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

分類

テクノロジ系 » データベース » トランザクション処理

正解

解説

共有・専有の2種類のロックの違いを確認しておきましょう。
共有ロック
データを読込むときに使うロックで、資源がこの状態の場合は他のトランザクションによる更新処理ができなくなる。(読込みは可能)
専有ロック
データを更新するときに使うロックで、資源がこの状態の場合は他のトランザクションによる読込みや更新ができなくなる。
上記の性質から、ある資源に共有または専有ロックがかけれられているときの新たなロックの可否は次の表の通りになります。
10_1.gif/image-size:272×136
[t1]
T1がAを共有ロックする。

[t2]
T2がBを共有ロックする。

[t3]
T3がAの共有ロックを試みる。Aは共有ロック状態なのでロックが成功する。

[t4]
T4がBの共有ロックを試みる。Bは共有ロック状態なのでロックが成功する。

[t5]
T4がBの専有ロックを試みる。Bは共有ロック状態なのでT2のロック解除待ちとなる。
10_2.gif/image-size:129×41
[t6]
T1がCを共有ロックする。
10_2.gif/image-size:129×41
[t7]
T2がCの共有ロックを試みる。Cは共有ロック状態なのでロックが成功する。
10_2.gif/image-size:129×41
[t8]
T2がCの専有ロックを試みる。Cは共有ロック状態なのでT1のロック解除待ちとなる。
10_3.gif/image-size:228×42
[t9]
T3がAの専有ロックを試みる。Aは共有ロック状態なのでT1のロック解除待ちとなる。
10_4.gif/image-size:228×92
設問の待ちグラフと向きは異なりますが、aにはT1がCをアンロックするのを待ち、かつ、T4にBのアンロックを待たれているT2が入ります。

© 2016-2018 データベーススペシャリストドットコム All Rights Reserved.

Pagetop