第七章数据库事务管理(1)_第1页
第七章数据库事务管理(1)_第2页
第七章数据库事务管理(1)_第3页
第七章数据库事务管理(1)_第4页
第七章数据库事务管理(1)_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第七章第七章 数据库事务管理数据库事务管理z7.1 事务与事务管理事务与事务管理 7.1.1 事务概念与性质事务概念与性质 7.1.2 事务操作与状态事务操作与状态 7.1.3 SQL事务机制事务机制z7.2 并发控制技术并发控制技术z7.3 数据库故障恢复数据库故障恢复Thinkingz 选修表的外部键选修表的外部键学号学号引用了学生表的主键,参照动作引用了学生表的主键,参照动作为为RESTRICT。z 则以下语句最终删除了几条记录?则以下语句最终删除了几条记录?学生学生学学 号号姓姓 名名性别性别年级年级201204王小明王小明男男2012201206张艳张艳女女2012201208黄大鹏

2、黄大鹏男男2012201312刘芳刘芳女女2013201326李兰秋李兰秋女女2013选修选修学学 号号课程号课程号成绩成绩201208 H3035 NULLDelete From 学生学生 Where 年级年级=2012事务概念事务概念z事务定义事务定义v事务是事务是DBMS的基本执行单位,的基本执行单位,由一序列的数由一序列的数据库访问和修改操作组成。这些操作要么全做,据库访问和修改操作组成。这些操作要么全做,要么全不做,是一个不可分割的整体。要么全不做,是一个不可分割的整体。 w例如银行转帐事务由两个操作组成:例如银行转帐事务由两个操作组成: 转出帐户转出帐户A 减去某一金额(减去某一金

3、额(A=A?) 转入帐户转入帐户B 增加相同金额(增加相同金额(B=B + ?) 这两个操作放在同一个事务里完成,要么全做,这两个操作放在同一个事务里完成,要么全做,要么全不做。要么全不做。事务的事务的ACID性质性质z原子性原子性 (Atomicity)v事务中包含的所有操作事务中包含的所有操作(特指修改操作特指修改操作)要么全部做,要要么全部做,要么全不做。么全不做。w例如某个转帐事务:对帐户例如某个转帐事务:对帐户A扣除扣除100,对帐户,对帐户B增增加加100。这两个操作要么全做,要么全不做。这两个操作要么全做,要么全不做v原子性由原子性由恢复机制恢复机制(7.3)实现实现事务的事务的

4、ACID性质性质z一致性一致性(Consistency)v单独执行一个事务(无其它事务同时并发执行)的结单独执行一个事务(无其它事务同时并发执行)的结果必须保证数据一致性。即事务开始前,数据满足一果必须保证数据一致性。即事务开始前,数据满足一致性要求;事务结束后,数据虽然可能被修改了,但致性要求;事务结束后,数据虽然可能被修改了,但仍然满足一致性的要求。仍然满足一致性的要求。w这里数据一致性要求,根据具体应用而定。这里数据一致性要求,根据具体应用而定。例如在银行系统中,转帐事务的一致性要求是前后例如在银行系统中,转帐事务的一致性要求是前后两个帐户的金额总和不变。假如一个事务为帐户两个帐户的金额

5、总和不变。假如一个事务为帐户A减减去去100,为帐户,为帐户B加上加上50,那么这个事务就违反了一,那么这个事务就违反了一致性。致性。事务的事务的ACID性质性质v保证单个事务的一致性,由编写事务的应用程序员来保证单个事务的一致性,由编写事务的应用程序员来负责,并借助负责,并借助完整性机制完整性机制(6.3)来协助实现。来协助实现。w也就是说,如果有数据一致性要求(例如转账前后总和也就是说,如果有数据一致性要求(例如转账前后总和不变)不变) ,可以将其定义成某些完整性规则。,可以将其定义成某些完整性规则。事务的事务的ACID性质性质z隔离性隔离性 (Isolation)v多个事务在并发执行时不

6、会相互影响,好像它们是隔离开来多个事务在并发执行时不会相互影响,好像它们是隔离开来的一样。最后的效果,与按某个顺序依次执行这些事务是一的一样。最后的效果,与按某个顺序依次执行这些事务是一样的。样的。v隔离性要求一个事务,隔离性要求一个事务,不会看到另一事务的中间结果不会看到另一事务的中间结果。w例如一个事务例如一个事务T1读取的数据,读取的数据,一部分是一部分是事务事务T2修改前修改前的数据,的数据,一部分是一部分是事务事务T2修改后修改后的数据,这就违反了隔离性,并可能的数据,这就违反了隔离性,并可能导致数据错误。导致数据错误。w两个数据两个数据 A=a1, B=b1 事务事务T2发生发生

7、A=a2, B=b2事务事务T1读读 A=a1, B=b1 正确正确 A=a2, B=b2 正确正确 A=a2, B=b1 错误错误 A=a1, B=b2 错误错误v隔离性通过隔离性通过并发控制机制并发控制机制(7.2)实现实现事务的事务的ACID性质性质z持久性持久性(Durability)v事务一旦提交,它对数据库的影响就是永久性的。无事务一旦提交,它对数据库的影响就是永久性的。无论发生什么事情,都不能取消这种影响。论发生什么事情,都不能取消这种影响。v例如一个事务将例如一个事务将50元从帐户元从帐户A转到帐户转到帐户B,此事务一旦,此事务一旦提交,这种交易是无法悔改的提交,这种交易是无法

8、悔改的即便发生故障,也即便发生故障,也不能把这不能把这50元元“还还”回去。回去。v持久性通过持久性通过恢复机制恢复机制(7.3)实现实现事务状态与操作事务状态与操作失败状态失败状态部分部分提交状态提交状态中止状态中止状态活动状态活动状态执行执行执行全部执行全部语句成功语句成功提交提交提交完毕提交完毕回滚回滚回滚完毕回滚完毕执行某个执行某个语句失败语句失败永久化信息永久化信息写入失败写入失败事务事务开始开始提交状态提交状态逐个语句逐个语句永久化每个修改(写入到日志)永久化每个修改(写入到日志)把数据改回旧值把数据改回旧值事务结束状态之二事务结束状态之二事务结束状态之一事务结束状态之一事务状态与

9、操作事务状态与操作z 活动状态活动状态v 事务开始后进入事务开始后进入v 事务处于本状态时,依次执行事务中的每条语句事务处于本状态时,依次执行事务中的每条语句z 部分提交状态部分提交状态(教材:局部提交状态教材:局部提交状态)v 执行完事务的全部语句后进入执行完事务的全部语句后进入v 事务处于本状态时,将已做的每个修改操作提交,即永久化写入事务处于本状态时,将已做的每个修改操作提交,即永久化写入到日志中。这样即使修改操作后来丢失了(例如数据库崩溃),到日志中。这样即使修改操作后来丢失了(例如数据库崩溃),也能根据日志来恢复它也能根据日志来恢复它z 提交状态提交状态v提交完全部修改操作后进入提交

10、完全部修改操作后进入v事务处于本状态时,事务结束。为事务的结束状态之一事务处于本状态时,事务结束。为事务的结束状态之一事务状态与操作事务状态与操作z 失败状态失败状态v 在活动状态中,执行某条语句失败时进入;或者在部分提交状态在活动状态中,执行某条语句失败时进入;或者在部分提交状态中,提交永久化信息失败时进入中,提交永久化信息失败时进入v 事务处于本状态时,不断回滚已经发生的修改操作,即把数据改事务处于本状态时,不断回滚已经发生的修改操作,即把数据改成原来的旧值。成原来的旧值。z 中止状态中止状态v回滚全部修改操作后进入回滚全部修改操作后进入v事务处于本状态时,事务结束。为事务的结束状态之二事

11、务处于本状态时,事务结束。为事务的结束状态之二Thinkingz执行一个事务时,可能经过哪些状态序列执行一个事务时,可能经过哪些状态序列v活动状态活动状态 部分提交状态部分提交状态 提交状态提交状态v活动状态活动状态 失败状态失败状态 中止状态中止状态v活动状态活动状态 部分提交状态部分提交状态 失败状态失败状态 中止状态中止状态SQL中的事务中的事务z相关语句相关语句vBegin Transaction w开始事务开始事务vCommit (Transaction) w提交事务。此时事务正常结束,事务所做的修改操作都提交事务。此时事务正常结束,事务所做的修改操作都有效且有效且永久地永久地写入数

12、据库写入数据库vRollback (Transaction) w回滚事务。此时事务非正常结束,事务所做的修改操作回滚事务。此时事务非正常结束,事务所做的修改操作都无效且必须都无效且必须撤销撤销(Undo,数据改回旧值,数据改回旧值)。w回滚后,数据库回退到事务开始前的状态,就好像事务回滚后,数据库回退到事务开始前的状态,就好像事务从来没有发生过一样。从来没有发生过一样。SQL中的事务中的事务z两种说明方式两种说明方式v事务的显式方式事务的显式方式w用户明确说明一个事务的开始(用户明确说明一个事务的开始(Begin Transaction语句)语句)和结束(用和结束(用Commit/Rollba

13、ck语句)。语句)。v事务的隐式方式事务的隐式方式w不需明确说明一个事务的开始(有时也不说明结束)不需明确说明一个事务的开始(有时也不说明结束)比如从第一个有效的比如从第一个有效的DML语句开始事务。语句开始事务。遇到明确的遇到明确的Commit/Rollback结束一个事务。结束一个事务。遇到遇到Create Table、Drop Table、Create View,Create Index等等DDL语句,语句, (提交上一个事务后)启动一个新的(提交上一个事务后)启动一个新的事务。事务。SQL中的事务中的事务z注意注意v事务没有执行完事务没有执行完Commit之前,因某种原因(故障)而之前

14、,因某种原因(故障)而终止了,那么系统就会自动地回滚这个事务。终止了,那么系统就会自动地回滚这个事务。v判断判断SQL语句属于哪个事务语句属于哪个事务( SQL SERVER中,默认显式事务下中,默认显式事务下)w如果如果SQL语句处于某个事务的语句处于某个事务的Begin transaction和和Commit/Rollback之间,那么它就属于这个事务。之间,那么它就属于这个事务。w如果以上不成立,那么这个如果以上不成立,那么这个SQL语句本身构成一个独立语句本身构成一个独立的事务。的事务。Thinkingz下面的下面的SQL Server程序包含几个事务程序包含几个事务? z思考,如果执

15、行完第一个思考,如果执行完第一个update语句之后、没有语句之后、没有执行第二个执行第二个update语句之前,系统断电。那么在语句之前,系统断电。那么在重启以后,两个帐户的金额会发生什么样的变化重启以后,两个帐户的金额会发生什么样的变化?Begin Transaction Update account set money= money 50 where no=AUpdate account set money= money 50 where no=BCommitThinkingz下面的下面的SQL Server程序包含几个事务程序包含几个事务? z思考,如果执行完第一个思考,如果执行完第一

16、个update语句之后、没有语句之后、没有执行第二个执行第二个update语句之前,系统断电。那么在语句之前,系统断电。那么在重启以后,两个帐户的金额会发生什么样的变化重启以后,两个帐户的金额会发生什么样的变化?Update account set money= money 50 where no=AUpdate account set money= money 50 where no=BThinkingz 选修表的外部键选修表的外部键学号学号引用了学生表的主键,参照动作引用了学生表的主键,参照动作为为RESTRICT。z 则以下语句最终删除了几条记录?则以下语句最终删除了几条记录?学生学生学

17、学 号号姓姓 名名性别性别年级年级201204王小明王小明男男2012201206张艳张艳女女2012201208黄大鹏黄大鹏男男2012201312刘芳刘芳女女2013201326李兰秋李兰秋女女2013选修选修学学 号号课程号课程号成绩成绩201208 H3035 NULLDelete From 学生学生 Where 年级年级=2012目录目录z7.1 事务与事务管理事务与事务管理z7.2 并发控制技术并发控制技术 7.2.1 事务并发执行事务并发执行 7.2.2 并发引起不一致问题并发引起不一致问题 7.2.3 并发执行正确性准则概述并发执行正确性准则概述 7.2.4 并发控制基本技术并

18、发控制基本技术 7.2.5 封锁协议封锁协议 7.2.6 活锁与死锁活锁与死锁 7.2.7 多粒度封锁多粒度封锁z7.3 数据库故障恢复数据库故障恢复两种事务调度两种事务调度z事务调度事务调度v系统以什么时间顺序执行系统以什么时间顺序执行(进入系统的)(进入系统的)一组事务一组事务/ /事事务的指令务的指令w虽然在微观上,这组事务是先后到达系统的,但宏观上虽然在微观上,这组事务是先后到达系统的,但宏观上可能是可能是“同时同时”到达系统:即上一个事务还没结束时,到达系统:即上一个事务还没结束时,下一个事务又进入了系统。下一个事务又进入了系统。两种事务调度两种事务调度z串行调度串行调度(教材:串行

19、执行教材:串行执行) v当前一个事务完全结束后,下一个事务才开始执行。当前一个事务完全结束后,下一个事务才开始执行。v特点:从时间顺序看,同一事务的指令紧挨在一起。特点:从时间顺序看,同一事务的指令紧挨在一起。z并发调度并发调度(教材:并发执行教材:并发执行) v未执行完一个事务,可转去执行另一事务。未执行完一个事务,可转去执行另一事务。w事务的执行时间重叠,宏观上多个事务同时执行,微观事务的执行时间重叠,宏观上多个事务同时执行,微观上这些事务交叉或者说分时执行上这些事务交叉或者说分时执行。v特点:从时间顺序看,不同事务的指令彼此交叉。特点:从时间顺序看,不同事务的指令彼此交叉。并发调度的优势

20、并发调度的优势z并发调度并发调度 VS 串行调度串行调度v不同事务的不同指令,涉及的系统资源也不同。同时不同事务的不同指令,涉及的系统资源也不同。同时执行这些指令,执行这些指令,可以提高可以提高资源利用率资源利用率和和系统吞吐量系统吞吐量w例如,事务例如,事务A和事务和事务B,都由指令都由指令1(要求要求CPU计算计算)和指令和指令2(要求要求I/O)组成。组成。CPU和和I/O设备是可以并行工作的,所设备是可以并行工作的,所以并发执行事务以并发执行事务A的指令的指令2和事务和事务B的指令的指令1时,可以避免时,可以避免资源闲置和缩短总执行时间。资源闲置和缩短总执行时间。并发调度的优势并发调度

21、的优势v系统中存在着周期不等的各种事务,串行调度导致短系统中存在着周期不等的各种事务,串行调度导致短事务可能要等待长事务的完成。而采用并发调度,灵事务可能要等待长事务的完成。而采用并发调度,灵活决定事务的执行顺序,活决定事务的执行顺序,可以减少可以减少平均响应时间平均响应时间w例如,需时为例如,需时为10分钟的事务分钟的事务A开始开始2分钟后,需时为分钟后,需时为1分分钟的事务钟的事务B进入系统。对于串行调度,等待事务进入系统。对于串行调度,等待事务A完成后完成后才能执行事务才能执行事务B;对于并发调度,可以立刻转去执行事对于并发调度,可以立刻转去执行事务务B,再回头执行事务,再回头执行事务A

22、w思考:比较两者的平均响应时间思考:比较两者的平均响应时间? 响应时间响应时间事务进入事务进入系统到事务完成的时间差事务等待的时间系统到事务完成的时间差事务等待的时间+事务执行的事务执行的时间时间事务调度例子事务调度例子z事务的表示事务的表示T:read(A);A := A 50;write(A);read(B);B := B + 50;write(B);vread(X): 把数据把数据X从从数据库数据库读出到事务的读出到事务的私有缓冲私有缓冲中中vwrite(X): 把数据把数据X从事务的从事务的私有缓冲私有缓冲中写回到中写回到数据库数据库帐户帐户A减去减去50帐户帐户B加上加上50事务调度

23、例子事务调度例子z数据一致性要求:数据一致性要求:A、B总和不变总和不变v思考:事务思考:事务T1、T2是否具有一致性是否具有一致性?事务事务T1read(A);A := A 100;write(A);read(B);B := B + 100;write(B);从从A转帐转帐100到到B从从A转帐转帐200到到B事务事务T2read(A);A := A 200;write(A);read(B);B := B + 200;write(B);开始状态开始状态A=1000B= 0事务调度例子事务调度例子z串行调度串行调度1v调度的结果是否保证调度的结果是否保证了数据一致性了数据一致性? read(A

24、); A := A 100; write(A); read(B); B := B +100; write(B); read(A); A := A 200; write(A); read(B); B := B + 200; write(B);T1T2A=900B=100结束状态结束状态A=700B=300开始状态开始状态A=1000B= 0开始状态开始状态A=1000B= 0事务调度例子事务调度例子z串行调度串行调度2v调度的结果是否保证调度的结果是否保证了数据一致性了数据一致性?v思考:所有串行调度都思考:所有串行调度都能保证数据一致性吗?能保证数据一致性吗? read(A); A := A

25、100; write(A); read(B); B := B +100; write(B); read(A); A := A 200; write(A); read(B); B := B + 200; write(B);T1T2A=800B=200结束状态结束状态A=700B=300事务调度例子事务调度例子z并发调度并发调度1v调度的结果是否保证调度的结果是否保证了数据一致性了数据一致性?v思考:思考:T1、T2读写的是读写的是对方修改前对方修改前/后的数据?后的数据? read(B); B := B +100; write(B); read(A); A := A 200; write(A);

26、 T1T2A=700B= 0结束状态结束状态A=700B=300 read(B); B := B + 200; write(B); read(A); A := A 100; write(A);A=800B= 0A=700B=200事务调度例子事务调度例子z并发调度并发调度2v调度的结果是否保证调度的结果是否保证了数据一致性了数据一致性?v思考:思考:T1、T2读写的是读写的是对方修改前对方修改前/后的数据?后的数据? read(B); B := B +100; write(B); read(A); A := A 200;T1T2A=900B= 0结束状态结束状态A=800B=300 write

27、(A); read(B); B := B + 200; write(B); read(A); A := A 100; write(A);A=1000B= 0A=800B=200小结小结z保证保证单个事务一致性的情况下,单个事务一致性的情况下,v多个事务串行调度时多个事务串行调度时,不会破坏数据一致性。,不会破坏数据一致性。v多个事务并发调度时多个事务并发调度时,可能会、也可能不会破坏,可能会、也可能不会破坏数据数据一致性。一致性。w取决于取决于并发并发调度有否调度有否违反隔离违反隔离性。性。并发调度的问题并发调度的问题z并发调度并发调度的问题:可能破坏数据一致性的问题:可能破坏数据一致性v即使

28、单个事务的执行不会破坏数据一致性,多个这样即使单个事务的执行不会破坏数据一致性,多个这样的事务在并发调度时,也可能破坏数据一致性。的事务在并发调度时,也可能破坏数据一致性。z产生问题的原因产生问题的原因: 事务隔离性未得到保证事务隔离性未得到保证v隔离性要求事务隔离性要求事务T1不能看到另一个事务不能看到另一个事务T2的中间结果的中间结果(一部分数据是修改前的,一部分数据是修改后的)(一部分数据是修改前的,一部分数据是修改后的)v但在并发执行的情况下,有时没有做到这一点但在并发执行的情况下,有时没有做到这一点z解决方法(解决方法(正确性准则正确性准则): 使使并发调度并发调度可串行化可串行化v

29、事务的串行调度显然不会破坏数据一致性事务的串行调度显然不会破坏数据一致性v如果事务的并发调度是可串行化的,如果事务的并发调度是可串行化的,即效果上等价于即效果上等价于某个串行调度时某个串行调度时,也不会破坏数据一致性,也不会破坏数据一致性再小结再小结z保证保证单个事务一致性的情况下,单个事务一致性的情况下,v任何串行调度,不会任何串行调度,不会破坏数据一致性。破坏数据一致性。v保证隔离性保证隔离性/可串行化的并发调度,也不会破坏数据一可串行化的并发调度,也不会破坏数据一致性。致性。v隔离性得不到保证隔离性得不到保证/不可串行化,可能会破坏数据一致不可串行化,可能会破坏数据一致性,产生错误。性,

30、产生错误。z接下来的问题接下来的问题v并发调度产生的错误有哪些?并发调度产生的错误有哪些?三类不一致性三类不一致性z我们把并发调度我们把并发调度破坏数据一致性所产生的错误,破坏数据一致性所产生的错误,又称为数据不一致性。分为以下三种:又称为数据不一致性。分为以下三种:v丢失修改丢失修改v不可重复读不可重复读v读读“脏脏”数据数据第一类:丢失修改第一类:丢失修改z丢失修改的产生丢失修改的产生v并发调度两个事务并发调度两个事务T1、T2。vT1与与T2从数据库中读入同一数据后分别修改。假设从数据库中读入同一数据后分别修改。假设T1先提交,而先提交,而T2后提交。后提交。v则则T2提交的修改覆盖了提

31、交的修改覆盖了T1提交的修改,导致提交的修改,导致T1的修的修改丢失。改丢失。第一类:丢失修改第一类:丢失修改z例子例子v事务事务T1: 卖出两张机票;事务卖出两张机票;事务T2:卖出一张机票:卖出一张机票事务事务T1read(A);A := A 2;write(A);事务事务T2read(A);A := A 1;write(A);起始状态起始状态:A=10串行调度串行调度T1, T2:A=7; 串行调度串行调度T2, T1:A=7第一类:丢失修改第一类:丢失修改v丢失修改的并发调度丢失修改的并发调度A=8A=9T1和和T2读入读入同一数据同一数据A,T2提交的修提交的修改覆盖了改覆盖了T1提

32、交的修改,提交的修改,导致导致T1的修的修改丢失。改丢失。 read(A); A := A 1; write(A); read(A); A := A 2; write(A); T1T2开始开始A=10第二类:不可重复读第二类:不可重复读z不可重复读的产生不可重复读的产生v事务事务T1读取某些数据(记录)后,读取某些数据(记录)后,v事务事务T2对这些数据(记录)做了对这些数据(记录)做了某种修改操作某种修改操作v当当T1再次读取该数据(记录)时,得到的是与前一次再次读取该数据(记录)时,得到的是与前一次不同的值不同的值第二类:不可重复读第二类:不可重复读z不可重复读的产生不可重复读的产生v事务

33、事务T1读取某些数据(记录)后,读取某些数据(记录)后,v事务事务T2对这些数据(记录)做了对这些数据(记录)做了某种修改操作某种修改操作v当当T1再次读取该数据(记录)时,得到的是与前一次再次读取该数据(记录)时,得到的是与前一次不同的值不同的值第二类:不可重复读第二类:不可重复读z不可重复读又分为三种情况不可重复读又分为三种情况在事务在事务T1两次读取之间,两次读取之间,v另一事务另一事务T2更新更新了记录。则当了记录。则当T1第二次读取时,得到第二次读取时,得到与前一次不同的记录值与前一次不同的记录值v另一事务另一事务T2删除删除了部分记录。则当了部分记录。则当T1第二次读取时,第二次读

34、取时,发现其中的某些记录神秘地消失了发现其中的某些记录神秘地消失了v另一事务另一事务T2插入插入了一些记录。则当了一些记录。则当T1第二次按相同条第二次按相同条件读取时,发现地神秘地多了一些记录件读取时,发现地神秘地多了一些记录 (后两种不可重复读有时也称为(后两种不可重复读有时也称为幻影幻影现象)现象)第二类:不可重复读第二类:不可重复读z不可重复读的例子不可重复读的例子v事务事务T1: 读取并打印存款,重复两次;事务读取并打印存款,重复两次;事务T2:存款:存款100事务事务T2read(A);A = A + 100;write(A);事务事务T1read(A);print(A);read

35、(A);print(A);起始状态起始状态:A=0¥串行调度串行调度T1、T2:A=100;打印打印100100串行调度串行调度T1、T2:A=100;打印打印100100第二类:不可重复读第二类:不可重复读v不可重复读的并发调度不可重复读的并发调度打印打印A? read(A); A := A + 100; write(A); T1T2 read(A); print(A); read(A); print(A);打印打印A ?事务事务T1读取某读取某一数据一数据A后,后,事务事务T2对其进对其进行了更新操作,行了更新操作,当当T1再次读取再次读取该数据时,得该数据时,得到与前次不同到与前次不同的

36、值。的值。第二类:不可重复读第二类:不可重复读z幻影的例子幻影的例子v事务事务T1: 查询男生人数,重复两次;事务查询男生人数,重复两次;事务T2:插入一:插入一条男生记录。条男生记录。事务事务T2Insert into 学生表学生表 (学号学号, 姓名姓名, 性别性别) Values (S5, 王平王平, 男男)事务事务T1Select Count(*)From 学生表学生表 Where 性别性别 = 男男Select Count(*) From 学生表学生表 Where 性别性别 = 男男串行调度串行调度T1、T2:两次的男生人数相同两次的男生人数相同串行调度串行调度T1、T2:两次的男生人数相同两次的男生人数相同(比左边多(比左边多1)第二类:不可重复读第二类:不可重复读v产生产生“幻影幻影”的并发调度的并发调度T1T2同一个事务中,同一个事务中,(条件)相同(条件)相同的两次查询,的两次查询,结果却不同。结果却不同。某些记录神秘某些记录神秘地出

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论