Summary
- If you have locking problems then you have a problem with your code: it isn't the database engine
- It isn't a magic bullet
- You may add more problems
Load
It will also increase load on your tempdb and CPUCPU. Also see:
- "Performance Impact: The Potential Cost of Read_Committed_Snapshot""Performance Impact: The Potential Cost of Read_Committed_Snapshot" (Linchi Shea)
Safety
Most important, snapshot isolations are not safe in many cases by default. Read "Snapshot isolation" (Wikipedia)"Snapshot isolation" (Wikipedia) for more on write-skew anomalies. The next section is "Making Snapshot Isolation Serializable" to get around this.
In general, therefore, snapshot isolation puts some of the problem of maintaining non-trivial constraints onto the user, who may not appreciate either the potential pitfalls or the possible solutions. The upside to this transfer is better performance.
Also see:
- "The Potential Dangers of the Read Committed Snapshot Isolation Level" (JimMcLeod, disputed in comments by Alex Kuznetsov)
- http://coderjournal.com/2008/08/deadlocked-read-committed-snapshot-explained/Deadlocked!: "read committed snapshot" Explained (Nick Berardi)
- Serializable vs. Snapshot Isolation Level, the Marble problemSerializable vs. Snapshot Isolation Level, the Marble problem (Craig Freedman)
- http://sqlblog.com/blogs/alexander_kuznetsov/archive/2011/08/02/reads-involving-udfs-under-read-committed-snapshot-may-seem-inconsistent.aspxReads involving UDFs under READ_COMMITTED_SNAPSHOT may seem inconsistent (Alex Kuznetsov)