




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第8章数据库恢复和并发控制第8章数据库恢复和并发控制1本章要点事务的基本概念数据库恢复恢复的定义、原则和方法故障的种类及恢复方法具有检查点的恢复技术数据库镜像并发控制并发操作带来的数据不一致性封锁活锁和死锁并发调度的可串行性两段锁协议封锁的粒度本章要点事务的基本概念8.1事务8.1事务38.1.1事务的基本概念所谓事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。事务开始与结束可以由用户显式控制。如果没有显式定义事务,则由DBMS按缺省规定自动划分事务。8.1.1事务的基本概念所谓事务是用户定义的一个数据库操在SQL中,定义事务的语句有三条:BEGINTRANSACTIONCOMMIT(提交将事务中所有对数据库的更新写回到磁盘上的物理数据库中。)ROLLBACK(回滚,在事务运行的过程中发生了某种故障,事务不能继续执行,系统将事务中对数据库的所有已完成的操作全部撤消,回滚到事务开始时的状态。)在SQL中,定义事务的语句有三条:示例银行转帐:从A帐户过户1000¥到B帐户
read(A); A:=A–1000; write(A); read(B); B:=B+1000; write(B);read(X):从数据库传送数据项X到事务的工作区中write(X):从事务的工作区中将数据项X写回数据库示例银行转帐:从A帐户过户1000¥到B帐户8.1.2事务的性质原子性(Atomicity)事务中包含的所有操作要么全做,要么全不做原子性由恢复机制实现一致性(Consistency)事务开始前,数据库处于一致性的状态;事务结束后,数据库必须仍处于一致性状态事务的隔离执行必须保证数据库的一致性8.1.2事务的性质原子性(Atomicity)隔离性(Isolation)系统必须保证事务不受其它并发执行事务的影响一个事务内部的操作及使用的数据对其他并发事务是隔离的持续性(Durability)一个事务一旦提交之后,它对数据库的影响必须是永久的系统发生故障不能改变事务的持久性隔离性(Isolation)ACID特性可能遭到破坏的因素多个事务并行运行时,不同事务的操作交叉执行事务在运行过程中被强行停止ACID特性可能遭到破坏的因素多个事务并行运行时,不同事务的8.2数据库恢复技术8.2数据库恢复技术10故障是不可避免的计算机硬件故障系统软件和应用软件的错误操作员的失误恶意的破坏故障的影响运行事务非正常中断破坏数据库故障是不可避免的数据库管理系统对故障的对策DBMS提供恢复子系统保证故障发生后,能把数据库中的数据从错误状态恢复到某种逻辑一致的状态保证事务ACID恢复技术是衡量系统优劣的重要指标数据库管理系统对故障的对策DBMS提供恢复子系统8.2.1故障的种类8.2.1故障的种类131.事务故障
事务故障是某个事务在运行过程中由于种种原因未运行至正常终点就终止了。常见原因运算溢出、并发事务发生死锁、违反完整性限制恢复方法DBMS的恢复子系统要在不影响其他事务运行的情况下,强行回滚(ROLLBACK)该事务。这类恢复操作称为事务撤消(UNDO)。1.事务故障事务故障是某个事务在运行过程中由于种种原因未2.系统故障指造成系统停止运转的任何事件,使得系统要重新启动。整个系统的正常运行突然被破坏所有正在运行的事务都非正常终止内存中数据库缓冲区的信息全部丢失外部存储设备上的数据未受影响2.系统故障指造成系统停止运转的任何事件,使得系统要重新启系统故障的常见原因操作系统或DBMS代码错误操作员操作失误特定类型的硬件错误(如CPU故障)突然停电系统故障的常见原因操作系统或DBMS代码错误恢复方法:系统故障的恢复是由系统在重新启动时自动完成的,不需要用户干预。恢复子系统必须在系统重新启动时,让所有非正常终止的事务回滚,强行撤销所有未完成事务。(undo)对已完成的事务可能有一部分甚至全部留在缓冲区,尚未写回到磁盘上的物理数据库中,应将这些已提交的结果重新写到数据库。恢复子系统除需要撤消所有未完成事务外,还需重做(redo)所有已提交的事务恢复方法:系统故障的恢复是由系统在重新启动时自动完成的,不需3.介质故障硬件故障使存储在外存中的数据部分丢失或全部丢失介质故障比前两类故障的可能性小得多,但破坏性大得多3.介质故障硬件故障使存储在外存中的数据部分丢失或全部丢失介质故障的常见原因硬件故障磁盘损坏磁头碰撞操作系统的某种潜在错误瞬时强磁场干扰介质故障的常见原因硬件故障介质故障的恢复装入数据库发生介质故障前某个时刻的数据副本装入相应的日志文件副本,重做自此时始的所有成功事务,将这些事务已提交的结果重新记入数据库介质故障的恢复装入数据库发生介质故障前某个时刻的数据副本4.计算机病毒和人为破坏计算机病毒是一种人为的故障或破坏。由于用户有意或无意的操作也可能删除数据库中的有用的数据或加入错误的数据,这同样会造成一些潜在的故障。
4.计算机病毒和人为破坏计算机病毒是一种人为的故障或破坏。8.2.2恢复的实现技术8.2.2恢复的实现技术22故障对数据库的影响数据本身被破坏;数据库没有被破坏,但数据可能不正确,这是由于事务的运行被非正常终止造成的。故障对数据库的影响数据本身被破坏;恢复操作的基本原理恢复操作的基本原理:冗余利用存储在系统其它地方的冗余数据来重建数据库中已被破坏或不正确的那部分数据恢复的实现技术复杂一个大型数据库产品,恢复子系统的代码要占全部代码的10%以上恢复操作的基本原理恢复操作的基本原理:冗余恢复机制涉及的关键问题如何建立冗余数据数据转储(backup)登录日志文件(logging)如何利用这些冗余数据实施数据库恢复恢复机制涉及的关键问题如何建立冗余数据分类定义:所谓转储即DBA周期性地将整个数据库复制到另一个介质上保存起来的过程。这些备用的数据文本称为后备副本或后援副本。按数据库状态
按数据量静态转储
动态转储
海量转储
增量转储
1.数据转储分类定义:所谓转储即DBA周期性地将整个数据库复制到另一个静态转储
在系统中无运行事务时进行的转储操作。即转储操作开始的时刻,数据库处于一致性状态,而转储期间不允许(或不存在)对数据库的任何存取、修改活动。故障发生点正常运行静态转储运行事务TaTbTf重装后备副本重新运行事务恢复静态转储在系统中无运行事务时进行的转储操作。即转储操作开始动态转储是指转储期间允许对数据库进行存取或修改。即转储和用户事务可以并发执行。故障发生点正常运行运行事务TaTbTf动态转储运行事务TaTbTfT1T1开始T1结束重装后备副本重新运行Ta以后开始的事务
恢复动态转储是指转储期间允许对数据库进行存取或修改。即转储和用户海量转储与增量转储海量转储:每次转储全部数据库增量转储:只转储上次转储后更新过的数据
转储状态动态转储静态转储转储方式海量转储动态海量转储静态海量转储增量转储动态增量转储静态增量转储转储方法分类海量转储与增量转储海量转储:每次转储全部数据库
转储状态动2.登记日志文件一、日志文件的内容二、日志文件的作用三、登记日志文件的原则2.登记日志文件一、日志文件的内容日志文件的内容日志文件是用来记录事务对数据库的更新操作的文件。格式以记录为单位以数据块为单位日志文件的内容日志文件是用来记录事务对数据库的更新操作的文件日志文件的作用进行事务故障和系统故障恢复动态转储方式中的数据库恢复静态转储方式中,协助后备副本进行故障恢复日志文件的作用进行事务故障和系统故障恢复登记日志文件的原则登记的次序严格按并行事务执行的时间次序必须先写日志文件,后写数据库写日志文件操作:把表示这个修改的日志记录写到日志文件写数据库操作:把对数据的修改写到数据库中登记日志文件的原则登记的次序严格按并行事务执行的时间次序8.2.3故障恢复的策略8.2.3故障恢复的策略341事务故障的恢复(1)反向扫描文件日志,即从最后向前扫描日志文件,查找该事务的更新操作。(2)对该事务的更新操作执行逆操作,即将日志记录中“更新前的值”写入数据库。对于插入操作,由于“更新前的值”为空,则相当于做删除操作;对于删除操作,由于“更新后的值”为空,则相当于做插入操作;若是修改操作,则用“更新前的值”代替“更新后的值”。(3)继续反向扫描日志文件,查找该事务的其他更新操作,并做同样处理。(4)依次类推,直至读到此事务的开始标记,事务故障恢复就完成了。1事务故障的恢复(1)反向扫描文件日志,即从最后向前扫描2系统故障的恢复系统故障造成数据库不一致状态的原因一些未完成事务对数据库的更新已写入数据库一些已提交事务对数据库的更新还留在缓冲区没来得及写入数据库恢复方法Undo故障发生时未完成的事务Redo已完成的事务系统故障的恢复由系统在重新启动时自动完成,不需要用户干预2系统故障的恢复系统故障造成数据库不一致状态的原因系统的恢复步骤(1)正向扫描日志文件,即从头扫描日志文件。找出故障发生前已经提交的事务,这些事务既有BEGINTRANSACTION记录,也有COMMIT记录,将其事务标识记入REDO队列。同时找出故障发生时尚未完成的事务,这些事务只有BEGINTRANSACTION记录,无相应的COMMIT记录,将其事务标识记入UNDO队列。(2)反向扫描日志文件,对UNDO队列事务进行撤销处理。对每个UNDO事务的更新操作执行逆操作,即将日志记录中“更新前的值”写入数据库。(3)正向扫描日志文件,对REDO队列事务进行重做处理。对每个REDO事务重新执行日志文件登记的操作,即将日志记录中“更新后的值”写入数据库。系统的恢复步骤(1)正向扫描日志文件,即从头扫描日志文件。3介质故障的恢复(1)装入最新的后备数据库副本,使数据库恢复到最近一次转储时的一致性状态。对于静态转储的数据库副本,装入后数据库即处于一致性状态对于动态转储的数据库副本,还须同时装入转储时刻的日志文件副本,利用与恢复系统故障相同的方法(即REDO+UNDO),才能将数据库恢复到一致性状态。3介质故障的恢复(1)装入最新的后备数据库副本,使数据库(2)装入有关的日志文件副本,重做已完成的事务。首先扫描日志文件,找出故障发生时已提交的事务的标识,将其记入重做队列。然后正向扫描日志文件,对重做队列中的所有事务进行重做处理。即将日志记录中“更新后的值”写入数据库。(2)装入有关的日志文件副本,重做已完成的事务。4.具有检查点的恢复技术恢复时的问题:搜索整个日志将耗费大量的时间很多需要REDO处理的事务实际上已经将它们的更新操作结果写到数据库中了,然而恢复子系统又重新执行了这些操作,浪费了大量时间解决办法:DBMS定时设置检查点在检查点时刻才真正做到把对DB的修改写到磁盘。当DB需要恢复时,只有检查点后面的事务需要恢复。4.具有检查点的恢复技术恢复时的问题:具有检查点的恢复技术的实现在日志文件中增加一类新的记录——检查点记录,内容包括:①建立检查点时刻所有正在执行的事务清单。②这些事务最近一个日志记录的地址。增加一个重新开始文件内容:记录各个检查点记录在日志文件中的地址
具有检查点的恢复技术的实现在日志文件中增加一类新的记录——数据库课件08章数据恢复技术和并发控制让恢复子系统在登录日志文件期间动态地维护日志具体步骤是:
①将当前日志缓冲中的所有日志记录写入磁盘的日志文件上;
②在日志文件中写入一个检查点记录;
③将当前数据缓冲的所有数据记录写入磁盘的数据库中;
④把检查点记录在日志文件中的地址写入一个重新开始文件。让恢复子系统在登录日志文件期间动态地维护日志不要REDOTc(检查点)Tf(系统故障)12345REDO撤消REDO撤消恢复策略不要REDOTc(检查点)Tf(系统故障)12345REDO检查点方法的恢复算法(1)从重新开始文件找到最后一个检查点记录在日志文件中的地址,由此找到日志文件中最后一个检查点记录。(2)由该检查点记录得到所有在检查点建立时正在执行的事务清单,将这些事务暂时放入UNDO队列。新建REDO队列并使其暂为空。(3)从检查点开始正向扫描日志文件,如有新开始的事务Ti,把Ti暂时放入UNDO队列;如有提交的事务Tj,把Tj从UNDO队列移到REDO队列;直到日志文件结束。(4)对UNDO队列中的每个事务执行UNDO操作,对REDO队列中的每个事务执行REDO操作。检查点方法的恢复算法(1)从重新开始文件找到最后一个检查点5.数据库镜像介质故障是对系统影响最为严重的一种故障,严重影响数据库的可用性介质故障恢复比较费时为预防介质故障,DBA必须周期性地转储数据库提高数据库可用性的解决方案数据库镜像(Mirror)5.数据库镜像介质故障是对系统影响最为严重的一种故障,严重DBMS自动把整个数据库或其中的关键数据复制到另一个磁盘上DBMS自动保证镜像数据与主数据的一致性DBMS自动把整个数据库或其中的关键数据复制到另一个磁盘上数据库镜像的用途没有出现故障时可用于并发操作一个用户对数据加排他锁修改数据时,其他用户可以读镜像数据库上的数据出现介质故障时DBMS自动利用镜像磁盘数据进行数据库的恢复,不需要关闭系统和重装数据库副本数据库镜像的用途没有出现故障时updateupdateupdatereadreadread没有出现故障时updateupdateupdatereadreadreadupdateupdateupdatereadreadread恢复出现介质故障时updateupdateupdatereadreadread8.2.4SQLServer的数据库恢复技术8.2.4SQLServer的数据库恢复技术511.数据转储策略只备份数据库同时备份数据库和事务日志1.数据转储策略只备份数据库2.数据转储和恢复的SQL语句数据转储BACKUPDATABASE|LOG{database_name|@database_name_var}TO<backup_device_name>[,..n][WITHDIFFERENTIAN]2.数据转储和恢复的SQL语句数据转储数据恢复RESTOREDATABASE{database_name|@database_name_var}[FROM<backup_device>[,...n]][WITHREPLACE]数据恢复3.SQLServer的检查点SQLServer支持具有检查点的恢复技术。SQLServer提供有两种方法建立检查点:由SQLServer自动执行的检查点由数据库所有者或DBA调用CHECKPOINT命令强制执行的检查点。3.SQLServer的检查点SQLServer支持8.3并发控制8.3并发控制56多事务执行方式(1)事务串行执行(serialaccess)每个时刻只有一个事务运行,其他事务必须等到这个事务结束以后方能运行不能充分利用系统资源,发挥数据库共享资源的特点t1t2t3t4T1T2
T3多事务执行方式(1)事务串行执行(serialaccess(2)交叉并发方式(interleavedconcurrency)事务的并行执行是这些并行事务的并行操作轮流交叉运行是单处理机系统中的并发方式,能够减少处理机的空闲时间,提高系统的效率t1t2t3t4T1
T2
T3t1t2t3t4T1
T2
T3(2)交叉并发方式(interleavedconcurre(3)同时并发方式(simultaneousconcurrency)多处理机系统中,每个处理机可以运行一个事务,多个处理机可以同时运行多个事务,实现多个事务真正的并行运行最理想的并发方式,但受制于硬件环境t1t2t3t4T1
T2
T3(3)同时并发方式(simultaneousconcur8.3.1并发操作带来的问题可能会存取和存储不正确的数据,破坏事务的隔离性和数据库的一致性并发控制机制的任务对并发操作进行正确调度保证事务的隔离性和一致性保证数据库的一致性8.3.1并发操作带来的问题可能会存取和存储不正确的数据并发操作带来的数据不一致性丢失修改(lostupdate)不可重复读(non-repeatableread)读“脏”数据(dirtyread)并发操作带来的数据不一致性丢失修改(lostupdate)1.丢失修改T1T2R(x)=20:::R(x)=20
X←20
-5W(x)=15:::X←20-3W(x)=171.丢失修改T1T2R(x)=20:R(x)=20X←22.不可重复读T1T2R(x)=20:::R(x)=20:::X←20-3W(x)=17R(x)=17(同一数据前后不一致)2.不可重复读T1T2R(x)=20:R(x)=20:X←三类不可重复读事务1读取某一数据后:1.事务2对其做了修改,当事务1再次读该数据时,得到与前一次不同的值。2.事务2删除了其中部分记录,当事务1再次读取数据时,发现某些记录神秘地消失了。3.事务2插入了一些记录,当事务1再次按相同条件读取数据时,发现多了一些记录。后两种不可重复读有时也称为幻影现象(phantomrow)三类不可重复读事务1读取某一数据后:3.读“脏”数据T1T2R(x)=20X←20-5W(x)=15R(x)=15:::ROLLBACKx恢复为203.读“脏”数据T1T2R(x)=20X←20-5W(x)三种数据不一致产生的主要原因:并发操作破坏了事务的隔离性并发控制就是要用正确的方式调度并发操作,使一个事务的执行不受其他事务的干扰,从而避免造成数据的不一致性,保证事务的隔离性。并发控制主要技术:封锁三种数据不一致产生的主要原因:8.3.2封锁8.3.2封锁671.封锁的概念封锁就是事务T在对某个数据对象操作之前,先向系统发出请求,对其加锁。在事务T释放它的锁之前,其他的事务不能更新此数据对象。1.封锁的概念封锁就是事务T在对某个数据对象操作之前,先基本封锁类型排它锁又称为写锁(Exclusivelock,简记为X锁)若事务T对数据对象A加上X锁,则只允许T读取和修改A,其它任何事务都不能再对A加任何类型的锁,直到T释放A上的锁。共享锁又称为读锁(Sharelock,简记为S锁)若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其它事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。基本封锁类型排它锁又称为写锁(Exclusivelock,2.封锁协议一级封锁协议事务在修改数据R之前必须先对其加X锁,直到事务结束才释放。事务结束包括正常结束(COMMIT)和非正常结束(ROLLBACK)。一级封锁协议可以防止丢失修改,并保证事务T是可恢复的。在一级封锁协议中,如果仅仅是读数据不对其修改,是不需要加锁的,所以它不能保证可重复读和不读“脏数据”。2.封锁协议一级封锁协议2.封锁协议二级封锁协议在一级封锁协议的基础上,加上事务T在读数据R之前必须先对其加S锁,读完后即可释放S锁。二级封锁协议除了防止丢失修改,还可以进一步防止读“脏数据”。在二级封锁协议中,由于事务T读完了数据后即可释放S锁,所以不能保证可重复读。2.封锁协议二级封锁协议2.封锁协议三级封锁协议在一级封锁协议的基础上,加上事务T在读数据R之前必须先对其加S锁,直到事务结束时释放S锁。三级封锁协议除了防止了丢失修改和不读“脏”数据外,还进一步防止了不可重复读。2.封锁协议三级封锁协议3.活锁和死锁3.活锁和死锁73活锁T1T2T3T4LockRLockRwaitLockRUnlockRwaitLockRwait获得LockRwaitwaitwaitUnlockR…wait获得LockR定义:指某个事务由于请求封锁但总也得不到锁而处于长时间的等待状态。活锁T1T2T3T4LockRLockRwaitLock死锁
T1T2
获得
XlockR1...申请
XlockR2等待等待等待...获得
XlockR2..申请
XlockR1等待等待.在同时处于等待状态的两个或多个事务中,每个事务封锁一部分数据资源,同时等待其他事务释放数据资源。死锁 T1T2获得XlockR1解决死锁的方法两类方法采取一定措施来预防死锁的发生采用一定手段定期诊断系统中有无死锁,若有则解除之解决死锁的方法两类方法死锁的预防产生死锁的原因是两个或多个事务都已封锁了一些数据对象,然后又都请求对已为其他事务封锁的数据对象加锁,从而出现死等待。预防死锁的发生就是要破坏产生死锁的条件。预防死锁的方法一次封锁法顺序封锁法死锁的预防产生死锁的原因是两个或多个事务都已封锁了一些数据对死锁的诊断与解除允许死锁发生解除死锁由DBMS的并发控制子系统定期检测系统中是否存在死锁一旦检测到死锁,就要设法解除死锁的诊断与解除允许死锁发生DBMS对并发事务不同的调度可能会产生不同的结果什么样的调度是正确的?8.3.3并发调度的可串行性DBMS对并发事务不同的调度可能会产生不同的结果8.3.3可串行化(Serializable)调度多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行地执行这些事务时的结果相同,称这种调度策略为可串行化的调度可串行性(Serializability)是并发事务正确调度的准则一个给定的并发调度,当且仅当它是可串行化的,才认为是正确调度可串行化(Serializable)调度8.3.4两段锁协议两段锁协议的内容1.在对任何数据进行读、写操作之前,事务首先要获得对该数据的封锁2.在释放一个封锁之后,事务不再获得任何其他封锁。“两段”锁的含义事务分为两个阶段第一阶段是获得封锁,也称为扩展阶段;第二阶段是释放封锁,也称为收缩阶段。8.3.4两段锁协议两段锁协议的内容例:事务1的封锁序列:Slock(A)→Slock(B)→Xlock(C)→Unlock(A)→Unlock(C)→Unlock(B)事务2的封锁序列:Slock(A)→Unlock(A)→Slock(B)→Xlock(C)→Unlock(C)→Unlock(B)事务1遵守两段锁协议,而事务2不遵守两段协议。例:并行执行的所有事务均遵守两段锁协议,则对这些事务的所有并行调度策略都是可串行化的。
所有遵守两段锁协议的事务,其并行执行的结果一定是正确的事务遵守两段锁协议是可串行化调度的充分条件,而不是必要条件可串行化的调度中,不一定所有事务都必须符合两段锁协议。并行执行的所有事务均遵守两段锁协议,则对这些事务的所有并行调两段锁协议与防止死锁的一次封锁法一次封锁法要求每个事务必须一次将所有要使用的数据全部加锁,否则就不能继续执行,因此一次封锁法遵守两段锁协议但是两段锁协议并不要求事务必须一次将所有要使用的数据全部加锁,因此遵守两段锁协议的事务可能发生死锁两段锁协议与防止死锁的一次封锁法遵守两段锁协议的事务发生死锁T1SlockB读B=2
XlockA等待等待T2
SlockA读A=2
XlockB等待遵守两段锁协议的事务发生死锁T1T28.3.5封锁的粒度X锁和S锁都是加在某一个数据对象上的封锁的对象:逻辑单元,物理单元例:在关系数据库中,封锁对象:逻辑单元:属性值、属性值集合、元组、关系、索引项、整个索引、整个数据库等物理单元:页(数据页或索引页)、物理记录等8.3.5封锁的粒度X锁和S锁都是加在某一个数据对象上的封锁对象可以很大也可以很小例:对整个数据库加锁对某个属性值加锁封锁对象的大小称为封锁的粒度(Granularity)封锁对象可以很大也可以很小选择封锁粒度原则封锁粒度与系统的并发度和并发控制的开销密切相关。封锁的粒度越大,数据库所能够封锁的数据单元就越少,并发度就越小,系统开销也越小;封锁的粒度越小,并发度较高,但系统开销也就越大选择封锁粒度原则封锁粒度与系统的并发度和并发控制的开销密切相1.多粒度封锁和多粒度树多粒度封锁(MultipleGranularityLocking)在一个系统中同时支持多种封锁粒度供不同的事务选择同时考虑封锁开销和并发度两个因素,适当选择封锁粒度需要处理多个关系的大量元组的用户事务:以数据库为封锁单位需要处理大量元组的用户事务:以关系为封锁单元只处理少量元组的用户事务:以元组为封锁单位1.多粒度封锁和多粒度树多粒度封锁(MultipleG多粒度树以树形结构来表示多级封锁粒度根结点是整个数据库,表示最大的数据粒度叶结点表示最小的数据粒度多粒度树例:四级粒度树。根结点为数据库,数据库的子结点为关系,关系的子结点为元组。例:四级粒度树。根结点为数据库,数据库的子结点为关系,关系的多粒度封锁协议允许多粒度树中的每个结点被独立地加锁对一个结点加锁意味着这个结点的所有后裔结点也被加以同样类型的锁在多粒度封锁中一个数据对象可能以两种方式封锁:显式封锁和隐式封锁显式封锁:直接加到数据对象上的封锁隐式封锁:由于其上级结点加锁而使该数据对象加上了锁多粒度封锁协议允许多粒度树中的每个结点被独立地加锁对某个数据对象加锁时系统检查的内容
该数据对象有无显式封锁与之冲突
所有上级结点检查本事务的显式封锁是否与该数据对象上的隐式封锁冲突:(由上级结点封锁造成的)所有下级结点看上面的显式封锁是否与本事务的隐式封锁(将加到下级结点的封锁)冲突。对某个数据对象加锁时系统检查的内容该数据对象2意向锁引进意向锁(intentionlock)目的提高对某个数据对象加锁时系统的检查效率对任一结点加基本锁,必须先对它的上层结点加意向锁如果对一个结点加意向锁,则说明该结点的下层结点正在被加锁2意向锁引进意向锁(intentionlock)目的例:对任一元组r加锁,先对关系R加意向锁事务T要对关系R加X锁,系统只要检查根结点数据库和关系R是否已加了不相容的锁,不需要搜索和检查R中的每一个元组是否加了X锁数据库课件08章数据恢复技术和并发控制常用意向锁意向共享锁(IntentShareLock,简称IS锁)意向排它锁(IntentExclusiveLock,简称IX锁)共享意向排它锁(ShareIntentExclusiveLock,简称SIX锁)常用意向锁意向共享锁(IntentShareLock,简IS锁如果对一个数据对象加IS锁,表示它的后裔结点拟(意向)加S锁。例:要对某个元组加S锁,则要首先对关系和数据库加IS锁IS锁如果对一个数据对象加IS锁,表示它的后裔结点拟(意向)IX锁如果对一个数据对象加IX锁,表示它的后裔结点拟(意向)加X锁。例:要对某个元组加X锁,则要首先对关系和数据库加IX锁。IX锁如果对一个数据对象加IX锁,表示它的后裔结点拟(意向)SIX锁如果对一个数据对象加SIX锁,表示对它加S锁,再加IX锁,即SIX=S+IX。例:对某个表加SIX锁,则表示该事务要读整个表(所以要对该表加S锁),同时会更新个别元组(所以要对该表加IX锁)。SIX锁如果对一个数据对象加SIX锁,表示对它加S锁,再加I数据库课件08章数据恢复技术和并发控制锁的强度锁的强度是指它对其他锁的排斥程度一个事务在申请封锁时以强锁代替弱锁是安全的,反之则不然锁的强度具有意向锁的多粒度封锁方法申请封锁时应该按自上而下的次序进行;释放封锁时则应该按自下而上的次序进行
例:事务T要对一个数据对象加锁,必须先对它的上层结点加意向锁具有意向锁的多粒度封锁方法8.4小结如果数据库只包含成功事务提交的结果,就说数据库处于一致性状态。保证数据一致性是对数据库的最基本的要求。事务是数据库的逻辑工作单位DBMS保证系统中一切事务的原子性、一致性、隔离性和持续性8.4小结如果数据库只包含成功事务提交的结果,就说数据库恢复中最经常使用的技术:数据库转储和登记日志文件恢复的基本原理:利用存储在后备副本、日志文件和数据库镜像中的冗余数据来重建数据库提高恢复效率的技术检查点技术可以提高系统故障的恢复效率可以在一定程度上提高利用动态转储备份进行介质故障恢复的效率镜像技术镜像技术可以改善介质故障的恢复效率恢复中最经常使用的技术:数据库转储和登记日志文件数据库的并发控制以事务为单位数据库的并发控制通常使用封锁机制两类最常用的封锁活锁和死锁并发控制机制调度并发事务操作是否正确的判别准则是可串行性并发操作的正确性则通常由两段锁协议来保证。两段锁协议是可串行化调度的充分条件,但不是必要条件数据库的并发控制以事务为单位第8章数据库恢复和并发控制第8章数据库恢复和并发控制106本章要点事务的基本概念数据库恢复恢复的定义、原则和方法故障的种类及恢复方法具有检查点的恢复技术数据库镜像并发控制并发操作带来的数据不一致性封锁活锁和死锁并发调度的可串行性两段锁协议封锁的粒度本章要点事务的基本概念8.1事务8.1事务1088.1.1事务的基本概念所谓事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。事务开始与结束可以由用户显式控制。如果没有显式定义事务,则由DBMS按缺省规定自动划分事务。8.1.1事务的基本概念所谓事务是用户定义的一个数据库操在SQL中,定义事务的语句有三条:BEGINTRANSACTIONCOMMIT(提交将事务中所有对数据库的更新写回到磁盘上的物理数据库中。)ROLLBACK(回滚,在事务运行的过程中发生了某种故障,事务不能继续执行,系统将事务中对数据库的所有已完成的操作全部撤消,回滚到事务开始时的状态。)在SQL中,定义事务的语句有三条:示例银行转帐:从A帐户过户1000¥到B帐户
read(A); A:=A–1000; write(A); read(B); B:=B+1000; write(B);read(X):从数据库传送数据项X到事务的工作区中write(X):从事务的工作区中将数据项X写回数据库示例银行转帐:从A帐户过户1000¥到B帐户8.1.2事务的性质原子性(Atomicity)事务中包含的所有操作要么全做,要么全不做原子性由恢复机制实现一致性(Consistency)事务开始前,数据库处于一致性的状态;事务结束后,数据库必须仍处于一致性状态事务的隔离执行必须保证数据库的一致性8.1.2事务的性质原子性(Atomicity)隔离性(Isolation)系统必须保证事务不受其它并发执行事务的影响一个事务内部的操作及使用的数据对其他并发事务是隔离的持续性(Durability)一个事务一旦提交之后,它对数据库的影响必须是永久的系统发生故障不能改变事务的持久性隔离性(Isolation)ACID特性可能遭到破坏的因素多个事务并行运行时,不同事务的操作交叉执行事务在运行过程中被强行停止ACID特性可能遭到破坏的因素多个事务并行运行时,不同事务的8.2数据库恢复技术8.2数据库恢复技术115故障是不可避免的计算机硬件故障系统软件和应用软件的错误操作员的失误恶意的破坏故障的影响运行事务非正常中断破坏数据库故障是不可避免的数据库管理系统对故障的对策DBMS提供恢复子系统保证故障发生后,能把数据库中的数据从错误状态恢复到某种逻辑一致的状态保证事务ACID恢复技术是衡量系统优劣的重要指标数据库管理系统对故障的对策DBMS提供恢复子系统8.2.1故障的种类8.2.1故障的种类1181.事务故障
事务故障是某个事务在运行过程中由于种种原因未运行至正常终点就终止了。常见原因运算溢出、并发事务发生死锁、违反完整性限制恢复方法DBMS的恢复子系统要在不影响其他事务运行的情况下,强行回滚(ROLLBACK)该事务。这类恢复操作称为事务撤消(UNDO)。1.事务故障事务故障是某个事务在运行过程中由于种种原因未2.系统故障指造成系统停止运转的任何事件,使得系统要重新启动。整个系统的正常运行突然被破坏所有正在运行的事务都非正常终止内存中数据库缓冲区的信息全部丢失外部存储设备上的数据未受影响2.系统故障指造成系统停止运转的任何事件,使得系统要重新启系统故障的常见原因操作系统或DBMS代码错误操作员操作失误特定类型的硬件错误(如CPU故障)突然停电系统故障的常见原因操作系统或DBMS代码错误恢复方法:系统故障的恢复是由系统在重新启动时自动完成的,不需要用户干预。恢复子系统必须在系统重新启动时,让所有非正常终止的事务回滚,强行撤销所有未完成事务。(undo)对已完成的事务可能有一部分甚至全部留在缓冲区,尚未写回到磁盘上的物理数据库中,应将这些已提交的结果重新写到数据库。恢复子系统除需要撤消所有未完成事务外,还需重做(redo)所有已提交的事务恢复方法:系统故障的恢复是由系统在重新启动时自动完成的,不需3.介质故障硬件故障使存储在外存中的数据部分丢失或全部丢失介质故障比前两类故障的可能性小得多,但破坏性大得多3.介质故障硬件故障使存储在外存中的数据部分丢失或全部丢失介质故障的常见原因硬件故障磁盘损坏磁头碰撞操作系统的某种潜在错误瞬时强磁场干扰介质故障的常见原因硬件故障介质故障的恢复装入数据库发生介质故障前某个时刻的数据副本装入相应的日志文件副本,重做自此时始的所有成功事务,将这些事务已提交的结果重新记入数据库介质故障的恢复装入数据库发生介质故障前某个时刻的数据副本4.计算机病毒和人为破坏计算机病毒是一种人为的故障或破坏。由于用户有意或无意的操作也可能删除数据库中的有用的数据或加入错误的数据,这同样会造成一些潜在的故障。
4.计算机病毒和人为破坏计算机病毒是一种人为的故障或破坏。8.2.2恢复的实现技术8.2.2恢复的实现技术127故障对数据库的影响数据本身被破坏;数据库没有被破坏,但数据可能不正确,这是由于事务的运行被非正常终止造成的。故障对数据库的影响数据本身被破坏;恢复操作的基本原理恢复操作的基本原理:冗余利用存储在系统其它地方的冗余数据来重建数据库中已被破坏或不正确的那部分数据恢复的实现技术复杂一个大型数据库产品,恢复子系统的代码要占全部代码的10%以上恢复操作的基本原理恢复操作的基本原理:冗余恢复机制涉及的关键问题如何建立冗余数据数据转储(backup)登录日志文件(logging)如何利用这些冗余数据实施数据库恢复恢复机制涉及的关键问题如何建立冗余数据分类定义:所谓转储即DBA周期性地将整个数据库复制到另一个介质上保存起来的过程。这些备用的数据文本称为后备副本或后援副本。按数据库状态
按数据量静态转储
动态转储
海量转储
增量转储
1.数据转储分类定义:所谓转储即DBA周期性地将整个数据库复制到另一个静态转储
在系统中无运行事务时进行的转储操作。即转储操作开始的时刻,数据库处于一致性状态,而转储期间不允许(或不存在)对数据库的任何存取、修改活动。故障发生点正常运行静态转储运行事务TaTbTf重装后备副本重新运行事务恢复静态转储在系统中无运行事务时进行的转储操作。即转储操作开始动态转储是指转储期间允许对数据库进行存取或修改。即转储和用户事务可以并发执行。故障发生点正常运行运行事务TaTbTf动态转储运行事务TaTbTfT1T1开始T1结束重装后备副本重新运行Ta以后开始的事务
恢复动态转储是指转储期间允许对数据库进行存取或修改。即转储和用户海量转储与增量转储海量转储:每次转储全部数据库增量转储:只转储上次转储后更新过的数据
转储状态动态转储静态转储转储方式海量转储动态海量转储静态海量转储增量转储动态增量转储静态增量转储转储方法分类海量转储与增量转储海量转储:每次转储全部数据库
转储状态动2.登记日志文件一、日志文件的内容二、日志文件的作用三、登记日志文件的原则2.登记日志文件一、日志文件的内容日志文件的内容日志文件是用来记录事务对数据库的更新操作的文件。格式以记录为单位以数据块为单位日志文件的内容日志文件是用来记录事务对数据库的更新操作的文件日志文件的作用进行事务故障和系统故障恢复动态转储方式中的数据库恢复静态转储方式中,协助后备副本进行故障恢复日志文件的作用进行事务故障和系统故障恢复登记日志文件的原则登记的次序严格按并行事务执行的时间次序必须先写日志文件,后写数据库写日志文件操作:把表示这个修改的日志记录写到日志文件写数据库操作:把对数据的修改写到数据库中登记日志文件的原则登记的次序严格按并行事务执行的时间次序8.2.3故障恢复的策略8.2.3故障恢复的策略1391事务故障的恢复(1)反向扫描文件日志,即从最后向前扫描日志文件,查找该事务的更新操作。(2)对该事务的更新操作执行逆操作,即将日志记录中“更新前的值”写入数据库。对于插入操作,由于“更新前的值”为空,则相当于做删除操作;对于删除操作,由于“更新后的值”为空,则相当于做插入操作;若是修改操作,则用“更新前的值”代替“更新后的值”。(3)继续反向扫描日志文件,查找该事务的其他更新操作,并做同样处理。(4)依次类推,直至读到此事务的开始标记,事务故障恢复就完成了。1事务故障的恢复(1)反向扫描文件日志,即从最后向前扫描2系统故障的恢复系统故障造成数据库不一致状态的原因一些未完成事务对数据库的更新已写入数据库一些已提交事务对数据库的更新还留在缓冲区没来得及写入数据库恢复方法Undo故障发生时未完成的事务Redo已完成的事务系统故障的恢复由系统在重新启动时自动完成,不需要用户干预2系统故障的恢复系统故障造成数据库不一致状态的原因系统的恢复步骤(1)正向扫描日志文件,即从头扫描日志文件。找出故障发生前已经提交的事务,这些事务既有BEGINTRANSACTION记录,也有COMMIT记录,将其事务标识记入REDO队列。同时找出故障发生时尚未完成的事务,这些事务只有BEGINTRANSACTION记录,无相应的COMMIT记录,将其事务标识记入UNDO队列。(2)反向扫描日志文件,对UNDO队列事务进行撤销处理。对每个UNDO事务的更新操作执行逆操作,即将日志记录中“更新前的值”写入数据库。(3)正向扫描日志文件,对REDO队列事务进行重做处理。对每个REDO事务重新执行日志文件登记的操作,即将日志记录中“更新后的值”写入数据库。系统的恢复步骤(1)正向扫描日志文件,即从头扫描日志文件。3介质故障的恢复(1)装入最新的后备数据库副本,使数据库恢复到最近一次转储时的一致性状态。对于静态转储的数据库副本,装入后数据库即处于一致性状态对于动态转储的数据库副本,还须同时装入转储时刻的日志文件副本,利用与恢复系统故障相同的方法(即REDO+UNDO),才能将数据库恢复到一致性状态。3介质故障的恢复(1)装入最新的后备数据库副本,使数据库(2)装入有关的日志文件副本,重做已完成的事务。首先扫描日志文件,找出故障发生时已提交的事务的标识,将其记入重做队列。然后正向扫描日志文件,对重做队列中的所有事务进行重做处理。即将日志记录中“更新后的值”写入数据库。(2)装入有关的日志文件副本,重做已完成的事务。4.具有检查点的恢复技术恢复时的问题:搜索整个日志将耗费大量的时间很多需要REDO处理的事务实际上已经将它们的更新操作结果写到数据库中了,然而恢复子系统又重新执行了这些操作,浪费了大量时间解决办法:DBMS定时设置检查点在检查点时刻才真正做到把对DB的修改写到磁盘。当DB需要恢复时,只有检查点后面的事务需要恢复。4.具有检查点的恢复技术恢复时的问题:具有检查点的恢复技术的实现在日志文件中增加一类新的记录——检查点记录,内容包括:①建立检查点时刻所有正在执行的事务清单。②这些事务最近一个日志记录的地址。增加一个重新开始文件内容:记录各个检查点记录在日志文件中的地址
具有检查点的恢复技术的实现在日志文件中增加一类新的记录——数据库课件08章数据恢复技术和并发控制让恢复子系统在登录日志文件期间动态地维护日志具体步骤是:
①将当前日志缓冲中的所有日志记录写入磁盘的日志文件上;
②在日志文件中写入一个检查点记录;
③将当前数据缓冲的所有数据记录写入磁盘的数据库中;
④把检查点记录在日志文件中的地址写入一个重新开始文件。让恢复子系统在登录日志文件期间动态地维护日志不要REDOTc(检查点)Tf(系统故障)12345REDO撤消REDO撤消恢复策略不要REDOTc(检查点)Tf(系统故障)12345REDO检查点方法的恢复算法(1)从重新开始文件找到最后一个检查点记录在日志文件中的地址,由此找到日志文件中最后一个检查点记录。(2)由该检查点记录得到所有在检查点建立时正在执行的事务清单,将这些事务暂时放入UNDO队列。新建REDO队列并使其暂为空。(3)从检查点开始正向扫描日志文件,如有新开始的事务Ti,把Ti暂时放入UNDO队列;如有提交的事务Tj,把Tj从UNDO队列移到REDO队列;直到日志文件结束。(4)对UNDO队列中的每个事务执行UNDO操作,对REDO队列中的每个事务执行REDO操作。检查点方法的恢复算法(1)从重新开始文件找到最后一个检查点5.数据库镜像介质故障是对系统影响最为严重的一种故障,严重影响数据库的可用性介质故障恢复比较费时为预防介质故障,DBA必须周期性地转储数据库提高数据库可用性的解决方案数据库镜像(Mirror)5.数据库镜像介质故障是对系统影响最为严重的一种故障,严重DBMS自动把整个数据库或其中的关键数据复制到另一个磁盘上DBMS自动保证镜像数据与主数据的一致性DBMS自动把整个数据库或其中的关键数据复制到另一个磁盘上数据库镜像的用途没有出现故障时可用于并发操作一个用户对数据加排他锁修改数据时,其他用户可以读镜像数据库上的数据出现介质故障时DBMS自动利用镜像磁盘数据进行数据库的恢复,不需要关闭系统和重装数据库副本数据库镜像的用途没有出现故障时updateupdateupdatereadreadread没有出现故障时updateupdateupdatereadreadreadupdateupdateupdatereadreadread恢复出现介质故障时updateupdateupdatereadreadread8.2.4SQLServer的数据库恢复技术8.2.4SQLServer的数据库恢复技术1561.数据转储策略只备份数据库同时备份数据库和事务日志1.数据转储策略只备份数据库2.数据转储和恢复的SQL语句数据转储BACKUPDATABASE|LOG{database_name|@database_name_var}TO<backup_device_name>[,..n][WITHDIFFERENTIAN]2.数据转储和恢复的SQL语句数据转储数据恢复RESTOREDATABASE{database_name|@database_name_var}[FROM<backup_device>[,...n]][WITHREPLACE]数据恢复3.SQLServer的检查点SQLServer支持具有检查点的恢复技术。SQLServer提供有两种方法建立检查点:由SQLServer自动执行的检查点由数据库所有者或DBA调用CHECKPOINT命令强制执行的检查点。3.SQLServer的检查点SQLServer支持8.3并发控制8.3并发控制161多事务执行方式(1)事务串行执行(serialaccess)每个时刻只有一个事务运行,其他事务必须等到这个事务结束以后方能运行不能充分利用系统资源,发挥数据库共享资源的特点t1t2t3t4T1T2
T3多事务执行方式(1)事务串行执行(serialaccess(2)交叉并发方式(interleavedconcurrency)事务的并行执行是这些并行事务的并行操作轮流交叉运行是单处理机系统中的并发方式,能够减少处理机的空闲时间,提高系统的效率t1t2t3t4T1
T2
T3t1t2t3t4T1
T2
T3(2)交叉并发方式(interleavedconcurre(3)同时并发方式(simultaneousconcurrency)多处理机系统中,每个处理机可以运行一个事务,多个处理机可以同时运行多个事务,实现多个事务真正的并行运行最理想的并发方式,但受制于硬件环境t1t2t3t4T1
T2
T3(3)同时并发方式(simultaneousconcur8.3.1并发操作带来的问题可能会存取和存储不正确的数据,破坏事务的隔离性和数据库的一致性并发控制机制的任务对并发操作进行正确调度保证事务的隔离性和一致性保证数据库的一致性8.3.1并发操作带来的问题可能会存取和存储不正确的数据并发操作带来的数据不一致性丢失修改(lostupdate)不可重复读(non-repeatableread)读“脏”数据(dirtyread)并发操作带来的数据不一致性丢失修改(lostupdate)1.丢失修改T1T2R(x)=20:::R(x)=20
X←20
-5W(x)=15:::X←20-3W(x)=171.丢失修改T1T2R(x)=20:R(x)=20X←22.不可重复读T1T2R(x)=20:::R(x)=20:::X←20-3W(x)=17R(x)=17(同一数据前后不一致)2.不可重复读T1T2R(x)=20:R(x)=20:X←三类不可重复读事务1读取某一数据后:1.事务2对其做了修改,当事务1再次读该数据时,得到与前一次不同的值。2.事务2删除了其中部分记录,当事务1再次读取数据时,发现某些记录神秘地消失了。3.事务2插入了一些记录,当事务1再次按相同条件读取数据时,发现多了一些记录。后两种不可重复读有时也称为幻影现象(phantomrow)三类不可重复读事务1读取某一数据后:3.读“脏”数据T1T2R(x)=20X←20-5W(x)=15R(x)=15:::ROLLBACKx恢复为203.读“脏”数据T1T2R(x)=20X←20-5W(x)三种数据不一致产生的主要原因:并发操作破坏了事务的隔离性并发控制就是要用正确的方式调度并发操作,使一个事务的执行不受其他事务的干扰,从而避免造成数据的不一致性,保证事务的隔离性。并发控制主要技术:封锁三种数据不一致产生的主要原因:8.3.2封锁8.3.2封锁1721.封锁的概念封锁就是事务T在对某个数据对象操作之前,先向系统发出请求,对其加锁。在事务T释放它的锁之前,其他的事务不能更新此数据对象。1.封锁的概念封锁就是事务T在对某个数据对象操作之前,先基本封锁类型排它锁又称为写锁(Exclusivelock,简记为X锁)若事务T对数据对象A加上X锁,则只允许T读取和修改A,其它任何事务都不能再对A加任何类型的锁,直到T释放A上的锁。共享锁又称为读锁(Sharelock,简记为S锁)若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其它事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。基本封锁类型排它锁又称为写锁(Exclusivelock,2.封锁协议一级封锁协议事务在修改数据R之前必须先对其加X锁,直到事务结束才释放。事务结束包括正常结束(COMMIT)和非正常结束(ROLLBACK)。一级封锁协议可以防止丢失修改,并保证事务T是可恢复的。在一级封锁协议中,如果仅仅是读数据不对其修改,是不需要加锁的,所以它不能保证可重复读和不读“脏数据”。2.封锁协议一级封锁协议2.封锁协议二级封锁协议在一级封锁协议的基础上,加上事务T在读数据R之前必须先对其加S锁,读完后即可释放S锁。二级封锁协议除了防止丢失修改,还可以进一步防止读“脏数据”。在二级封锁协议中,由于事务T读完了数据后即可释放S锁,所以不能保证可重复读。2.封锁协议二级封锁协议2.封锁协议三级封锁协议在一级封锁协议的基础上,加上事务T在读数据R之前必须先对其加S锁,直到事务结束时释放S锁。三级封锁协议除了防止了丢失修改和不读“脏”数据外,还进一步防止了不可重复读。2.封锁协议三级封锁协议3.活锁和死锁3.活锁和死锁178活锁T1T2T3T4LockRLockRwaitLockRUnlockRwaitLockRwait获得LockRwaitwaitwaitUnlockR…wait获得LockR定义:指某个事务由于请求封锁但总也得不到锁而处于长时间的等待状态。活锁T1T2T3T4LockRLockRwaitLock死锁
T1T2
获得
XlockR1...申请
XlockR2等待等待等待...获得
XlockR2..申请
XlockR1等待等待.在同时处于等待状态的两个或多个事务中,每个事务封锁一部分数据资源,同时等待其他事务释放数据资源。死锁 T1T2获得XlockR1解决死锁的方法两类方法采取一定措施来预防死锁的发生采用一定手段定期诊断系统中有无死锁,若有则解除之解决死锁的方法两类方法死锁的预防产生死锁的原因是两个或多个事务都已封锁了一些数据对象,然后又都请求对已为其他事务封锁的数据对象加锁,从而出现死等待。预防死锁的发生就是要破坏产生死锁的条件。预防死锁的方法一次封锁法顺序封锁法死锁的预防产生死锁的原因是两个或多个事务都已封锁了一些数据对死锁的诊断与解除允许死锁发生解除死锁由DBMS的并发控制子系统定期检测系统中是否存在死锁一旦检测到死锁,就要设法解除死锁的诊断与解除允许死锁发生DBMS对并发事务不同的调度可能会产生不同的结果什么样的调度是正确的?8.3.3并发调度的可串行性DBMS对并发事务不同的调度可能会产生不同的结果8.3.3可串行化(Serializable)调度多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行地执行这些事务时的结果相同,称这种调度策略为可串行化的调度可串行性(Serializability)是并发事务正确调度的准则一个给定的并发调度,当且仅当它是可串行化的,才认为是正确调度可串行化(Serializable)调度8.3.4两段锁协议两段锁协议的内容1.在对任何数据进行读、写操作之前,事务首先要获得对该数据的封锁2.在释放一个封锁之后,事务不再获得任何其他封锁。“两段”锁的含义事务分为两个阶段第一阶段是获得封锁,也称为扩展阶段;第二阶段是释放封锁,也称为收缩阶段。8.3.4两段锁协议两段锁协议的内容例:事务1的封锁序列:Slock(A)→Slock(B)→Xlock(C)→Unlock(A)→Unlock(C)→Unlock(B)事务2的封锁序列:Slock(A)→Unlock(A)→Slock(B)→Xlock(C)→Unlock(C)→Unlock(B)事务1遵守两段锁协议,而事务2不遵守两段协议。例:并行执行的所有事务均遵守两段锁协议,则对这些事务的所有并行调度策略都是可串行化的。
所有遵守两段锁协议的事务,其并行执行的结果一定是正确的事务遵守两段锁协议是可串行化调度的充分条件,而不是必要条件可串行化的调度中,不一
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 肾内科病人饮食指导纲要
- 2025年事业单位工勤技能-湖北-湖北检验员五级(初级工)历年参考题库典型考点含答案解析
- 2025年无土栽培蔬菜产业农产品品牌价值提升可行性研究及策略报告
- 文化遗产保护与利用项目2025年资金申请资金使用效益分析报告
- 2025年事业单位工勤技能-湖北-湖北保健按摩师三级(高级工)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-海南-海南机械热加工三级(高级工)历年参考题库含答案解析
- 2025年事业单位工勤技能-海南-海南垃圾清扫与处理工三级(高级工)历年参考题库含答案解析
- 2025年智慧农业温室建设与智能温室水资源循环利用系统可行性分析报告
- 2025年事业单位工勤技能-河南-河南汽车驾驶与维修员五级(初级工)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-河南-河南园林绿化工五级(初级工)历年参考题库典型考点含答案解析
- 湖北省圆创高中名校联盟2026届高三第一次联合测评 语文试卷(含答案)
- 巡察整改工作课件模板
- 2025年事业单位工勤技能-河南-河南农机驾驶维修工一级(高级技师)历年参考题库含答案解析(5套)
- 医务人员职业道德准则理论试题
- 2025年幼儿园教师岗位聘任协议(含资格认证及薪酬激励)
- 成都东部集团有限公司招聘考试真题2024
- 银行收息管理办法
- 海外房产投资项目方案(3篇)
- 消防员心理健康课件
- 2025年煤炭矿山职业技能鉴定考试-综采考试历年参考题库含答案解析(5套100道单选题合辑)
- 2024年中级注册安全工程师《安全生产技术基础》考试真题及答案
评论
0/150
提交评论