正解は以下の通りです。(IPA解答例より)
設問1の正解 | |
---|---|
(1) | 全てのトランザクションが“採番”テーブルの同じ行を更新するので排他待ちが発生し、その更新からCOMMIT文又はROLL BACK文までの処理が直列化されるから |
(2) | 処理番号(4) COMMIT |
排他制御が午後問題で出題された例はあまり多くありませんが、いざ出題されたとき、解答の候補が頭に浮かべられるよう、出題パターン(設問、本文中の布石、解答)を理解しておいて下さい。図3の行(1)から、トランザクションの隔離性水準がREAD COMMITTEDである点と、注記の「SQL文の排他制御は行単位で行う。ほかのトランザクションによって更新中の行をアクセスしたときは排他待ちとなり、コミットされた行だけを読み込むことができる」点から「占有ロックをかけるため排他待ちが集中すること」「COMMITすれば処理速度が改善できること」が読み取れます。
“在庫”テーブルの更新に関して発生した問題点Bについて、次の問いに答えよ。
(1)デッドロックが発生した理由を、60字以内で述べよ
(2)図3の受注入力処理プログラム中のSQL文を追加・変更・削除することなく、“在庫”テーブルで発生したデッドロックを防ぐために、(2)〜(8)のいずれか1つの処理を変更することにした。図3のプログラム中のどの処理を変更すべきか。その処理番号と、変更後の処理内容を、40字以内で述べよ
なお、その変更を行っても、複数のトランザクションによる複数の異なる商品の在庫引当ては、変更前と同様に並行して処理が可能でなければならない。
(H17春DB午後I問4設問2)
解答は以下の通りです。(IPA解答例より)
設問2の回答 | |
---|---|
(1) | 複数のトランザクションが“在庫”テーブルの複数の行を互いに逆順に更新することがあるから。 |
(2) | 処理番号(5) 商品番号順に、かつ商品名ごとに破線内の処理((6)〜(8))を繰り返し行う。 |
デッドロックは複数のトランザクションが互いにリソースを逆順にロックするために発生します。これを防ぐためには、リソースをロックする順序を統一すればよく、その内容を本文に合わせて記述すると上記のようになります。
本試験過去問題による類題演習 | |
---|---|
□H27 午前II問16 | ダーティリード(dirty read)に関する記述 |
□H22 午前II問18 | DBMS のトランザクション管理に関する記述 |
□H14 午前問39 | トランザクション管理に関する記述 |
□H26 午前II問11 | 直列化可能性が保障されている状態の説明 |
□H25 午前II問19 | 直列化可能スケジュールの説明 |
□H25 午前II問9 | トランザクションの隔離性水準に関する指定 |
□H24 午前II問15 | 隔離性水準をREAD COMMITTEDに指定したときに発生する状態 |
□H18 午前問35 | 隔離性(isolation)水準READ COMMITTEDでの並行処理 |
□H15 午前問41 | トランザクション間の干渉の許容度が最も高いもの |
データベースのトランザクションT2の振る舞いのうち、ダーティリード(dirty read)に関する記述はどれか。
ア トランザクションT1が行を検索し、トランザクションT2がその行を更新する。その後T1は先に読んだ行を更新する。その後にT2が同じ行を読んでも、先のT2による更新が反映されない値を得ることになる。
イ トランザクションT1が行を更新し、トランザクションT2がその行を検索する。その後T1がロールバックされると、T2はその行に存在しない値を読んだことになる。
ウ トランザクションT2がある条件を満たす行を検索しているときに、トランザクションT1がT2の検索条件を満たす行を挿入する。その後T2が同じ条件でもう一度検索を実行すると、前回は存在しなかった行を読むことになる。
エ トランザクションT2が行を検索し、トランザクションT1がその行を更新しコミットする。その後T2が同じ行を検索した場合、同じ行を読んだにもかかわらず、異なる値を得ることになる。
(H26春DB午前II問14)
解答 演習23-2 イ
*囲み内をクリックすると解答を表示します(表示後ページをリロードすると、再び非表示になります)
二つのトランザクションT1とT2を並列に実行した結果が、T1の完了後にT2を実行した結果、又はT2の完了後にT1を実行した結果と等しい場合、このトランザクションスケジュールの性質を何と呼ぶか。
(H18春DB午前問42)
ア 一貫性 イ 原子性 ウ 耐久性 エ 直列可能性
解答 Point check エ
*囲み内をクリックすると解答を表示します(表示後ページをリロードすると、再び非表示になります)
Copyright © ITmedia, Inc. All Rights Reserved.