ダーティリードとは?ダーティリード
ダーティリードとは、他のトランザクションがまだ確定していない更新値を読んでしまう現象。読んだ後にその更新が取り消されると、一度も存在しなかった値をもとに処理を進めたことになる。3つの読取り異常のうち、影響が最も重いもの。
最終更新:2026-10-06
この語が出る過去問を解く →背景
更新中の値を一切見せない設計にすれば防げるが、その待ちが増えるほど参照系の処理は遅くなる。参照の速さを優先して最も緩い水準を選ぶと、この現象を許すことになる。運用では、締め処理の裏で参照レポートを走らせる構成をとるときに、どこまで緩めてよいかの判断として問われる。
具体例
入金の登録処理がまだ確定していない段階でその金額を読み、残高が足りると判定して出金を通してしまう。登録側が異常で取り消されると、実在しない入金にもとづく出金だけが帳簿に残り、翌日の突合で初めて気づくことになる。
試験での引っ掛け
READ UNCOMMITTED でのみ発生し、READ COMMITTED 以上では起きない。確定済みの値だけを読んでいても値が変わる反復不能読取りとは、原因も必要な水準も違う。「参照するだけだから緩めても安全」という整理は成り立たない。
関連用語
出た過去問
出典:令和5年度 春期 ITサービスマネージャ試験 午前Ⅱ 問23(IPA)解説で登場
2相ロッキングプロトコルに従うトランザクションで発生する可能性のある現象はどれか。
正解:デッドロック
要点:2相ロックは直列化可能性を保証するが、デッドロックは防げない
2相ロッキングプロトコルは、ロックを取得する成長相と解放する縮退相に分け、いったん解放を始めたら新たなロックを取らない方式である。これにより直列化可能性(順番に実行したのと同じ結果になる性質)が保証され、ロストアップデートやノンリピータブルリードといった不整合は防げる。さらにロックをコミットまで保持する形(厳格な2相ロッキング)にすれば、ダーティリードも防げる。しかし複数トランザクションが互いの保持するロックを待ち合う状態は避けられず、デッドロックは発生し得る。
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。