Skip to content
maysamyabandeh edited this page Apr 27, 2012 · 4 revisions

The default isolation level in Omid is Snapshot Isolation, which is also implemented by Oracle, PostgresSQL, and Google Percolator. Snapshot Isolation prevent the inconsistencies that manifest by a write-write conflicts. There is a certain class of inconsistencies that do not cause write-write conflict between two concurrent transactions and hence could manifest in any system that implements Snapshot Isolation. The ideal is to provide serializability, where the concurrent execution of transactions corresponds to one serial execution of them. Serializability is currently implemented in readWrite branch and we are planning to merge it to the main branch.

We implement two approaches to provide serializability:

  1. Adding read-write conflict checking to the write-write conflict checking of Snapshot Isolation
  2. Preventing only read-write conflicts

The benefit of the former is simplicity. However, depending on the workload, it could cause a higher abort rate since some more transactions are aborted due to read-write conflicts. We, nevertheless, prove that checking for read-write conflicts alone is sufficient to provide serializability [1]. We, therefore, implement also the latter approach that prevents only the read-write conflicts. The implementation details could be found here

References

[1] Daniel Gómez Ferro, Maysam Yabandeh, A Critique of Snapshot Isolation, EuroSys, 2012.

Clone this wiki locally