Snapshot Isolation

What
Snapshot isolation is a guarantee that all reads will see a snapshot of the database at an earlier time.

Strategy
Take the most recently updated value during a read unless the transaction modified the value. In the latter case, we use the value that the transaction has modified it to.

Advantages

 * Reading is never blocked and reading does not block writes because reads look at a snapshot of the data from the beginning of the transaction
 * No dirty reads
 * No lost updates
 * No inconsistent read
 * Set-based selects are repeatable (no phantoms)