DBデータベーススペシャリスト試験 午前Ⅱ
平成31年度春期 データベーススペシャリスト 午前Ⅱ 問9
問題文と選択肢を読んで答えを考えてから、下の「正解と解説を見る」で確認しましょう。
問題
選択肢
- アREAD COMMITTED
- イREAD UNCOMMITTED
- ウREPEATABLE READ
- エSERIALIZABLE
解き方のヒントを見る
トランザクション境界の見極め
処理を一つのまとまりとして捉え、どの時点で状態の変化を確定させるかに注目します。途中の失敗や同時実行が、整合性の考え方にどう関係するかを整理しましょう。
この問題で問われていること
確認する観点を、処理の開始から終了までの境界に絞ります。各操作が同じまとまりに属するのか、別のまとまりとして扱うのかを、業務上の一貫性と照らして考えてください。
視点
トランザクションを単なる操作の列ではなく、状態を変化させる一つの単位として整理します。境界の置き方と、途中状態を他の処理がどう扱う想定かを確認しましょう。
確認ポイント
- 処理の開始点と終了点がどこに置かれているか
- 途中で失敗した場合に守るべき状態は何か
- 同時に別処理が動く場合の整合性をどう捉えるか
正解と解説を見る
正解
ア
解説
(1)はダーティリードを回避でき、(2)は同じ行を再読したときの列値が同じとは保証されない隔離性水準を問うている。この条件に該当するSQLの指定はREAD COMMITTEDです。
理由
READ COMMITTEDでは、他のトランザクションが確定していない更新内容を読み取るダーティリードを回避できる。一方、同じトランザクション中に同じ行を再び読むまでの間に、別のトランザクションの更新が確定すると、読込み結果が変わる可能性がある。
比較
READ UNCOMMITTEDはダーティリードを許すため(1)に合わない。REPEATABLE READは同じ行の再読結果を保証する水準であり、SERIALIZABLEはさらに直列実行相当の強い隔離を実現するため、いずれも(2)の条件には該当しない。
選択肢ア(正解)
これは正解だよ。READ COMMITTEDは、確定していない更新を読み取るダーティリードを回避できる。一方、同じ行を再度読む前に別トランザクションの更新が確定すると、1回目と異なる値を読む可能性があり、設問の(1)(2)の両方に合致する。
選択肢イ
これは不正解だよ。READ UNCOMMITTEDは、他のトランザクションがまだ確定していない更新内容を読み取ることを許す。そのため、設問(1)のダーティリードを回避できるという条件を満たさず、READ COMMITTEDとは異なる。
選択肢ウ
これは不正解だよ。REPEATABLE READは、同じトランザクション中に同じ行を読み直した場合の結果を保ち、反復不能読取りを防ぐ水準である。したがって、設問(2)の保証されないという条件には該当しない。
選択肢エ
これは不正解だよ。SERIALIZABLEは、隔離性水準の中でも最も強く、同時実行を直列実行に近い結果にする指定である。同じ行の再読結果も保証するため、設問(2)の条件とは一致しない。
学習のポイント
ダーティリードと反復不能読取りを隔離性水準ごとに区別する。
出典:独立行政法人 情報処理推進機構(IPA)平成31年度春期 データベーススペシャリスト試験 午前Ⅱ 問9(公式資料:問題冊子(PDF) / 解答例)
関連する過去問一覧
IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針