ソフトⅡコース担当 ブログのおにーさまこと高橋です。
今回は、平成23年度特別試験基本情報技術者試験午後問3、データベースの問題を考えたいと思います。
設問1
排他制御を行わなかった場合、どのようになるかを考える問題です。排他制御を行わないということは、ロックをかけないということで、データを自由に読み書きできることになります。トランザクションは並行して行われる可能性があるので、あるトランザクションが更新を行っている途中に、別のトランザクションが同じデータを参照、更新する可能性がでてきます。
もっとも単純に考えて、各トランザクションの3つの手順が交互に実行されると考えることにします。この場合、T1とT2のどちらから開始されるかによって2つのパターンが考えられます。
T1から開始した場合、
T1の値 | T1 | DBの値 | T2 | T2の値 |
50 | (1)データを読み込む | 50 | ||
50 | 50 | (1)データを読み込む | 50 | |
60 | (2)+10する | 50 | 50 | |
60 | 50 | (2)-5する | 45 | |
60 | (3)データを書き込む | 60 | 45 | |
60 | 45 | (3)データを書き込む | 45 |
T2から開始した場合、
T1の値 | T1 | DBの値 | T2 | T2の値 |
50 | (1)データを読み込む | 50 | ||
50 | (1)データを読み込む | 50 | 50 | |
50 | 50 | (2)-5する | 45 | |
60 | (2)+10する | 50 | 45 | |
60 | 45 | (3)データを書き込む | 45 | |
60 | (3)データを書き込む | 60 | 45 |
このように、排他制御が行われないと両トランザクション終了時には45または60になる可能性があります。空欄a、bには順不同でイ、エが入ります。
設問2
問題より、入荷、出荷の処理には排他ロック、参照の処理には共有ロックをかけます。問題の図2より、在庫数データへのロック要求の順にトランザクションを並べると次のようになります。
トランザクション | 処理 | ロックの種類 |
T3 | 参照 | 共有ロック |
T6 | 参照 | 共有ロック |
T4 | 出荷 | 排他ロック |
T5 | 入荷 | 排他ロック |
- T3が在庫数データに共有ロックをかけます。共有ロックがかかっている時に、別の共有ロックが要求された時は受け付けられ処理が続きます。排他ロックが要求された時は受け付けられず待ち状態になります。
- T6は共有ロックなのでそのまま処理が続きます。
- T4は排他ロックなので、共有ロックが解除されるまで待ち状態になります。
- 同様に、T5も待ち状態になります。
以上より、解答はウです。
設問3
ロックしている時間を短くするには必要な時だけロックをかけるようにします。すなわち、使う直前にロックし、使い終わった(以降使わない)直後に解除するようにします。
空欄cはイ、空欄dはエになります。
2011年(平成23年度)特別の解説
- 平成23年度 特別 基本情報技術者試験 【問9】(その2)
- 平成23年度 特別 基本情報技術者試験 【問9】(その1)
- 平成23年度 特別 基本情報技術者試験 【問3】(その2)
- 平成23年度 特別 基本情報技術者試験 【問2】(その2)
- 平成23年度 特別 基本情報技術者試験 【問3】(その1)
- 平成23年度 特別 基本情報技術者試験 【問4】
- 平成23年度 特別 基本情報技術者試験 【問2】(その1)
- 平成23年度 特別 基本情報技術者試験 【問11】(その2)
- 平成23年度 特別 基本情報技術者試験 【問11】(その1)
- Date:
- この記事を
友だちに教える - LINE
- - HatenaBookmark
- GooglePlus