第7章事务管理_第1页
第7章事务管理_第2页
第7章事务管理_第3页
第7章事务管理_第4页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

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

文档简介

1、第第7 7章章 事务管理事务管理事务管理(事务管理(transaction management):): 故障的可能性总是存在的。解决故障的措施有二:故障的可能性总是存在的。解决故障的措施有二:一是尽可能一是尽可能提高可靠性提高可靠性;二是;二是恢复恢复。 这里主要讨论发生故障后,恢复数据库至一致状这里主要讨论发生故障后,恢复数据库至一致状态的技术,即态的技术,即恢复技术恢复技术。 系统发生故障时,可能会导致数据的丢失系统发生故障时,可能会导致数据的丢失(loss),要恢复丢失的数据,必须有后备副本。要恢复丢失的数据,必须有后备副本。 对于恢复,数据冗余是必需的!对于恢复,数据冗余是必需的!一

2、致一致状状态态n从文件系统继承而来,周期性的把磁盘上的数据库转从文件系统继承而来,周期性的把磁盘上的数据库转储(储(dumpdump)到脱机存放的磁带上。到脱机存放的磁带上。失效失效取后备副本取后备副本取后备副本取后备副本取后备副本取后备副本更新丢失更新丢失更新丢失更新丢失取后备副本取后备副本取后备副本取后备副本IDIDIDID取后备副本取后备副本ID失效失效n 增量转储(增量转储(IDID) 单纯以后备副本为基础的恢复技术:单纯以后备副本为基础的恢复技术: 优点:优点:实现简单,不增加数据库正常运行实现简单,不增加数据库正常运行时的开销。时的开销。 缺点:缺点:不能恢复到数据库的最近一致的状

3、不能恢复到数据库的最近一致的状态。态。 多用于文件系统以及小型的不重要的数据多用于文件系统以及小型的不重要的数据库系统。库系统。 运行记录(运行记录(log或或journal)由系统维护,一般包由系统维护,一般包括下列内容:括下列内容: (1 1)前像()前像(Before Image,BIBefore Image,BI) 当数据库被一个事务更新时,所涉及的物理块更当数据库被一个事务更新时,所涉及的物理块更新前的映像(新前的映像(imageimage)称为该事务的称为该事务的前像(前像(BIBI),前前像以物理块为单位;有了前像可以使数据库恢复到像以物理块为单位;有了前像可以使数据库恢复到更新

4、前状态,对应操作更新前状态,对应操作undoundo( (撤销撤销) )。(2 2)后像)后像( (After Image,AI)After Image,AI) 当数据库被一个事务更新时,所涉及的物理块更新当数据库被一个事务更新时,所涉及的物理块更新后的映像(后的映像(imageimage)称为该事务的称为该事务的后像(后像(AIAI),后像也后像也以物理块为单位;有了后像,即便更新的数据丢失了,以物理块为单位;有了后像,即便更新的数据丢失了,仍然可以使数据库恢复到更新后的状态,相当于重做一仍然可以使数据库恢复到更新后的状态,相当于重做一次更新,对应操作次更新,对应操作redoredo( (重

5、做重做) ) 。 问题:前像问题:前像( (BI)BI)、后像后像( (AI)AI)和事务操作的关系?和事务操作的关系? 修改修改有有前像前像 有有后像后像插入插入没没前像前像 有有后像后像删除删除有有前像前像 没没后像后像(3 3)事务状态)事务状态 记录每个事务的状态,以便在恢复时作不同的处理记录每个事务的状态,以便在恢复时作不同的处理(COMMITCOMMIT和和NOT COMMITNOT COMMIT)。)。事务失败事务失败事务开始事务开始活动状态活动状态操作结束操作结束事务提交事务提交回卷回卷事务结束事务结束 提交提交( (Commit)Commit)成功执行成功执行( (do al

6、l)do all)。 回卷回卷( (RollbackRollback或或Abort)Abort)消除事务对数据库的影消除事务对数据库的影响响( (do nothing)do nothing)。 对恢复而言,至少要区分一个对恢复而言,至少要区分一个事务是否提交事务是否提交! 实现方法实现方法最近后备副本最近后备副本 运运 行行 记记 录录失效失效最近后备副本最近后备副本 运运 行行 记记 录录 基于后备副本与运行记录的恢复如上图所示,当数基于后备副本与运行记录的恢复如上图所示,当数据库失效时,取出据库失效时,取出最近后备副本最近后备副本,然后根据,然后根据运行记录运行记录,对未提交的事务用前像卷

7、回对未提交的事务用前像卷回向后恢复向后恢复( (backward backward recovery)recovery);对已提交的事务,必要时用后像重做对已提交的事务,必要时用后像重做向前恢复向前恢复( (forward recovery)forward recovery)。 这种恢复技术,需保持运行记录,这将会影响数据这种恢复技术,需保持运行记录,这将会影响数据库的正常工作速度,但可以使数据库恢复到最近一致状库的正常工作速度,但可以使数据库恢复到最近一致状态。大多数商品化态。大多数商品化DBMSDBMS采用这种恢复技术。采用这种恢复技术。 如果系统中有多个如果系统中有多个DBDB副本,且这

8、些副本具有副本,且这些副本具有独立独立的失效模式的失效模式( (independent failure mode)independent failure mode),则可利用则可利用这些副本互为备份,用于恢复。这些副本互为备份,用于恢复。 此技术在分布式数据库系统中应用的较多。此技术在分布式数据库系统中应用的较多。 近年来,由于硬件价格的下降,也采用镜像磁盘近年来,由于硬件价格的下降,也采用镜像磁盘( (mirrored disks)mirrored disks)技术。技术。 写数据时,两个磁盘写数据时,两个磁盘都写入同样的内容。都写入同样的内容。 当一个磁盘的数据丢当一个磁盘的数据丢失时,可

9、以用另一个磁盘失时,可以用另一个磁盘的数据来恢复。(的数据来恢复。(两盘同两盘同时故障的概率可以假设为时故障的概率可以假设为零!零!)磁盘磁盘1 1磁盘磁盘2 2控制器控制器1 1控制器控制器2 2CPU1CPU1CPU2CPU2 镜像磁盘系统镜像磁盘系统 下面主要讨论第二种恢下面主要讨论第二种恢复技术。复技术。3.3.前像文件前像文件 可以看成一个堆文件。每个物理块有个块标识符可以看成一个堆文件。每个物理块有个块标识符BIDBID(block identifierblock identifier)。)。BIDBID由由TIDTID、关系名和逻辑关系名和逻辑块号组成。块号组成。逻辑块号在关系中

10、是唯一的。逻辑块号在关系中是唯一的。如果一个事如果一个事务需要卷回,可以在前像文件中找出该事务的所有前务需要卷回,可以在前像文件中找出该事务的所有前像块,按照逻辑块号写入到关系的对应块,从而消除像块,按照逻辑块号写入到关系的对应块,从而消除该事务对数据库的影响。该事务对数据库的影响。 undo undo满足幂等性满足幂等性: : undo(undo(undo undo(undo(undoundo(x)=undo(x)undo(x)=undo(x)因此,因此,undoundo失败可以再失败可以再undo!undo! 4. 4.后像文件后像文件 结构与前像文件相仿,不过记的是后像。在恢复结构与前像

11、文件相仿,不过记的是后像。在恢复时,可按提交事务表中的事务次序,按逻辑块号,时,可按提交事务表中的事务次序,按逻辑块号,写入其后像。这相当于按提交的次序重做各个事务。写入其后像。这相当于按提交的次序重做各个事务。redoredo满足幂等性满足幂等性: :redo(redo(redoredo(redo(redoredo(x)=redo(x)redo(x)=redo(x) 问题:问题:undoundo操作需要按照事务的次序吗?为什么?操作需要按照事务的次序吗?为什么? 取后备复本后,之前的运行记录就失去了价值,对取后备复本后,之前的运行记录就失去了价值,对恢复来说,只要保留最近后备复本以后的运行记

12、录。但恢复来说,只要保留最近后备复本以后的运行记录。但运行记录仍可能很大。可采用下列措施减小运行记录规运行记录仍可能很大。可采用下列措施减小运行记录规模。模。1.1.不保留已提交事务的前像不保留已提交事务的前像2.2.有选择性的保留后像有选择性的保留后像3.3.合并后像(对给定逻辑块号的物理块,如多次更新,合并后像(对给定逻辑块号的物理块,如多次更新,可只保留最近的后像)可只保留最近的后像) 如何判断该做如何判断该做undoundo还是还是redoredo呢?下一节,将解决这呢?下一节,将解决这个问题。个问题。 1 提交规则(提交规则(Commit Rule) 后像必须在事务提交前,写入非易失

13、性存储器(后像必须在事务提交前,写入非易失性存储器(DB或或log)。)。 更新事务执行时,应遵守下两条规则:更新事务执行时,应遵守下两条规则:2 先记后写规则(先记后写规则(Log Ahead Rule) 如果后像在事务提交前写入数据库,则必须把前像如果后像在事务提交前写入数据库,则必须把前像先写入先写入log。 在执行一个更新事务时,按后像写入在执行一个更新事务时,按后像写入DBDB的时间,有的时间,有三种可能的方案。三种可能的方案。即后像不能仅留在内存中!即后像不能仅留在内存中!a) 后像在事务提交前完全写入后像在事务提交前完全写入DBTID active listB.I Log(按按L

14、og Ahead Rule)A.I DBTID commit listdelete TID from active list在这种情况下,如果出现故障,如何恢复?在这种情况下,如果出现故障,如何恢复?RestartRestart时,对每个时,对每个TIDTID,查两个查两个listlist:Commit listActive list undo delete TID from active list nothing to dob) 后像在事务提交后写入数据库后像在事务提交后写入数据库TID active listA.I Log (按按commit rule)TID commit listA.I

15、 DB delete TID from active listRestartRestart时,对每个时,对每个TIDTID,查两个查两个listlist:Commit listActive list delete TID from active list redo, delete TID from active list nothing to doc) 后像在事务提交前后写入数据库后像在事务提交前后写入数据库TID active listA.I, B.I Log(按按2 rules)A.I DB (partially done)TID commit listA.I DB (completed)

16、delete TID from active list在这种情况下,如果出现故障,如何恢复?在这种情况下,如果出现故障,如何恢复?Commit listActive list undo redo, delete TID from active list nothing to do思考:方案思考:方案3均匀的将写入均匀的将写入DB的的I/O操作分散在事务操作分散在事务提交前后,有什么优点?提交前后,有什么优点? 有利于磁盘均衡负载有利于磁盘均衡负载 一个事务常常要给用户发送有影响的消息一个事务常常要给用户发送有影响的消息(message),不是指需要用户输入的指示消息不是指需要用户输入的指示消息

17、。 例如:例如:“付款付款2000元元”以及以及“立即执行下一步处理立即执行下一步处理”等。等。 发送消息也是事务执行结果的一部分,应该遵循发送消息也是事务执行结果的一部分,应该遵循“要么不做,要么全做要么不做,要么全做”的原则。的原则。但是,消息往往难但是,消息往往难以用以用“undo”操作来消除其影响。操作来消除其影响。 因此,在事务结束前,消息不能发出,只有等事务因此,在事务结束前,消息不能发出,只有等事务结束后才能发出。结束后才能发出。带来什么问题?带来什么问题?MMTiTi消息消息1 1消息消息2 2MMMM终端终端消息(消息(MSGMSG)确认(确认(ACKACK)思考:系统失效时

18、,要做思考:系统失效时,要做undoundo和和redoredo操作;然而操作;然而ATLATL长度有限,长度有限,CTLCTL可能较长。可能较长。这将导致什么结果?这将导致什么结果? 由于事务可以在提交前和提交后将数据的后像分别写入数据库,由于事务可以在提交前和提交后将数据的后像分别写入数据库,因而对因而对CTLCTL中的事务只能全部做中的事务只能全部做redoredo,很费时(可能很费时(可能CTLCTL中的很中的很多事务已经完成将后像写入数据库,但鉴别代价很大)。多事务已经完成将后像写入数据库,但鉴别代价很大)。最近后备副本最近后备副本失效失效运行记录运行记录最近后备副本最近后备副本CP

19、CPCPCPCP运行记录运行记录失效失效 显然,在最近检查点以前提交的显然,在最近检查点以前提交的事务,恢复时,不用事务,恢复时,不用redo。 取取CPCP过程一般如下:过程一般如下: 暂停事务的执行;暂停事务的执行; 写入上一个写入上一个CPCP以后所提交事务的后像;以后所提交事务的后像; 在在loglog的的CTLCTL中记下检查点;中记下检查点; 恢复事务的执行。恢复事务的执行。 取取CPCP很影响系统的正常运行,而只有在发生系统失很影响系统的正常运行,而只有在发生系统失效时,才有其减少效时,才有其减少redoredo工作量的效益。工作量的效益。 修复系统,必要时更新磁盘;修复系统,必

20、要时更新磁盘; 如果系统(如果系统(OSOS和和DBMSDBMS)崩溃,重新启动系统;崩溃,重新启动系统; 加载最近后备副本加载最近后备副本; 用用loglog中的后像重做取最近后备副本后提交的所有事务。中的后像重做取最近后备副本后提交的所有事务。 恢复措施:恢复措施:1.1.串行访问串行访问( (serial access)serial access)事务顺序执行。事务顺序执行。DBMST3T2T1时时 间间T1T2T32.2.并发访问并发访问( (concurrent access)concurrent access)DBMSDBMS可同时接纳可同时接纳多个事务,事务可在时间上重叠执行。多

21、个事务,事务可在时间上重叠执行。DBMST1T2T3时时 间间T1T2T31.1.提高系统资源利用率;提高系统资源利用率;2.2.改善短事务响应时间。改善短事务响应时间。 例如,两个事务例如,两个事务T T1 1和和T T2 2, T T1 1长,先交付;长,先交付; T T2 2短,稍短,稍后交付,如果串行执行,则后交付,如果串行执行,则T T2 2必须等必须等T T1 1,响应时间很长。响应时间很长。丢失丢失 事务若不加控制的并发执行,会产生什么问题?事务若不加控制的并发执行,会产生什么问题? 1. 1.丢失更新(丢失更新(lost updatelost update) T1Read(x)

22、x:=x+1Write(x) T2Read(x)x:=2*xWrite(x)时时间间T1T2Read(x)Read(x)x:=x+1Write(x)x:=2*xWrite(x)问题:为什么会发生丢失更新?问题:为什么会发生丢失更新? 由两个事务对同一数据并发写入引起,由两个事务对同一数据并发写入引起,称为称为“写写- -写冲突写冲突”( (write-write write-write conflict)conflict)脏数据脏数据 2. 2.读脏数据(读脏数据(dirty readdirty read) T1write(t)rollback T2read(tx)read(ty)时时间间T1

23、T2read(tx)write(t)read(ty)rollback问题:为什么会发生读脏数据?问题:为什么会发生读脏数据? 由于一个事务读取另一个更新事务尚未由于一个事务读取另一个更新事务尚未提交的数据引起,称为提交的数据引起,称为“读读- -写冲写冲突突”( (read-write conflict)read-write conflict)X已改变已改变 3. 3. 读值不可复现读值不可复现(unrepeatable read) unrepeatable read) T1read(x)read(x) T2Write(x)时时间间T1T2Read(x)Write(x)Read(x)问题:为什

24、么会发生读值不可重现?问题:为什么会发生读值不可重现? 由两个事务对同一数据并发读写引起,由两个事务对同一数据并发读写引起,问题出在问题出在“写写”操作上操作上 事务并发执行时可能会有两种冲突:事务并发执行时可能会有两种冲突: 写写、读写;写写、读写; 写写写写冲突在任何情况下都应避免,冲突在任何情况下都应避免,读写读写冲突一冲突一般情况下应避免,但某些应用场合可以容忍。般情况下应避免,但某些应用场合可以容忍。 思考:多个事务并发执行,结果怎么估计?思考:多个事务并发执行,结果怎么估计? 设设WriteWrite简写为简写为W W,ReadRead为为R R,R R和和W W用其所属事务号为用

25、其所属事务号为下标,上图的调度可表示为:下标,上图的调度可表示为: S=S=R R1 1(x)(x)W2(x)W2(x)R R1 1(x)(x) 对同一事务集对同一事务集, ,可能有很多种调度。可能有很多种调度。 如果其中两个调度如果其中两个调度S1S1和和S2S2,在数据库的任何初始状在数据库的任何初始状态下,所有读出的数据都一样,留给数据库的最终状态态下,所有读出的数据都一样,留给数据库的最终状态也一样,则称也一样,则称S1S1和和S2S2是等价的,又称为是等价的,又称为目标等价目标等价( (view view equivalence)equivalence)。偏重语义,难以判断!偏重语义

26、,难以判断! 还有一种更实用的等价定义,称为还有一种更实用的等价定义,称为冲突等价冲突等价( (conflictconflictequivalence)equivalence)。 容易实现!容易实现! 冲突操作有读冲突操作有读- -写冲突和写写冲突和写- -写冲突两种,可表示为:写冲突两种,可表示为: Ri(x)和和Wj(x) Wi(x)和和Wj(x) (i j) 冲突操作的执行次序会影响执行结果,不冲突操冲突操作的执行次序会影响执行结果,不冲突操作的次序可以互换,不致影响执行结果。作的次序可以互换,不致影响执行结果。 凡是通过调换凡是通过调换S S中不冲突操作得到的新的调度,称中不冲突操作得

27、到的新的调度,称为为S S的冲突等价调度的冲突等价调度。 如果两个调度是冲突等价的,一定是目标等价的;如果两个调度是冲突等价的,一定是目标等价的;反之未必!反之未必! 若调度若调度S S在数据库中产生的效果,与这组事务的某个在数据库中产生的效果,与这组事务的某个串行执行序列的结果相同,则称这个串行执行序列的结果相同,则称这个调度调度S S是可串行化的是可串行化的(serializableserializable)。 例如,对事务集例如,对事务集T1,T2,T3的一个调度:的一个调度: S = R2(x) W3(x) R1(y) W2(y)S= R1(y) R2(x) W2(y) W3(x) S

28、是串行调度,故是串行调度,故S是冲突可串行化的,也是目标可串是冲突可串行化的,也是目标可串行化的!行化的!冲突可串行化的调度一定是目标可串行化的吗?冲突可串行化的调度一定是目标可串行化的吗?目标可串行化的调度一定是冲突可串行化的吗?目标可串行化的调度一定是冲突可串行化的吗?目标可串行化的调度未必是冲突可串行化!目标可串行化的调度未必是冲突可串行化! 例如,调度例如,调度S=R1(x)W2(x)W1(x)W3(x)无冲突等价调度,但却可以找到一个调度无冲突等价调度,但却可以找到一个调度S: S=R1(x)W1(x)W2(x)W3(x)与与S目标等价。目标等价。目标可串行化目标可串行化冲突可串行化

29、冲突可串行化 多个事务串行执行后,多个事务串行执行后,DB仍保持一致状态。可串行仍保持一致状态。可串行化调度与事务的某个串行执行等价。当然也保持数据库化调度与事务的某个串行执行等价。当然也保持数据库的一致状态,因此,在一般的的一致状态,因此,在一般的DBMS中,都是以中,都是以可串行可串行化作为并发控制的正确性准则!化作为并发控制的正确性准则!S= W3(y)R1(x)R2(y)W3(x)W2(x)W3(z)R4(z)W4(x)T1T2T3T4T T4 4队列队列: :T T1 1,T,T3 3,T,T2 2 封锁法是最基本的并发控制方法之一,它可封锁法是最基本的并发控制方法之一,它可以有多种

30、实现方式。以有多种实现方式。 X locksX locks:Only one type of lock, for both Only one type of lock, for both read and writeread and write*Two Phase LockingnDef1: In a transaction, if all locks precede all unlocks, then the transaction is called two phase transaction. This restriction is called two phase locking pr

31、otocol.nDef2: In a transaction, if it first acquires a lock on the object before operating on it, it is called well-formed. T1Lock ALock BLock CUnlock AUnlock BUnlock C T2Lock ALock BUnlock AUnlock BLock CUnlock C2PLnot 2PLGrowing phaseShrinking phasenTheorem: If S is any schedule of well-formed and

32、 2PL transactions, then S is serializable.(王书p151证明)1)Well-formed+2PL: serializable2)Well-formed+2PL+unlock update at EOT: serializable and recoverable.(不会有多米诺现象)3)Well-formed+2PL+holding all locks to EOT: strict two phase locking transaction.(S,X) S lockif read access is intended.X lockif update access is intended. 待加待加 已有已有NLSXNLYYYSYYNXYNN( (S,U,X)

温馨提示

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

评论

0/150

提交评论