反復不能読取りとは?はんぷくふのうよみとり
反復不能読取りとは、同一トランザクション内で同じ行を2回読んだとき、その間に他のトランザクションが更新・削除をコミットしたために値が変わってしまう現象。1回目と2回目で違う値を使うことになり、集計や判定の一貫性が崩れる。非再現読取りとも呼ばれる。
最終更新:2026-10-06
この語が出る過去問を解く →背景
READ COMMITTEDでは「コミット済みの値しか読まない」ことは守られるが、読んだ値をトランザクションの終わりまで押さえておく保証はない。並行度を上げるためにロックを早く手放す設計の裏返しとして、この現象が残る。複数回の読取りを跨いで整合した結果を出す必要があるかどうかが、水準を1段上げる判断の分かれ目になる。
具体例
月次集計が受注明細を2回走査する構成になっていると、1回目と2回目の間に単価改定がコミットされ、前半と後半で違う単価を使った合計が出る。読み直しても同じ値であることを保証したいなら、REPEATABLE READ以上を選ぶ。
試験での引っ掛け
これを防ぐ最低の隔離性水準はREPEATABLE READで、READ COMMITTEDでは防げない。行の中身が変わるのが反復不能読取り、条件に合う行の集合が増減するのがファントムリードで、後者はREPEATABLE READでも規格上は起こり得る(SERIALIZABLEで消える)。
関連用語
出た過去問
出典:令和3年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問7(IPA)解説で登場
次の(1),(2)に該当するトランザクションの隔離性水準はどれか。 (1)対象の表のダーティリードは回避できる。 (2)一つのトランザクション中で、対象の表のあ…
正解:READ COMMITTED
要点:READ COMMITTEDはダーティリードのみ防ぐ隔離性水準
ダーティリード(未コミットの値の読取り)は防げるが、同じ行を読み直すと他トランザクションのコミット済み更新が見えてしまい値が変わり得る、という状態は反復不能読取りが起きる水準である。これに当たるのがREAD COMMITTEDである。
出典:令和4年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問14(IPA)解説で登場
トランザクションT1がある行Xを読んだ後、別のトランザクションT2が行Xの値を更新してコミットし、再びT1が行Xを読むと、以前読んだ値と異なる値が得られた。この…
正解:REPEATABLE READ
要点:反復不能読取りを防ぐ最低水準はREPEATABLE READ
同じ行を読み直したときに値が変わってしまう現象は反復不能読取りと呼ばれる。これを防ぐ隔離性水準はREPEATABLE READとSERIALIZABLEだが、問われているのは回避できる最も低い水準なのでREPEATABLE READが答えになる。
出典:令和7年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問15(IPA)解説で登場
トランザクションT1, T2を同時実行した際に、次の異状を防ぐことができるトランザクションの隔離性水準のうち、最も水準の低いものはどれか。 〔異状〕 T1が同じ…
正解:REPEATABLE READ
要点:反復不能読取りを防ぐ最低水準はREPEATABLE READ
同じ行を読み直したら他のトランザクションの更新で値が変わっていた、という現象は反復不能読取り(ノンリピータブルリード)である。これを防ぐには、読み取った行に対する一貫性を取引の終了まで保証する水準が必要で、その最も低いものがREPEATABLE READにあたる。より上位のSERIALIZABLEでも防げるが、設問は最低水準を問うている。
出典・参考
高度試験 午前I(高度午前I 相当)のシラバスの3 技術要素 > 4. トランザクション処理 > (1) 同時実行制御(排他制御)に掲載されている用語です。
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。