反復不能読取りとは?はんぷくふのうよみとり
反復不能読取りとは、同一トランザクションの中で同じ行を2回読んだとき、その間に別のトランザクションが確定させた更新や削除の影響で、1回目と2回目の値が食い違う現象。読んだ値はいずれも確定済みなので、個々の値は正しいのに集計としての一貫性だけが崩れる。
最終更新:2026-10-06
この語が出る過去問を解く →背景
隔離性水準を最も厳しくすれば防げるが、その分ロックが長く効いてオンラインの応答が悪化する。整合性と応答性能のどちらをどこまで取るかは業務ごとに決めるしかなく、そのつまみとして水準が段階的に用意されている。運用では、月次の集計処理を業務時間帯に走らせてよいかの判断に直結する。
具体例
稼働率レポートの作成中に同じ契約テーブルを二度参照し、その間に営業側の変更が確定したため、前半と後半で違う単価が使われて合計が合わない。処理を停止時間帯へ移すか、隔離性水準を上げて所要時間の増加を受け入れるかの選択になる。
試験での引っ掛け
防ぐには REPEATABLE READ 以上が必要で、READ COMMITTED では防げない。未確定の値を読むダーティリードとは別物で、こちらは確定済みの値だけを読んでいても起きる。行そのものが増える現象はファントムリードで、REPEATABLE READ でも起こりうる。
関連用語
出た過去問
出典:令和5年度 春期 ITサービスマネージャ試験 午前Ⅱ 問23(IPA)解説で登場
2相ロッキングプロトコルに従うトランザクションで発生する可能性のある現象はどれか。
正解:デッドロック
要点:2相ロックは直列化可能性を保証するが、デッドロックは防げない
2相ロッキングプロトコルは、ロックを取得する成長相と解放する縮退相に分け、いったん解放を始めたら新たなロックを取らない方式である。これにより直列化可能性(順番に実行したのと同じ結果になる性質)が保証され、ロストアップデートやノンリピータブルリードといった不整合は防げる。さらにロックをコミットまで保持する形(厳格な2相ロッキング)にすれば、ダーティリードも防げる。しかし複数トランザクションが互いの保持するロックを待ち合う状態は避けられず、デッドロックは発生し得る。
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。