制造信息技术DB数据库恢复技术.ppt

上传人:小飞机 文档编号:5933066 上传时间:2023-09-05 格式:PPT 页数:30 大小:204.50KB
返回 下载 相关 举报
制造信息技术DB数据库恢复技术.ppt_第1页
第1页 / 共30页
制造信息技术DB数据库恢复技术.ppt_第2页
第2页 / 共30页
制造信息技术DB数据库恢复技术.ppt_第3页
第3页 / 共30页
制造信息技术DB数据库恢复技术.ppt_第4页
第4页 / 共30页
制造信息技术DB数据库恢复技术.ppt_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《制造信息技术DB数据库恢复技术.ppt》由会员分享,可在线阅读,更多相关《制造信息技术DB数据库恢复技术.ppt(30页珍藏版)》请在三一办公上搜索。

1、现代制造信息技术基础第一部分 数据库系统概论数据库恢复技术,徐 世 新北京航空航天大学机械学院7202002 年 7 月,主要内容,事物的基本概念故障的种类,恢复的实现技术数据转储登记日志文件,恢复策略数据库镜像,事物(Transaction),事物是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。,在SQL中定义事物的的语句有三条:BEGIN TRANSACTIONCOMMITROLLBACK,COMMIT表示提交,即提交事物的所有操作。具体地说就是将事物中所有对数据库的更新写回到磁盘上的物理数据库中去,事物正常结束。ROLLBACK表示回滚,撤消事物已部

2、分完成的操作,即在事物运行的过程中发生了某种故障,事物不能继续执行,系统将事物中对数据库的所有已完成的操作全部撤消,滚回到事物开始时的状态。,原子性。事物是数据库的逻辑工作单位,事物中包括的诸操作要么都做,要么都不做。一致性。事物执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。隔离性。一个事物的执行不能被其他事物干扰。即一个事物内部的操作及使用的数据对其他并发事务是隔离的,并发执行的各个事务之间不能互相干扰。持续性。一个事物一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他事务或故障不应该对其执行结果有任何影响。,事物的特性,事物具有四个特性:原子性(Atomicit

3、y)、一致性(Consistency)、隔离性(Isolation)和持续性(Durability)。,事务ACID特性可能遭到破坏的因素有:多个事务并发运行时,不同事物的操作交叉进行;事务在运行过程中被强行停止。,DBMS必须具有把数据库从错误状态恢复到某一已知的正确状态的功能,这就是数据库的恢复。,故障的种类,事物内部的故障。有的可通过事务程序本身发现,有的是非预期的系统故障。指造成系统停止运转的任何事件,使得系统要重新启动介质故障。指外存故障,如磁盘损坏计算机病毒。,恢复的基本原理:冗余。数据库中任何一部分被破坏的或不正确的数据可以根据存储在系统别处的冗余数据来重建,恢复机制涉及的两个关

4、键问题:第一,如何建立冗余数据。建立冗余数据最常用的技术是数据转储和登录日志文件;第二,如何利用这些冗余数据实施数据库恢复,恢复的实现技术,数据转储:DBA定期地将整个数据库复制到另一个磁盘上保存起来的过程。这些备用的数据文本称为后备副本。当数据库遭到破坏后可将后备副本重新装入,但这样只能恢复到转储时的状态,要想恢复到故障发生时的状态,必须重新运行自转储以后的所有更新事物(1)转储可分为静态转储和动态转储(2)转储还可分为海量转储和增量转储两种方式,以记录为单位的日志文件中需要登记的内容包括:各个事物的开始(BEGIN TRANSACTION)标志。各个事物的结束(COMMIT或ROLLBAC

5、K)标志。各个事物的所有更新操作。,日志文件的格式和内容,日志文件是用来记录事物对数据库的更新操作的文件。日志文件主要有两种格式:以记录为单位的日志文件和以数据块为单位的日志文件,对于以数据块为单位的日志文件,日志记录的内容包括事物标识和被更新的数据块,每个事务的开始标志、结束标志和更新操作均作为日志文件中的一个日志记录(Log record)。每个日志记录的内容主要包括:事物标识(标明是哪个事物)操作的类型(插入、删除或修改)操作对象(记录内部标识)更新前数据的旧值(对插入操作而言,此项为空值)更新后数据的新值(对删除操作而言,此项为空值),登记日志文件,为保证数据库是可恢复的,登记日志文件

