DBデータベーススペシャリスト試験 午前Ⅱ
平成26年度春期 データベーススペシャリスト 午前Ⅱ 問14
問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。
問題
選択肢
- アトランザクションT1が行を検索し,トランザクションT2がその行を更新する。その後T1は先に読んだ行を更新する。その後にT2が同じ行を読んでも,先のT2による更新が反映されない値を得ることになる。
- イトランザクションT1が行を更新し,トランザクションT2がその行を検索する。その後T1がロールバックされると,T2はその行に存在しない値を読んだことになる。
- ウトランザクションT2がある条件を満たす行を検索しているときに,トランザクションT1がT2の検索条件を満たす行を挿入する。その後T2が同じ条件でもう一度検索を実行すると,前回は存在しなかった行を読むことになる。
- エトランザクションT2が行を検索し,トランザクションT1がその行を更新しコミットする。その後T2が同じ行を検索した場合,同じ行を読んだにもかかわらず,異なる値を得ることになる。
解き方のヒントを見る
トランザクション境界の見極め
処理のまとまりと整合性を考えるときは、どの時点で一連の操作を区切り、途中状態を外部からどう扱うかという観点に絞って整理しましょう。用語の役割を分けて確認します。
この問題で問われていること
設問を読む際は、複数の操作が一つの処理単位として扱われる範囲と、その境界で状態が確定したと見なせるかを中心に、前後関係を丁寧に確認してください。
視点
処理の開始から終了までを一つのまとまりとして捉え、途中の状態、確定の契機、他の処理との関係を切り分けて考えます。特定の方式や式を先に当てはめず、境界が意味する役割を整理しましょう。
確認ポイント
- 一連の操作をどこからどこまでのまとまりとして読めるか
- 途中の状態と処理完了後の状態を区別できているか
- 境界の前後で、他の処理との関係を確認できているか
正解と解説を見る
正解
イ
解説
ダーティリードとは、あるトランザクションが更新した未コミットの値を、別のトランザクションが読み取る現象です。その後に更新側がロールバックすると、読み取った値は確定データとして存在しないものになる。
理由
T1が行を更新した後、その更新をコミットする前にT2が行を検索すると、T2はT1による未確定の値を読む可能性がある。T1がロールバックすれば、その値はデータベースに確定されないため、これがダーティリードに該当する。
比較
未コミット更新の読取りがダーティリードであるのに対し、同じ行を再読込みして値が変わる現象は反復不能読取り、検索結果に行が増減する現象はファントムリードです。
選択肢ア
これは不正解だよ。T2の更新後にT1が同じ行を更新しているため、T1の更新によってT2の更新内容が上書きされた状況を表している。その後にT2が読む値が自分の更新を反映しないことは、未コミット値を別の取引が読んで後に取り消されるダーティリードではない。
選択肢イ(正解)
これは正解だよ。T1が行を更新した後、その更新が確定する前にT2が検索して値を読んでいる。その後T1がロールバックすると、T2が読んだ値はデータベースに確定されない値になる。このような未コミット更新の読取りがダーティリードである。
選択肢ウ
これは不正解だよ。T1がT2の検索条件を満たす行を後から挿入し、T2が同じ条件で再検索した結果、前回なかった行を読む状況である。これは検索範囲に行が出現するファントムリードの説明であり、更新途中の値を読むダーティリードではない。
選択肢エ
これは不正解だよ。T2が一度行を読んだ後、T1がその行を更新してコミットし、T2が同じ行を再度読むと値が変わる状況である。更新はコミット済みなので、未コミット値を読むダーティリードではなく、反復不能読取りに該当する。
学習のポイント
未コミット値の読取りと、反復不能読取りやファントムリードを区別する。
出典:独立行政法人 情報処理推進機構(IPA)平成26年度春期 データベーススペシャリスト試験 午前Ⅱ 問14(公式資料:問題冊子(PDF) / 解答例)
関連する過去問一覧
IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針