Snapshot isolation (SI) is a widely studied concurrency control approach, with great impact in practice within platforms such as Oracle DB. Berenson et al showed though that SI does not guarantee serializable execution; in certain situations, data consistency can be violated through concurrency between correct applications. Recently, variants of SI have been proposed, that keep the key properties such as (often) allowing concurrency between reads and updates, and that also guarantee that every execution will be serializable. We have had the opportunity to use three implementations of two different algorithms of this type, all based on the InnoDB open source infrastructure. We measure the performance attained by these implementations, on high-end hardware with a substantial number of cores. We explore the impact of the differences in algorithm, and also of the low-level implementation decisions.
This is joint work with Hyungsoo Jung (University of Sydney ), Hyuck Han (Seoul National University), Uwe Roehm (University of Sydney), Heon Y. Yeom (Seoul National University).