6、时必须遵循两条原则:登记的次序是严格按并发事务执行的时间次序必须先写日志文件,后写数据库,事务故障恢复和系统故障恢复必须用日志文件在动态转储方式中必须建立日志文件,后备副本和日志文件综合起来才能有效地恢复数据库在静态转储方式中,也可以建立日志文件,把对数据的修改写到DB中和把表示这个修改的日志记录写到日志文件中是两个不同的操作。有可能在这两个操作之间发生故障,即这两个写操作只完成了一个。若先写了DB修改,而在运行记录中没有登记这个修改,则以后就无法恢复这个修改了。若先写日志,但没有修改DB,按日志文件恢复时只不过是多执行一次不必要的UNDO操作,并不会影响DB的正确性,系统故障的恢复系统故障造

7、成数据库不一致的原因有两个,一是未完成事务对数据库的更新可能已写入数据库,二是已提交事务对数据库的更新可能还留在缓冲区没来得及写入数据库。因此恢复操作就是要撤销故障发生时未完成的事务,重做已完成的事务。系统故障的恢复是由系统在重新启动时自动完成的。,事务故障的恢复事务故障是指事务在运行至正常终止点前被终止,这时恢复子系统应利用日志文件撤销此事务对数据库的修改。事务故障的恢复是由系统自动完成的。,恢复策略,介质故障的恢复恢复方法是重装数据库的最新后备副本,然后重做已完成的事务。,数据库镜像,根据DBA的要求,自动把整个数据库或其中的关键数据复制到另一个磁盘上。每当主数据库更新时,DBMS自动把更

8、新后的数据复制过去,即DBMS自动保证镜像数据与主数据的一致性。,一旦出现介质故障,可由镜像磁盘继续提供使用,同时DBMS自动利用镜像磁盘数据进行数据库的恢复,不需要关闭系统和重装数据库副本。在没有出现故障时,数据库镜像还可以用于并发操作。,现代制造信息技术基础第一部分 数据库系统概论并 发 控 制,徐 世 新北京航空航天大学机械学院7202002 年 7 月,主要内容,并发控制概述封锁封锁协议活锁和死锁并发调度的可串行性两段锁协议,封锁的粒度多粒度封锁意向锁,例子 考虑飞机订票系统中的一个活动序列:甲售票点(甲事务)读出某航班的机票余额A,设A=16;乙售票点(乙事务)读出同一航班的机票余额

9、A,也为A=16;甲售票点卖出一张机票,修改余额AA1,所以A为15,把A写回数据库;乙售票点也卖出一张机票,修改余额AA1,所以A为15,把A写回数据库。结果明明卖出两张机票,数据库中机票余额只减少1。这种情况称为数据库的不一致性。,并发控制概述,为了保证数据库的一致性,DBMS需要对并发操作进行正确调度,这就是DBMS中并发控制的责任,并发操作带来的数据不一致性包括三类:丢失修改、不可重复读和读“脏”数据。,并发控制概述,丢失修改两个事务T1和T2读入同一数据并修改,T2提交的结果破坏了T1提交的结果,导致T1的修改被丢失不可重复读事务T1读取数据后,事务T2执行更新操作,使T1无法再现前

10、一次读取结果。具体有三种情况:事务T1读取某一数据后,事务T2对其做了修改,当T1再次读取该数据时,得到与前一次不同的值。事务T1按一定条件从数据库中读取了某些数据记录后,事务T2删除了其中部分记录,当T1再次按相同条件读取数据时,发现某些记录神秘地消失了。事务T1按一定条件从数据库中读取了某些数据记录后,事务T2插入了一些记录,当T1再次按相同条件读取数据时,发现多了一些记录读“脏”数据读“脏”数据是指事务T1修改某一数据,并将其写回磁盘,事务T2读取同一数据后,T1由于某种原因被撤销,这时T1已修改过的数据恢复原值,T2读到的数据就与数据库中的数据不一致,则T2读到的数据就为“脏”数据,即

11、不正确的数据,并发控制概述,排它锁(Exclusive Locks,简称X锁):若事务T对数据对象A加上X锁,则只允许T读取和修改A,其他任何事务都不能再对A加任何类型的锁,直到T释放A上的锁。这就保证了其他事务在T释放A上的锁之前不能再读取和修改A。,封锁(Locking),封锁就是事务T在对某个数据对象例如表、记录操作之前,先向系统发出请求,对其加锁。加锁后事务T就对该数据对象有了一定的控制,在T释放它的锁之前,其他事务不能更新此数据对象,共享锁(Share Locks,简称S锁):若事务T对数据对象A加上S锁,则T可以读A但不能修改A,其他事务只能再对A加S锁,而不能加X锁,直到T释放A

