A Critique of ANSI SQL Isolation Levels论文阅读

编程入门 行业动态 更新时间:2024-10-18 21:23:47

A Critique of ANSI SQL Isolation Levels<a href=https://www.elefans.com/category/jswz/34/1770125.html style=论文阅读"/>

A Critique of ANSI SQL Isolation Levels论文阅读

A Critique of ANSI SQL Isolation Levels

摘要

ANSI SQL通过脏读、不可重复读和幻想(如幻读)现象定义了隔离级别。这篇论文介绍了这些现象和ANSI SQL定义未能正确描述的几个比较流行的隔离级别,包括所覆盖级别的标准锁的实现。介绍了更好地描述了隔离级别的新现象。最后,定了一个重要的多版本隔离类型,快照隔离(Snapshot Isolation)。

1 引言

ANSI/ISO SQL-92定义了四种隔离级别:(1)读未提交,(2)读已提交,(3)可重复读,(4)序列化。

2 隔离定义

2.1 序列化概念

一个事务由一组把数据库从一个一致性状态转换到另一个一致性状态的操作组成。一个历史记录将一组事务的交错执行建模为其操作的线性顺序,例如对特定数据项的读写(包括插入、更新和删除)操作。如果不同事务在相同数据项上执行并且其中一个为写操作的两个操作被称为冲突。

2.2 ANIS SQL隔离级别

ANSI-SQL隔离设计人员寻求一个定义,允许许多不同的实现,而不仅仅是锁。他们用以下三种现象来定义隔离:

  • P1(脏读):事务T1修改一个数据项。另一个事务T2在T1执行提交或回滚操作之前读取了那个数据项。如果T1执行了回滚操作,那么T2就读取了一个从来都没提交过也就是没有真正存在过的数据项。
  • P2(不可重复读 或 模糊读):事务T1读取了一个数据项。另一个事务T2修改或删除了那个数据项并且完成了提交操作。如果T1尝试重新读取这个数据项,它就会收到一个修改过的值或者发现这个数据项已经被修改了。
  • P3(幻像/幻读):事务T1在满足特定查询条件读取了一个数据项集合。然后事务T2创建了一个满足T1查询条件的数据项并且完成了提交操作。如果T1在相同的查询条件下重新读取,它会得到一个和第一次读取不同的数据项集合。

论文中操作:w表示写,r表示读,c表示提交,a表示终止回滚,P表示查询条件(predicate)。例如:w1[x]:表示事物1在数据项x上的写操作。
对于同一个隔离级别,P是比A更宽松的解释,P可能会导致异常,A是直接指出了异常。

  • 脏读:

P1: w1[x]…r2[x]…((c1 or a1)and(c2 or a2)在任意的顺序)
A1: w1[x]…r2[x]…(a1 and c2在任意的顺序)

  • 不可重复读:

P2: r1[x]…w2[x]…((c1 or a1)and(c2 or a2)在任意的顺序)
A2: r1[x]…w2[x]…c2…r1[x]…c1

  • 幻像(幻读):

P3: r1[P]…w2[y in P]…((c1 or a1)and(c2 or a2)在任意的顺序)
A2: r1[P]…w2[y in P]…c2…r1[P]…c1

IsolationP1(or A1)脏读P2(or A2)不可重复读P3(or A3)幻象
ANSI READ UNCOMMITTEDPossiblePossiblePossible
ANSI READ COMMITTEDNot PossiblePossiblePossible
ANSI REPEATABLE READNot PossibleNot PossiblePossible

更多推荐

A Critique of ANSI SQL Isolation Levels论文阅读

本文发布于:2024-03-05 00:08:20,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1710782.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:论文   ANSI   Critique   SQL   Levels

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!