I was researching the differences between SQL Server's READ COMMITTED SNAPSHOT
and SNAPSHOT
isolation levels and came across the following resource:
Choosing Row Versioning-based Isolation Levels
For most applications, read committed isolation using row versioning is recommended over snapshot isolation for the following reasons:
It consumes less tempdb space than snapshot isolation.
Snapshot isolation is vulnerable to update conflicts that are not applicable to read committed isolation using row versioning. When a transaction running under snapshot isolation reads data that is then modified by another transaction, an update by the snapshot transaction to the same data causes an update conflict and the transaction terminates and rolls back. This is not an issue with read committed isolation using row versioning.
I'm somewhat new to these topics, but I can't seem to understand the two bullet points from the link above.
Why would the tempdb space be different for these modes? Does one store more granular versioning than the other?
Why is snapshot isolation more vulnerable to update conflicts?