トランザクションAとBが、共通の資源であるテーブルaとbを表のように更新するとき、デッドロックとなるのはどの時点か。
ここで、表中の@〜Gは処理の実行順序を示す。
また、ロックはテーブルの更新直前に行い、アンロックはトランザクションの終了後に行うものとする。
ア | B |
イ | C |
ウ | D |
エ | E |
答え エ
【解説】
トランザクションの動きを追って確認します。
B | トランザクションAがテーブルaをロックします。 |
C | トランザクションBがテーブルbをロックします。 |
D | トランザクションAはトランザクションBがロックしているテーブルbのアンロック待ちになります。 トランザクションAは停止、トランザクションBは、この時点ではまだ動作しています。 |
E | トランザクションBはトランザクションAがロックしているテーブルaのアンロック待ちになります。 この時点で、トランザクションA、トランザクションBの両方が停止したので、デッドロック状態です。 |
【キーワード】
・デッドロック