Row Versioning based Isolation levels are very useful in reducing blocking. Which are.

Read committed isolation using row versioning provides statement-level read consistency however Snapshot isolation provides transaction-level read consistency.

Statement-level read consistency Vs. Transaction-level read consistency

In Statement-level read consistency when each statement within the transaction executes, a new data snapshot is taken and remains consistent for each statement until the statement finishes execution. Enable this when:

In Transaction-level read consistency, a data snapshot is taken when the snapshot transaction starts, and remains consistent for the duration of the transaction, due to that it provides the benefit of repeatable without using shared locks Use snapshot isolation when: