Concurrency in programming and database systems
Concurrency in programming and database systems
A critique of ANSI SQL isolation levels
SIGMOD '95 Proceedings of the 1995 ACM SIGMOD international conference on Management of data
Transaction decomposition using transaction semantics
Distributed and Parallel Databases
Logic in computer science: modelling and reasoning about systems
Logic in computer science: modelling and reasoning about systems
Concurrency control for step-decomposed transactions
Information Systems
Ten Years of Hoare's Logic: A Survey—Part I
ACM Transactions on Programming Languages and Systems (TOPLAS)
The notions of consistency and predicate locks in a database system
Communications of the ACM
Design and Performance of an Assertional Concurrency Control System
ICDE '98 Proceedings of the Fourteenth International Conference on Data Engineering
Semantic Conditions for Correctness at Different Isolation Levels
ICDE '00 Proceedings of the 16th International Conference on Data Engineering
Proof and System-Reliability
Promoting levels of openness on component-based adaptable middleware
Proceedings of the 6th international workshop on Adaptive and reflective middleware: held at the ACM/IFIP/USENIX International Middleware Conference
Inherent limitations on disjoint-access parallel implementations of transactional memory
Proceedings of the twenty-first annual symposium on Parallelism in algorithms and architectures
Hi-index | 0.00 |
Many transaction processing applications execute at isolation levels lower than SERIALIZABLE in order to increase throughput and reduce response time. However, the resulting schedules might not be serializable and, hence, not necessarily correct. The semantics of a particular application determines whether that application will run correctly at a lower level and, in practice, it appears that many applications do. The decision to choose an isolation level at which to run an application and the analysis of the correctness of the resulting execution is usually done informally. In this paper, we develop a formal technique to analyze and reason about the correctness of the execution of an application at isolation levels other than SERIALIZABLE. We use a new notion of correctness, semantic correctness, a criterion weaker than serializability, to investigate correctness. In particular, for each isolation level, we prove a condition under which the execution of transactions at that level will be semantically correct. In addition to the ANSI/ISO isolation levels of READ UNCOMMITTED, READ COMMITTED, and REPEATABLE READ, we also prove a condition for correct execution at the READ-COMMITTED with first-committer-wins and at SNAPSHOT isolation. We assume that different transactions in the same application can be executing at different levels, but that each transaction is executing at least at READ UNCOMMITTED.