平成26年度 春期 データベーススペシャリスト試験 午後Ⅰ
http://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2014h26_1/2014h26h_db_pm1_qs.pdf
問2
設問2 〔会議室予約システムについての改良案〕について,(1)~(3)に答えよ。
(1) 同じ日に,同じ会議室に対して予約が集中する状況を想定すると,図5中の②でコミットを行わない場合,スル-プットが低下する。その原因となる処理を図5中の番号で答えよ。また,原因を25字以内で述べよ。
〔会議室予約システムについての改良案〕
ダブルブッキングを防ぐために図4,表4の”日別予約管理”テーブルを追加し、予約処理内容を図5のように改良することを検討した。
図4 追加する”日別予約管理”テーブルのテーブル構造
図1 主要なテーブルのテーブル構造(一部省略)
http://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2014h26_1/2014h26h_db_pm1_qs.pdf
問2
設問2 〔会議室予約システムについての改良案〕について,(1)~(3)に答えよ。
(1) 同じ日に,同じ会議室に対して予約が集中する状況を想定すると,図5中の②でコミットを行わない場合,スル-プットが低下する。その原因となる処理を図5中の番号で答えよ。また,原因を25字以内で述べよ。
〔会議室予約システムについての改良案〕
ダブルブッキングを防ぐために図4,表4の”日別予約管理”テーブルを追加し、予約処理内容を図5のように改良することを検討した。
日別予約管理(会議室番号,予約日,予約処理中フラグ)
図4 追加する”日別予約管理”テーブルのテーブル構造
表4 追加する”日別予約管理”テーブルの概要
テーブル名 | 概要 |
---|---|
日別予約管理 | ・会議室予約テーブルへの登録の可否を判断するために用いる。 ・予約処理中フラグには,’Y’と’N’のいずれかが設定される。 ’Y’は予約処理中を表し、’N’は予約処理中でないことを表す。 ・予約受付対象の全ての会議室番号,予約日の組み合わせは, 予約処理中フラグの初期値を’N’としてあらかじめ登録されている。 |
① | 予約処理中フラグをUPDATE文で’Y’に更新する。更新できたか否かを記憶する。UPDATE 日別予約管理 SET 予約処理中フラグ = 'Y' WHERE 会議室番号 = :hv4 AND 予約日 = :hv1 AND 予約処理中フラグ='N' |
② | コミットする。 |
③ | 指定された条件に予約が入っているかをSELECT文で確認する。
SELECT * FROM 会議室予約 WHERE 会議 = :hv4 AND 予約日 = :hv1 AND Y.予約開始時刻 b :hv3 AND Y.予約終了時刻 c :hv2 |
④ | ①で予約処理中フラグを更新できており,③で結果行がない場合は,⑤に進む。 ①で予約処理中フラグを更新できており,③で結果行がある場合は,予約失敗 として⑥に進む。 ①で予約処理中フラグを更新できておらず,③で結果行がない場合は,①に戻る。 ①で予約処理中フラグを更新できておらず,③で結果行がある場合は,予約失敗 として⑧に進む。 |
⑤ | 指定された条件の予約をINSERT文で登録して、予約成功とする。INSERT INTO 会議室予約(会議室番号,予約日,予約開始時刻,予約終了時刻,社員番号) VALUES(:hv4,:hv1,:hv2,:hv3,:hv5) |
⑥ | 予約処理中フラグをUPDATE文で’N’に更新する。UPDATE 日別予約管理 SET 予約処理中フラグ = 'N' WHERE 会議室番号 = :hv4 AND 予約日 = :hv1 |
⑦ | コミットする。 |
⑧ | 予約の成否を通知する。 |
図5 予約処理内容完了案
社員(社員番号,社員氏名,…)
会議室(会議室番号,収容可能人数,階数,プロジェクタ設置有無,TV会議設備設置有無,…)
会議室予約(会議室番号,予約日,予約開始時刻,予約終了時刻,社員番号)
図1 主要なテーブルのテーブル構造(一部省略)
スループットが低下するということは、操作後の応答が正常でも異常でもなく、待たされると
いうこと。待ちの原因を特定すること。
ロックに関することを再確認する。
〔RDBMSのトランザクション制御〕
会議室予約システムで使用するRDBMSのトランザクションのISOLATIONレベルは
READ COMMITTEDであり,行単位でロックをかける。データ参照時には共有ロックをかけ,
参照終了時に解放する。データ更新時には専有ロックをかけ,トランザクション終了時に
解放する。専有ロックがかかっている間,他のトランザクションからの対象行の参照,更新は
専有ロックの開放待ちとなる。
【回答】
原因となるのは ①
後続の更新処理は専用ロックで開放待ちとなるため。(。を含め24文字)
【回答】
原因となるのは ①
後続の更新処理は専用ロックで開放待ちとなるため。(。を含め24文字)
コメント
コメントを投稿