June 1995 | Hal Berenson, Phil Bernstein, Jim Gray, Jim Melton, Elizabeth O'Neil, Patrick O'Neil
This paper critiques the ANSI SQL-92 isolation levels, which are defined in terms of three phenomena: Dirty Reads, Non-Repeatable Reads, and Phantoms. The authors argue that these definitions are ambiguous and incomplete, leading to counter-intuitive results and differences between lock-based and ANSI SQL isolation levels. They propose a broader interpretation of these phenomena and introduce new phenomena to better characterize isolation types. The paper also defines Snapshot Isolation, a multiversion concurrency control mechanism that provides a reduced isolation level between READ COMMITTED and REPEATABLE READ. This mechanism is shown to be stronger than READ COMMITTED and to avoid certain anomalies like Dirty Reads and Phantoms. The paper concludes by discussing other multi-version systems and their isolation levels, emphasizing the benefits of Snapshot Isolation for read-only transactions and its potential drawbacks for long-running update transactions.This paper critiques the ANSI SQL-92 isolation levels, which are defined in terms of three phenomena: Dirty Reads, Non-Repeatable Reads, and Phantoms. The authors argue that these definitions are ambiguous and incomplete, leading to counter-intuitive results and differences between lock-based and ANSI SQL isolation levels. They propose a broader interpretation of these phenomena and introduce new phenomena to better characterize isolation types. The paper also defines Snapshot Isolation, a multiversion concurrency control mechanism that provides a reduced isolation level between READ COMMITTED and REPEATABLE READ. This mechanism is shown to be stronger than READ COMMITTED and to avoid certain anomalies like Dirty Reads and Phantoms. The paper concludes by discussing other multi-version systems and their isolation levels, emphasizing the benefits of Snapshot Isolation for read-only transactions and its potential drawbacks for long-running update transactions.