摘要
商业数据库支持不同的隔离级别,以允许程序员在一致性和性能提升之间做出权衡。隔离级别在当前的 ANSI 标准中定义,但定义含糊不清,而为纠正该问题而提出的修订定义过于受限,因为它们仅允许悲观(锁定)实现。本文介绍了 ANSI 级别的新规范。我们的规范是可移植的;它们不仅适用于锁定实现,还适用于乐观和多版本并发控制方案。此外,与早期的定义不同,我们的新规范在所有级别上以正确且灵活的方式处理谓词。
Introduction
本文给出了 ANSI-SQL 隔离级别的新、精确定义 [6]。与以前的提案 [13、6、8] 不同,新定义既正确(它们排除了所有不良历史记录),又独立于实现。我们的规范允许使用各种并发控制技术,包括锁定、乐观技术 [20、2、5] 和多版本机制 [9、24]。因此,它们符合 ANSI-SQL 的目标,可以用作隔离标准。
隔离级别的概念最初是在 [13] 中以一致性程度的名称引入的。这项工作的目标是通过牺牲完全隔离的保证来为工作负载提供更好的并发性。[13] 中的工作和 [11] 建议的一些改进为 ANSI/ISO SQL-92 隔离级别定义 [6] 奠定了基础,其目标是制定一个独立于实现的标准。然而,后续论文 [8] 表明 [6] 中提供的定义含糊不清。该论文提出了避免歧义问题的不同定义,但如 [8] 所述,这些定义只是“锁定的伪装版本”,因此不允许乐观和多版本机制。因此,这些定义未能满足 ANSI-SQL 关于实现独立性的目标。