私は簡単な質問から始めます:
Wikipedia およびMsdnの Dirty Read の定義によると 、次のようになります。
T1 と T2 の 2 つの同時トランザクションがあります。
T1 が行を更新しており、T2 が T1 によって「まだコミットされていない」行を読み取っている場合、ダーティ リードが発生します。
ただし、Read Committed レベルでは、データが読み取られるとすぐに共有ロックが解放されます (トランザクションの終了時やステートメントの終了時でさえありません)。
では、Read Committed はどのようにダーティ リードを防止するのでしょうか? Bkaz 更新された行 T2 で解放された共有ロックが更新された行を読み取ることができ、t1 が操作全体をロールバックできるようになるとすぐに、t1 の手でダーティ リードが発生します。