SkillStack
テクノロジ系15 / 25問

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

トランザクションT1、T2を同時実行した際に、次の異状を防ぐことができるトランザクションの隔離性水準のうち、最も水準の低いものはどれか。 〔異状〕 T1が同じデータを複数回読み込んでいる途中で、T2がそのデータを更新してコミットしたことによって、T1が更新していないのにもかかわらずT1が読み込むデータが変わってしまう。

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

正解と解説を見る

【正解】ウ

示された異状は、同じトランザクションが同じデータを読み直したとき、別のトランザクションが途中で更新してコミットしたため、前回とは異なる値が得られる現象です。これは反復不能読出し、又はノンリピータブルリードと呼ばれます。REPEATABLE READでは、T1が一度読み取った行について、T1の終了まで同じ値を繰り返し読めることが保証され、この異状を防止できます。該当する水準のうち最も低いものなので、ウが正解です。

アのREAD COMMITTEDは誤りです。これは、ほかのトランザクションがコミットしていない値を読むダーティリードを防ぎます。しかし、T1の一回目の読出し後にT2が更新をコミットすれば、T1の二回目の読出しで新しい値が見えることがあり、反復不能読出しは防げません。

イのREAD UNCOMMITTEDは誤りです。これは最も低い隔離性水準であり、未コミットの更新結果まで読み取る可能性があります。ダーティリードにも反復不能読出しにも対応できません。

エのSERIALIZABLEでも反復不能読出しを防止できますが、誤りです。これは並行実行した結果を直列実行と同等にする最も高い水準であり、設問が求める最も低い水準ではありません。

【ポイント】 隔離性水準は、READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ、SERIALIZABLEの順に高くなります。 反復不能読出しにはREPEATABLE READ、検索条件に合う行が増減するファントムリードまで確実に防ぐにはSERIALIZABLEが基本です。

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

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

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