Several common DBMS engines usethemulti- version concurrency control mechanism called Snapshot Isola- tion, eventhoughapplication programscanexperience non- serializable executions whenrunconcurrently onsuchaplatform. Several proposals exist formodifying theapplication programs, without changing their semantics, sothattheyarecertain to execute serializably evenonanengine thatusesSI.We evaluate theperformance impact ofthese proposals, andfindthatsome havelimited impact(only a fewpercent dropinthroughput atagiven multi-programming level) while others leadtomuch greater reduction inthroughput ofup-to60%inhighcontention scenarios. We present experimental results forbothanopen- sourceandacommercial engine. We relate these tothetheory, giving guidelines onwhichconflicts tointroduce soastoensure correctness withlittle impact onperformance.
[1]
Alan Fekete,et al.
Allocating isolation levels to transactions
,
2005,
PODS '05.
[2]
Dennis Shasha,et al.
Making snapshot isolation serializable
,
2005,
TODS.
[3]
Fernando Pedone,et al.
Database replication using generalized snapshot isolation
,
2005,
24th IEEE Symposium on Reliable Distributed Systems (SRDS'05).
[4]
Bettina Kemme,et al.
Postgres-R(SI): combining replica control with concurrency control based on snapshot isolation
,
2005,
21st International Conference on Data Engineering (ICDE'05).
[5]
Irving L. Traiger,et al.
The notions of consistency and predicate locks in a database system
,
1976,
CACM.