データベーススペシャリスト試験攻略のツボ(5)

「トランザクション」に関する問題


西沢直木
2008/9/17

 本連載では、テクニカルエンジニア(データベース)試験に対応できる知識を確認していきます。多岐にわたる知識が問われる試験ですので、受験する方はもちろん、日常業務ではあまり使うことのない技術知識の確認にも役立ててください。
目次
今回の出題範囲
18年-午前問題-問41/19年-午前問題-問42
20年-午前問題-問38








問5-3 デッドロックが発生するタイミング

 3つのトランザクションT1、T2、T3が、1〜11の順序でデータa、bに対する処理を行った場合、デッドロックとなるのはどの時点か。ここで、DBMSはREADの直前に共有ロック、UPDATEの直前に占有ロックをかけ、ROLLBACK又はCOMMITですべてのロックを解除する。

5-3fig

  ア:6  イ:7  ウ:8  エ:9

(20年-午前問題-問38)

答え

解説

 前の問題と似た雰囲気で特別に難しいわけでもありませんが、この問題を取り上げたのは、来年以降も注意した方がいいかもしれないと感じたためです。

 この問題はソフトウェア開発技術者試験で17年と20年の春に出題され、20年のテクニカルエンジニア(データベース)試験で出題されました。適度に時間を使わせる問題でもあり、うっかりミスも考えられるので、出題者側としてはもう一度出題したくなる問題に思えます。

 さて、正解を導き出すため選択肢を順番に見ていきましょう。まず、選択肢「ア」(6)では、トランザクションT3がデータaに対して占有ロックをかけようとしています。データのロック状況は次のようになっています。

◆選択肢「ア」(6)の時点のトランザクション
  • T1:データaを共有ロック、データbを共有ロック
  • T2:どれもロックしていない
  • T3:データbを共有ロック、データaのロック解除待ち

 トランザクションT1がデータaを共有ロックしているので、T3はデータaのロックが解除されるのを待つことになりますが、まだデッドロックは発生していません。

 次に選択肢「イ」(7)でトランザクションT1がデータbに対して占有ロックをかけようとすると、上記のようにトランザクションT3がデータbに共有ロックをかけているので、データbのロックの解除を待つことになります。この場合、トランザクションの状態は次のようになります。

◆選択肢「イ」(7)の時点のトランザクション
  • T1:データa、bを共有ロック、データbのロック解除待ち
  • T2:どれもロックしていない
  • T3:データbを共有ロック、データaのロック解除待ち

 この時点で、トランザクションT1とT3が共に互いのロック解除を待つ状態になり、デッドロックが発生します。従って、「イ」が正解です。


次のページへ 3/3  

Index
データベーススペシャリスト試験攻略のツボ(5)
「トランザクション」に関する問題
問5-1 トランザクションのACID特性
   コラム:トランザクションのACID特性に関する出題傾向
問5-2 直列可能性が保証できるトランザクション
→ Page 3
問5-3 デッドロックが発生するタイミング


データベーススペシャリスト試験攻略のツボ




Database Expert フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Database Expert 記事ランキング

本日月間