Correct execution of transactions at different isolation levels

Correct execution of transactions at different isolation levels
复制标题

不同隔离级别下事务的正确执行

DOI:
--
复制
发表时间:
2004
影响因子:
8.9
通讯作者:
P. M. Lewis
P. M. Lewis
中科院分区:
计算机科学2区
文献类型:
--
作者:
Shiyong Lu;A. Bernstein;P. M. Lewis

文献摘要

被引文献

相似文献

许多事务处理应用程序在低于SERIALIZABLE的隔离级别上执行,以提高吞吐量并缩短响应时间。但是,生成的时间表可能无法序列化,因此不一定正确。特定应用程序的语义决定了该应用程序是否能在较低级别上正确运行,实际上,许多应用程序似乎都能正确运行。选择运行应用程序的隔离级别以及分析结果执行的正确性的决定通常是非正式地完成的。我们开发了一个正式的技术来分析和原因的正确性,执行的应用程序在隔离级别以外的SERIALIZABLE。我们使用一个新的概念的正确性,语义正确性,一个标准弱于串行化,调查正确性。特别是,对于每个隔离级别,我们证明了一个条件下,在该级别上执行的事务将是语义正确的。除了READ UNCOMMITTED、READ COMMITTED和REPEATABLE READ的ANSI/ISO隔离级别之外,我们还证明了在READ-COMMITTED和first-committer-wins以及SNAPSHOT隔离下正确执行的条件。我们假设同一应用程序中的不同事务可以在不同级别执行,但每个事务至少在READ UNCOMMITTED执行。
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. 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.