┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃宿題メール ソフ開編                .&&&& **** %%%%. ┃ ┃                         &&&&&&******%%%%%% ┃ ┃from 斎藤末広 jwork@yscon.co.jp          '&┃&''*┃*''%┃%' ┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━┻━━┻━━┻━━┛ ========================================================================  2005年7月1日分【宿題メール ソフトウェア開発技術者編】  この"宿題メール ソフ開編"は,10月にソフトウェア技術者試験を受験される方 向けに出しています。  "宿題メール(総合編)"を補完する関係です。  →宿題メールとは http://www.3721p.com/homework ======================================================================== 前回分の解答と解説 ------------------------------------------------------------------------ *[解説:ソフト開発午前問題その1]  "社員"表と"部門"表に対し, 次の SQL 文を実行したときの結果はどれか。   SELECT COUNT(*) FROM 社員, 部門    WHERE 社員.所属 = 部門.部門名 AND 部門.フロア = 2  社員            部門 ┌────┬──────┐ ┌──────┬───┐ │社員番号│所属    │ │部門名   │フロア│ ┝━━━━┿━━━━━━┥ ┝━━━━━━┿━━━┥ │11001  │総務    │ │企画    │ 1  │ ├────┼──────┤ ├──────┼───┤ │11002  │経理    │ │総務    │ 1  │ ├────┼──────┤ ├──────┼───┤ │11003  │営業    │ │情報システム│ 2  │ ├────┼──────┤ ├──────┼───┤ │11004  │営業    │ │営業    │ 3  │ ├────┼──────┤ ├──────┼───┤ │11005  │情報システム│ │経理    │ 2  │ ├────┼──────┤ ├──────┼───┤ │11006  │営業    │ │法務    │ 2  │ ├────┼──────┤ ├──────┼───┤ │11008  │企画    │ │購買    │ 2  │ ├────┼──────┤ └──────┴───┘ │12001  │営業    │ ├────┼──────┤ │12002  │情報システム│ └────┴──────┘  ア 1  イ 2  ウ 3  エ 4 【実習課題】実際に試してみよう。 注意:桁がずれて表示されているときは以下のサイトを参考にして下さい。 等幅フォントに…@まぐまぐ http://help.mag2.com/115.html ■キーワード■ COUNT(SQL) ■解答■   ソフトウェア開発技術者午前平成17年春問66   テクニカルエンジニア(データベース)午前平成14年問30  ウ 3 > フロア=2にあてはまるのは、情報システム、経理、法務、購買。 > これらの部署にあてはまる社員は11002,11005,12002の3人。  どうもありがとうございました。 ------------------------------------------------------------------------ *[解説:ソフト開発午前問題その2]  三つのトランザクション T1,T2,T3 が,番号(1)〜(10)の順序でデータ a,b に対する処理を行った場合,デッドロックとなるのはどの時点か。ここで,DBMS は READ の直前に共有ロック,UPDATE の直前に占有ロックをかけ,ROLLBACK 又 は COMMIT ですべてのロックを解除する。 ┌──────┐ ┌──────┐ ┌──────┐ │  T1   │ │  T2   │ │  T3   │ ├──────┤ ├──────┤ ├──────┤ │(1) READ a │ │      │ │      │ │      │ │(2) UPDATE b│ │      │ │      │ │(3) ROLLBACK│ │      │ │(4) READ b │ │      │ │      │ │      │ │      │ │(5) READ b │ │      │ │      │ │(6) UPDATE a│ │(7) UPDATE b│ │      │ │      │ │      │ │      │ │(8) UPDATE b│ │(9) COMMIT │ │      │ │      │ │      │ │      │ │(10) COMMIT │ └──────┘ └──────┘ └──────┘  ア (5)  イ (6)  ウ (7)  エ (8) 注意:桁がずれて表示されているときは以下のサイトを参考にして下さい。 等幅フォントに…@まぐまぐ http://help.mag2.com/115.html ■キーワード■ ロックとCOMMMIT ■解答■   ソフトウェア開発技術者午前平成17年春問67  ウ (7) > 処理の流れを順に追い、次のように表してみる。 > なお、データaの利用状況 / bの利用状況という > 形で表し、各印はそれぞれ次のことを意味する。 > ◎:占有・共有ロックで使用可 > ○:共有ロックで使用可 > △:データの解放待ち > ×:使用不可 > *:使用中 > > T1 T2 T3 > (1)READ a:T1 */◎  ○/◎ ○/◎ > (2)UPDATE b:T2 */×  ○/* ○/× > (3)ROLLBACK:T2 */◎  ○/◎  ○/◎ > (4)READ b:T1 */* ○/○ ○/○ > (5)READ b:T3 */* ○/○ ○/* > (6)UPDATE a:T3 */* ○/○ △/* > (7)UPDATE b:T1 */△ ○/○ △/* > (8)UPDATE b:T3 */△  ○/○  △/△ > (9)COMMIT:T1 ○/△ ○/○   △/△ > (10)COMMIT:T3 ○/△  ○/○ △/△ > > これを見ると、(7)のところでT1が占有ロック > されているbの解放待ち、T2が占有ロックされている > aの解放待ちとなり、処理が進まなくなっている。 > これがデッドロックである。 > よってウ  どうもありがとうございました。 > │(1) READ a │T1 共有ロック > │(2) UPDATE b│T2 占有ロック > │(3) ROLLBACK│T2 ロック解除 > │(4) READ b │T1 共有ロック > │(5) READ b │T3 共有ロック > │(6) UPDATE a│T3 占有ロック > │(7) UPDATE b│T1 占有ロック<-T3が共有ロックしている > │(8) UPDATE b│T3 占有ロック<-T1が共有ロックしている > │(9) COMMIT │T1 ロック解除 > │(10) COMMIT │T3 ロック解除  どうもありがとうございました。 > http://mt-net.vis.ne.jp/ADFE_mail/0323.htm > 他の処理からのロックや更新、削除、照会を禁止するロックを、占有ロック > 他の処理からの更新や削除を禁止し、照会は許可するロックを、共有ロック  どうもありがとうございました。 ------------------------------------------------------------------------ *[解説:ソフト開発午後問題改題] (出題お休み) ------------------------------------------------------------------------ 過去のフォロー  (特になし) ======================================================================== ★★ 本日の宿題 ソフト開発編 ★★★★★★★★★★★★★★★★★★★★ ------------------------------------------------------------------------ *[宿題:ソフト開発午前問題その1]  チェックポイントを取得する DBMS において,図のような時間経過でシステム 障害が発生した。前進復帰(ロールフォワード)によって障害回復できるすべての トランザクションはどれか。        チェックポイント           システム障害発生            │                  │            │                  │   時間    ────────┼──────────────────┼────→            │                  │    開始 T1 コミット│                  │    ←─────→ │                  │            │                  │         開始 │        T2         │          ←─┼──────────────────┼‥‥→            │                  │            │   開始      T3      │            │    ←─────────────┼‥‥‥‥→            │                  │       開始   │  T4   コミット        │        ←───┼─────────→        │            │                  │            │開始     T5    コミット  │            │ ←───────────→    │            │                  │            │                  │  ア T1  イ T2 と T3  ウ T4 と T5  エ T5 注意:桁がずれて表示されているときは以下のサイトを参考にして下さい。 等幅フォントに…@まぐまぐ http://help.mag2.com/115.html ------------------------------------------------------------------------ *[宿題:ソフト開発午前問題その2] 分散トランザクション処理で利用される 2 相コミットプロトコルでは,コミッ ト処理を開始する調停者(coordinator)と,調停者からの指示を受信してから必要 なアクションを開始する参加者(participant)がいる。この 2 相コミットプロト コルに関する記述のうち,適切なものはどれか。  ア 参加者は,フェーズ 1 で調停者にコミット了承の応答を返してしまえば,   フェーズ 2 のコミット要求を受信していなくても,ローカルにコミット処理   が進められる。  イ 調停者に障害が発生するポイントによっては,その回復処理が終わらない   限り,参加者全員がコミットもロールバックも行えない事態が起こる。  ウ 一つの分散トランザクションに複数の調停者及び参加者が存在し得る。例   えば,5 個のシステム(プログラム)が関与している場合,調停者の数が 2,   参加者の数が 3 となり得る。  エ フェーズ 1 で返答のない参加者が存在しても,調停者は強制的にそのト   ランザクションをコミットすることができる。 ------------------------------------------------------------------------ *[宿題:ソフト開発午後問題改題] 平成17年春の午後問題を改題して出題 (出題お休み) ======================================================================== 下の部分を回答用紙として返信してください。返信されたものは,著作権放棄を したとみなします。 ------------------------------------------------------------------------ 宿題メール 裏版 回答用紙 ------------------------------------------------------------------------ SW ソフト開発午前問題その1   _ 考えたこと・調べたこと・質問 ------------------------------------------------------------------------ SW ソフト開発午前問題その2   _ 考えたこと・調べたこと・質問 ------------------------------------------------------------------------ SW ソフト開発午後問題改題    _ 考えたこと・調べたこと・質問 ------------------------------------------------------------------------ その他(宿題メール本編に掲載することがあります)