12、上的S锁。这就保证了其他事务可以读A,但在T释放A上的S锁之前不能对A做任何修改。,一级封锁协议:事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放。事务结束包括正常结束和非正常结束。,在运用X锁和S锁这两种基本封锁对数据对象加锁时,还需要约定一些规则,例如何时申请X锁或S锁、持锁时间、何时释放等。称这些规则为封锁协议。,二级封锁协议:一级封锁协议加上事务T在读取数据R之前必须先对其加S锁,读完后即可释放S锁。,封锁协议,三级封锁协议:一级封锁协议加上事务T在读取数据R之前必须先对其加S锁,直到事务结束才释放。,避免活锁的简单方法是采用先来先服务的策略。当多个事务请求封锁同一数据对象时

13、,封锁子系统按请求封锁的先后次序对事务排队,数据对象上的锁一旦释放就批准申请队列中第一个事务获得锁。,活锁和死锁,在数据库中,产生死锁的原因是两个或多个事务都已封锁了一些数据对象,然后又都请求已被其他事务封锁的数据对象加锁,从而出现死等待。目前数据库中解决死锁问题主要有两类方法:一类是采取一定措施来预防死锁的发生,另一类方法是允许发生死锁,采用一定手段定期诊断系统中有无死锁,若有则解除之。,活锁和死锁,死锁的预防一次封锁法:要求每个事务必须一次将所有要使用的数据全部加锁,否则就不能继续执行。存在的问题:一次就将以后要用到的全部数据加锁,势必扩大了封锁的范围,从而降低了系统的并发度;很难事先精确

14、地确定每个事务所要封锁的数据对象,为此只能扩大封锁范围,将事务在执行过程中可能要封锁的数据对象全部加锁,这就进一步降低了并发度顺序封锁法:预先对数据库对象规定一个封锁顺序,所有事务都按这个顺序实行封锁。存在的问题:维护资源的封锁顺序困难,成本高;很难事先确定每一个事务要封锁哪些对象,因此也就很难按规定的顺序去施加封锁,活锁和死锁,死锁的诊断超时法:若一个事务等待的时间超过规定的时限,就认为发生了死锁。等待图法:事务等待图是一个有向图G=(T,U)。T为结点的集合,每个结点表示正运行的事务;U为边的集合,每条边表示事务等待的情况。若T1等待T2,则T1、T2之间画一条有向边,从T1指向T2。事务

15、等待图动态地反映了所有事务的等待情况。并发控制子系统周期性地监测事务等待图,若发现图中存在回路,则表示系统中出现了死锁。,死锁的解除通常采用的方法是选择一个处理死锁代价最小的事务,将其撤销,释放此事务持有的所有的锁,使其他事务得以继续运行下去。当然,对撤销的事务所执行的数据修改操作必须加以恢复,并发调度的可串行性,定义 多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行地执行它们时的结果相同,我们称这种调度策略为可串行化的调度。可串行性是并发事务正确性的准则。按此准则规定,一个给定的并发调度,当且仅当它是可串行化的,才认为是正确调度,为了保证并发操作的正确性,DBMS的并发控制机制必需

16、提供一定的手段来保证调度是可串行化的。在某一事务执行时禁止其他事务执行的调度策略一定是可串行化的调度。但此方法不能使用户充分共享数据库资源。目前DBMS普遍采用封锁方法实现并发操作调度的可串行性,从而保证调度的正确性。,并发调度的可串行性,例子 现有两个事务,分别包含下列操作:事务T1:读B;A=B+1;写回A。事务T2:读A;B=A+1;写回B。,两段锁协议,两段锁协议 所有事务必须分两个阶段对数据项加锁和解锁。在对任何数据进行读、写操作之前,首先要申请并获得对该数据的封锁;在释放一个封锁之后,事务不再申请和获得任何其他封锁。,所谓“两段”锁的含义是:事务分为两个阶段,第一阶段是获得封锁,也

