2015年4月23日更新
昨年、並行性、ステートメントとトランザクションのACIDプロパティ、およびSQLServerの主要な分離レベルのそれぞれを詳細に調べることを目的とした一連の投稿をまとめました。これで、おそらく最も一般的な意図的に使用される分離レベルに関する最後の投稿でシリーズを締めくくりました。コミットされていない読み取り(「NOLOCK」)です。
ステートメントとトランザクションのACIDプロパティ |
シリアル化可能な分離レベル |
繰り返し可能な読み取り分離レベル |
読み取りコミット分離レベル |
コミットされたスナップショットアイソレーションを読み取る |
読み取りコミットスナップショットアイソレーションでのデータ変更 |
スナップショット分離レベル |
読み取り非コミット分離レベル |
あなたは最終回を辛抱強く待っていたので、私が提供できるコミットされていない読み取りに関する他のバックグラウンドの読み取り/監視があります:
- Lubor Kollar:NOLOCKヒントを使用すると、以前にコミットされた行が失われる可能性があります
- アーロンベルトラン:悪い習慣:どこにでもNOLOCKを置く
- Craig Freedman:読み取りがコミットされていないクエリの失敗
- Aaron Bertrand:SQLServerのUPDATEおよびDELETEステートメントでNOLOCKを使用しないでください
- David Lean:SQLServerNOLOCKヒントとその他の貧弱なアイデア
- Sunil Agarwal:同時実行シリーズ:Read Uncommitted分離レベルを使用したり、NOLOCKヒントを使用したりすると、ブロックされるのはなぜですか?
- Tony Rogerson:Timebomb – NOLOCK / READ UNCOMMITTED(およびフォローアップ)の一貫性の問題