【りーどこみってど】
Read Committed とは?
💡 確定したものだけ見せてね!下書きはお断り
📌 このページのポイント
- コミット済みのデータだけを読み取る分離レベル
- ダーティリードは防止できるが、ノンリピータブルリードは防げない
- PostgreSQLやOracleのデフォルト分離レベル
- 多くの業務アプリケーションで十分な安全性を提供する
Read Committedって、何を読めるの?
「コミット済み(確定済み)」のデータだけを読み取れる、というトランザクション分離レベルだよ。他のトランザクションがまだ処理中の未確定データは見えないようにするんだ
それってつまりダーティリードが防げるってことだよね?
そう!ダーティリードは防げるよ。でも、他のトランザクションがコミットした変更は見えちゃうから、同じクエリを2回実行すると値が変わるノンリピータブルリードは起きうるんだ
どのデータベースで使われてるの?
PostgreSQLやOracle Databaseのデフォルト分離レベルがRead Committedだよ。一方、MySQLのInnoDBはRepeatable Readがデフォルトなんだ
じゃあPostgreSQLの方が安全性が低いの?
一概にそうとは言えないよ。Read Committedはロックが少ないからパフォーマンスが良く、多くの業務アプリでは十分な安全性なんだ。必要に応じて分離レベルを上げればいいだけだしね
分離レベルって全部でいくつあるの?
SQL標準では4つ定義されているよ。Read Uncommitted、Read Committed、Repeatable Read、Serializableの順に安全性が上がるけど、その分パフォーマンスは下がる。実務では「デフォルトのまま使って、問題が出たら上げる」というアプローチが多いんだよ
まとめ:ざっくりこれだけ覚えればOK!
「Read Committed」って出てきたら「確定済みデータだけ読む安全設定」と思えればだいたいOK!
📖 おまけ:英語の意味
「Read Committed」 = コミット済み読み取り
💬 committed(確定済み)のデータだけをread(読む)できるという意味だよ