SkillStack
テクノロジ系7 / 25問

データベーススペシャリスト試験 令和3年度 秋期 午前II 問7

次の(1)、(2)に該当するトランザクションの隔離性水準はどれか。 (1) 対象の表のダーティリードは回避できる。 (2) 一つのトランザクション中で、対象の表のある行を2回以上参照する場合、1回目の読込みの列値と2回目以降の読込みの列値が同じであることが保証されない。

選択肢を押すと答え合わせができます。

正解と解説を見る

【正解】ア

ダーティリードとは、ほかのトランザクションが更新したものの、まだコミットしていない値を読み込む現象です。READ COMMITTEDでは、コミット済みのデータだけを読み込むので、条件(1)のダーティリードを回避できます。

一方、READ COMMITTEDが保証するのは、各読込み時点で値がコミット済みであることまでです。同じトランザクション内で同じ行を2回読んでも、その間に別のトランザクションがその行を更新してコミットすれば、2回目には新しい値が読み込まれることがあります。この現象をノンリピータブルリードといい、条件(2)は、この現象が発生し得ることを示しています。したがって、二つの条件に該当する隔離性水準はREAD COMMITTEDです。

イのREAD UNCOMMITTEDは誤りです。未コミットの更新値も読み込める最も低い隔離性水準であり、ダーティリードを回避できません。

ウのREPEATABLE READは誤りです。同じ行を繰り返し読み込んだとき、原則として同じ列値になることを保証し、ノンリピータブルリードを防止する水準です。ただし、検索条件に該当する行が途中で増減するファントムリードは起こり得ます。

エのSERIALIZABLEは誤りです。複数のトランザクションを直列に実行した場合と同等の結果を保証する最も高い隔離性水準であり、ダーティリード、ノンリピータブルリード及びファントムリードを防止します。

【ポイント】 隔離性水準が高いほどデータの一貫性は高まりますが、同時実行性は低下しやすくなります。 READ COMMITTEDは「未コミット値は読まないが、再読込み時の同値性までは保証しない」と覚えます。

出典:令和3年度 秋期 データベーススペシャリスト試験 午前II 問7
※ 解説は SkillStack 編集部が作成したものです。Web 表示のため、図表の配置や表記を一部改めています。

この回の25問を、アプリで通しで解く

  • 本番と同じ問題数・制限時間で通し演習(模試モード)
  • 間違えた問題は自動で「復習すべき問題」に回る
  • 解説で分からない点はAIに質問できる
SkillStackで無料で始める