-
Notifications
You must be signed in to change notification settings - Fork 1
Serializability
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:
- Adding read-write conflict checking to the write-write conflict checking of Snapshot Isolation
- 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
[1] Daniel Gómez Ferro, Maysam Yabandeh, A Critique of Snapshot Isolation, EuroSys, 2012.