17、称为扩展阶段。在这阶段,事务可以申请获得任何数据项上的任何类型的锁,但不能释放任何锁。第二阶段是释放封锁,也称为收缩阶段。在这阶段,事务可以释放任何数据项上的任何类型的锁,但不能再申请任何锁,例子 事务T1遵守两段锁协议,其封锁顺序是:Slock A Slock B Xlock C Unlock B Unlock A Unlock C事务T2不遵守两段锁协议,其封锁顺序是:Slock A Unlock A Slock B Xlock C Unlock C Unlock B,若并发执行的所有事务均遵守两段锁协议,则对这些事务的任何并发调度策略都是可串行化的。,事务遵守两段锁协议是可串行化调度的充

18、分条件,而不是必要条件。若对并发事务的一个调度是可串行化的,不一定所有事务都符合两段锁协议。,注意两段锁协议和防止死锁的一次封锁法的异同:一次封锁法要求每个事务必须一次将所有要使用的数据全部加锁,否则就不能继续执行,因此一次封锁法遵守两段锁协议;但是两段锁协议并不要求事务必须一次将所有要使用的数据全部加锁,因此遵守两段锁协议的事务可能发生死锁,两段锁协议,封锁的粒度,封锁对象的大小称为封锁粒度。封锁对象可以是这样一些逻辑单元:属性值、属性值的集合、元组、关系、索引项、整个索引直至整个数据库。也可以是这样一些物理单元:页(数据页或索引页)、块等。封锁粒度与系统的并发度和并发控制的开销有关。如果在

19、一个系统中同时支持多种封锁粒度供不同的事务选择是比较理想的,这种封锁方法称为多粒度封锁。选择封锁粒度应同时考虑封锁开销和并发度两个因素,适当选择封锁粒度以求得最优的效果。一般来说,需要处理大量元组的事务可以以关系为封锁粒度;需要处理多个关系的大量元组的事务可以以数据库为封锁粒度;而对于一个处理少量元组的用户事务,以元组为封锁粒度比较合适,封锁的粒度,多粒度树的根结点是整个数据库,表示最大的数据粒度。叶结点表示最小的数据粒度。,多粒度封锁协议允许多粒度树中的每个结点被独立地加锁。对一个结点加锁意味着这个结点的所有后裔结点也被加以同样类型的锁。,显式封锁是应事务的要求直接加到数据对象上的锁;隐式封

20、锁是该数据对象没有独立加锁,是由于其上级结点加锁而使该数据对象加上了锁。,对某个数据对象加锁,系统要检查该数据对象上有无显式封锁与之冲突;还要检查其所有上级结点,看本事务的显式封锁是否与该数据对象上的隐式封锁冲突;还要检查其所有下级结点,看上面的显式封锁是否与本事务的隐式封锁冲突。,例如,事务T要对关系R1加X锁。系统必须搜索其上级结点数据库、关系R1以及R1中的每个元组,若其中某个数据对象已加了不相容锁,则T必须等待。,意向锁的含义是如果对一个结点加意向锁,则说明该结点的下层结点正在被加锁;对任一结点加锁时,必须先对它的上层结点加意向锁。,意向锁,IS锁:如果对一个数据对象加IS锁,表示它的

21、后裔结点拟加S锁IX锁:如果对一个数据对象加IX锁,表示它的后裔结点拟加X锁SIX锁:如果对一个数据对象加SIX锁,表示它加S锁,再加IX锁,例如,要对某个元组加S锁,则要首先对关系和数据库加IS锁。要对某个元组加X锁,则要首先对关系和数据库加IX锁。要某个表加SIX锁,则表示该事务要读取整个表(所以要对该表加S锁),同时会更新个别元组(所以要对该表加IX锁)。,意向锁,具有意向锁的多粒度方法中任意事务T要对一个数据对象加锁,必须先对它的上层结点加意向锁。申请封锁时应该按自上而下的次序进行;释放封锁时应该按自下而上的次序进行,T1,T2,小结,数据库的重要特征是它能为多个用户提供数据共享。DBMS必须提供并发控制机制来协调并发用户的并发操作以保证并发事务的隔离性,保证数据库的一致性数据库的并发控制以事务为单位,通常使用封锁技术实现并发控制。本章介绍了两类最常用的封锁和三级封锁协议。并发控制机制调度并发事务操作是否正确的判断准则是可串性行,两段锁协议是可串行化调度的充分条件,但不是必要条件。因此,两段锁协议可以保证并发事务调度的正确性对数据对象施加封锁,会带来活锁和死锁问题,并发控制机制必须提供适合数据库特点的解决方法,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号