トランザクションAとBが、共通の資源であるテーブルaとbを表のように更新するとき、デッドロックとなるのはどの時点か。
ここで、表中の@〜Gは処理の実行順序を示す。
また、ロックはテーブルの更新直前に行い、アンロックはトランザクションの終了後に行うものとする。
答え エ
【解説】
トランザクションの動きを追って確認します。
B |
トランザクションAがテーブルaをロックします。 |
C |
トランザクションBがテーブルbをロックします。 |
D |
トランザクションAはトランザクションBがロックしているテーブルbのアンロック待ちになります。
トランザクションAは停止、トランザクションBは、この時点ではまだ動作しています。 |
E |
トランザクションBはトランザクションAがロックしているテーブルaのアンロック待ちになります。
この時点で、トランザクションA、トランザクションBの両方が停止したので、デッドロック状態です。 |
【キーワード】
・デッドロック
【キーワードの解説】
- デッドロック(deadlock)
複数のプロセス(プログラム、トランザクション)が、相手が占有(ロック)している資源をお互いに解放待ち状態になってしまい、処理が停止することです。
データの排他制御の問題や、プロセスの占有順の不統一からデッドロックは発生します。
もっと、「デッドロック」について調べてみよう。
戻る
一覧へ
次へ
|