Updated April 23, 2015
Last year, I put together a string of posts aimed at taking a detailed look at concurrency, the ACID properties of statements and transactions, and each of the major isolation levels in SQL Server. Now I have concluded the series with a final post on probably the most common intentionally-used isolation level: read uncommitted ("NOLOCK").
Since you've been patient for the final installment, there is some other background reading/watching on read uncommitted that I can offer:
- Lubor Kollar : Previously committed rows might be missed if NOLOCK hint is used
- Aaron Bertrand : Bad Habits : Putting NOLOCK Everywhere
- Craig Freedman : Query Failure with Read Uncommitted
- Aaron Bertrand : Avoid using NOLOCK on SQL Server UPDATE and DELETE statements
- Alexander Kuznetsov : Selects under READ COMMITTED and REPEATABLE READ may return incorrect results
- Kendra Little : There's Something About Nolock : Webcast video
- David Lean : SQL Server NOLOCK Hint & other poor ideas
- Andrew Kelly : How Dirty Are Your Reads?
- Sunil Agarwal : Concurrency Series: Why do I get blocking when I use Read Uncommitted isolation level or use NOLOCK hint?
- Tony Rogerson : Timebomb – The Consistency Problem with NOLOCK / READ UNCOMMITTED (and a follow-up)
- Linchi Shea : Performance impact: Can SELECT (NOLOCK) block INSERTs?
- Merrill Aldrich : Transaction Isolation / Dirty Reads / Deadlocks Demo