06-1数据库系统的恢复和并发控制技术报告

上传人:繁星 文档编号:88158475 上传时间:2019-04-20 格式:PPT 页数:65 大小:303KB
返回 下载 相关 举报
06-1数据库系统的恢复和并发控制技术报告_第1页
第1页 / 共65页
06-1数据库系统的恢复和并发控制技术报告_第2页
第2页 / 共65页
06-1数据库系统的恢复和并发控制技术报告_第3页
第3页 / 共65页
06-1数据库系统的恢复和并发控制技术报告_第4页
第4页 / 共65页
06-1数据库系统的恢复和并发控制技术报告_第5页
第5页 / 共65页
点击查看更多>>
资源描述

《06-1数据库系统的恢复和并发控制技术报告》由会员分享,可在线阅读,更多相关《06-1数据库系统的恢复和并发控制技术报告(65页珍藏版)》请在金锄头文库上搜索。

1、1,6 数据库保护,数据库恢复 并发控制 数据库安全性 数据库完整性,2,事务:是一个不可分割的操作序列,该操作序列要么全做,要么全不做。 强调:事务和程序是两个概念。 一个程序中可以包含多个事务。 事务是恢复和并发控制的基本单位,第6章 数据库保护,6.1 事务,3,隐式控制:由DBMS按缺省规定自动划分。 显式控制: BEGIN TRANSACTION 事务开始 COMMIT 事务提交,重新改写数据库 ROLLBACK 事务提交,发生错误撤消,BEGIN TRANSACTION INSERT INTO S(S#, Sname, Sage, Sdept) VALUES(10002, 李娜,

2、18,计算机) COMMIT,例如:,4,BEGIN TRANSACTION DELETE FROM S WHERE S#=10002 DELETE FROM SC WHERE S#=10002 ROLLBACK,5,1、原子性(Atomicity) 事务是不可分割的工作单位 2、一致性(Consistency) 事务提交后,数据库从一个一致性状态变到另一个一致性状态。,二、事务的性质(ACID),6,例:现假设一个公司数据库中有两个账户S,C,分别有存款30万元和20万元,现从S账户上的取出10 万元放入到C账户上。,7,S:200000 C:200000 中间状态,一致状态,一致状态,Re

3、ad(S) S=300000 S=S-100000 S=200000 Write(S),Read(C) C=200000 C=C+100000 C=300000 Write(C),S:300000 C:200000,S:200000 C:300000,8,3、隔离性(Isolation) 在事务完成之前,它对数据库产生的结果不能被其它事务引用。 4、持续性(Durability) 一旦事务执行成功(提交),其对数据库产生的效果永久有效。,9,数据库的恢复: 把数据库从错误状态恢复到某一已知的正确状态。,一、故障的类型 1事务故障 2系统故障 3介质故障 4计算机病毒,第二节 恢复技术,10,1

4、事务故障 是事务内部的故障。 预期故障: 通过在程序中加判断条件来实现 非预期的故障: 如由于死锁而被迫撤销的事务等,11,2系统故障 (需要系统重新启动) 原因:硬件错误、操作系统故障、DBMS代码错误、突然停电等。 特点:故障影响正在运行的所有事务,但不破坏数据库。可能会造成数据库中数据的不一致性。其原因: 故障发生时,尚未完成的事务的结果可能已送入到物理数据库。 故障发生时,有些已完成的事务所做的数据更改还在缓冲区中,尚未写到物理数据库中。,12,3介质故障 是指存储数据库的磁盘发生故障。 原因:可能是磁盘损坏、磁头碰撞、瞬时强磁场干扰等。 特点:使数据库受到破环。虽然可能性小,但破坏性

5、最大。,系统故障称为软故障 介质故障称为硬故障,4计算机病毒 人为的故障或破坏,是一些恶作剧者研制的一种计算机程序。,13,两个关键问题: 1 如何建立冗余数据 2 如何利用这些冗余数据实施数据库恢复,6.2 数据库恢复技术,冗余,14,1、数据转储 转储:定期将DB复制到其它外存保存(副本) 1、转储类型 静态转储:在系统空闲的时候进行,转储期间不允许对数据库进行操作。 优点:简单、保证副本和数据库数据的一致性。 缺点:需等待。 动态转储:转储期间允许对数据库进行操作。 优点:效率高。 缺点:不能保证副本和数据库数据的一致性。,建立冗余常用技术,15,2、转储方式 海量转储:每次转储数据库中

6、的全部数据 增量转储:每次转储上一次转储后更新过的数据,建立冗余常用技术,16,3、数据库镜像:自动将数据库中的全部数据或关键数据复制到另外一张盘上。,缺点:降低系统效率,建立冗余常用技术,17,2、日志文件 1、内容 事务标识(标明是哪个事务) 操作类型及对象(插入、删除、修改,记录内部标识) 更新前后的值 2、作用: 用于数据库恢复 3、登记要求 按时间次序 先写日志文件,后写数据库。,建立冗余常用技术,18,1、事务故障的恢复 恢复策略:反向扫描日志文件,将日志中更新前的数据写回到数据库中,直至事务的开始标志。,三、数据库恢复策略,19,2、系统故障的恢复 恢复策略:撤销故障发生时未完成

7、的事务,重做已完成的事务。 方法:扫描日志文件;找出故障发生前提交的事务,让该事务重做(REDO);找出故障发生前未提交的事务,让其撤销(UNDO)。,3、介质故障的恢复 恢复策略:利用数据库副本和日志文件副本进行恢复。(需要DBA介入),20,6.3 并发控制,一、并发操作引起的问题,丢失修改,不可重复读,读“脏”数据,21,例:银行中,C账户上原有存款500元,现有两位顾客同时给此账户存款,分别运行下面两个事务: T1:READ(C), C=C+100,WRITE(C); T2:READ(C), C=C+200,WRITE(C); 运行过程可能如下: (1)先执行事务T1,然后执行事务T2

8、 (2)先执行事务T2,然后执行事务T1 (3)事务T1和事务T2并发执行,22,23,丢失修改,24,不可重复读,25,读“脏”数据,26,封锁 *排它锁(写锁,简称X锁) *共享锁(读锁,简称S锁) 封锁协议,二、基于封锁的并发控制技术,27,1、封锁: 就是事务T在对数据进行操作之前,先向系统申请对其进行加锁,此时不允许其它事务更新该数据,直到事务T释放该数据上的锁。 2、封锁的类型 排它锁(又称写锁,简称X锁) 若事务T对数据对象A加上X锁,则其它事务不能在A上加任何类型的锁,此时,只允许事务T读取和修改A,直到T释放A上的锁。 共享锁(又称读锁,简称S锁) 若事务T对数据对象A加上S

9、锁,则其它事务也可在A上加S锁,但不能加X锁,事务T和其它事务只能读取A,但不能修改A。,28,3、封锁协议 1)一级封锁协议 事务T在修改数据A之前必须先对其加X锁,直到事务结束才释放。 一级封锁协议可防止丢失修改,并可保证事务T是可恢复的,但不能保证可重复读和不读“脏”数据。,29,一级封锁协议例,Xlock A,Read (A) A=10,A=A-5,Write(A),Commit,Unlock A,Xlock A,Read (A) A=5,A=A-5,Write(A),Commit,Unlock A,等待,等待,等待,等待,获得 Xlock A,事务T1,事务T2,没有丢失修改,REA

10、D(C,D),M=C+D,READ(C,D),M=C+D,READ(C,D),C=C+10,D=D+10,事务T1,事务T2,不可重复读,Write (D),Write (C),Xlock C,Xlock D,Unlock C,Unlock D,30,1级封锁协议,读“脏”数据,31,2)二级封锁协议 一级封锁协议加上事务T在读取数据A之前必须对其加S锁,读完后即可释放S锁。 二级封锁协议可防止修改丢失,还可防止读“脏”数据,但不能保证可重复读。,32,二级封锁协议例,READ(C,D),M=C+D,READ(C,D),C=C+10,D=D+10,事务T1,事务T2,防止读“脏”数据,Writ

11、e (D),Write (C),Xlock C,Xlock D,Unlock C,Unlock D,RollBack,Slock C,Slock D,等待,等待,等待,获得Slock C,获得Slock D,Unlock C,Unlock D,READ(C,D),M=C+D,READ(C,D),C=C+10,D=D+10,事务T1,事务T2,不可重复读,Write (D),Write (C),Xlock C,Xlock D,Unlock C,Unlock D,Slock C,Slock D,Unlock C,Unlock D,等待,获得Xlock C,获得Xlock D,READ(C,D),M

12、=C+D,Slock C,Slock D,Unlock C,Unlock D,等待,获得Slock C,获得Slock D,Commit,Commit,Commit,33,3)三级封锁协议 一级封锁协议加上事务T在读取数据A之前必须对其加S锁,直到事务结束才释放。 三级封锁协议可防止修改丢失,还可防止读“脏”数据和保证可重复读。,34,三级封锁协议例,READ(C,D),M=C+D,READ(C,D),C=C+10,D=D+10,事务T1,事务T2,可重复读,Write (D),Write (C),Xlock C,Xlock D,Unlock C,Unlock D,READ(C,D),M=C+

13、D,Slock C,Slock D,Unlock C,Unlock D,等待,获得Xlock C,获得Xlock D,等待,Commit,Commit,35,不同级别的封锁协议,36,4、活锁:事务T1,T2申请数据对象A,T1先给A加锁,T1释放A上的锁后,事务T3又给A加锁,T2等待,这样,A始终被其他事务封锁,事务T2可能长时间得不到A,这种情况称为活锁。 避免活锁的方法: 采用先来先服务的原则。,37,5、死锁 事务T1已经封锁A,而又想申请封锁B,而此时事务T2已经封锁B,而又想申请封锁A,这样,T1等待T2释放B,而T2等待T1释放A,使得T1、T2均无法继续执行下去,这种情况称为

14、死锁。,LOCK B ,LOCK B ,LOCK A ,LOCK A ,38,6、解决死锁的方法 预防死锁 * 一次封锁法:要求每个事务必须一次将所有要使用的数据全部封锁,否则,不能执行。 缺点:降低了系统的并发度。 * 顺序封锁法:预先对数据对象规定一个封锁次序,所有事务都按这个次序实行封锁。 缺点:排列封锁次序困难。,39,判断并解除死锁 * 超时法:事务的等待超过了规定的时限 * 等待图法:检测等待图中是否有回路存在。,40,1、事务的表示方法: Ri(X)表示事务Ti的读X操作; Wi(X)表示事务Ti的写X操作。 例:事务T1(Read(B);A=B+1;write(A), 事务T2

15、(Read(A);B=A+1;write(B) 可以表示成: T1:R1(B)W1(A) T2:R2(A)W2(B),三、调度的可串行性,41,例: 事务 T1:R1(X)R1(Y)W1(Y) 的执行顺序可表示为,符号表示先于(),即R1(X)先于W1(Y)执行, R1(Y)先于W1(Y)执行,而R1(X)和R1(Y)的先后次序无关紧要。,42,2、冲突操作 定义:如果两个操作来自不同的事务,它们对同一数据单位进行操作,并且其中至少有一个是写操作,则称这两个操作是相互冲突的或冲突操作。 例:事务T0:W0(X)W0(Y)W0(Z) 事务T1:R1(X)R1(Z)W1(X) 则在这两个事务中有冲

16、突操作:,R1(X)与W0(X) W1(X)与W0(X) R1(Z)与W0(Z),对于冲突操作不能同时执行,哪个先执行,哪个后执行由调度决定。,43,3、调度 设=T1,T2, T n是一事务集, 的一个调度S是一拟序集( ,s) 其中: 1) 说明S执行的操作正是T1, T2, T n 的操作。 2) s 说明调度S遵守每个事务的操作的 内部执行次序 3) 每对冲突操作的执行次序由S决定。,44,例如:考虑下列两个事务T0, T1,T0, T1的拟序集表示为: T0=(W0(X),W0(Y),W0(Z),) T1 =(R1(X),R1(Z),W1(X),R1(X) W1(X), R1(Z) W1(X),45,S1=(W0(X),W0(Y) ,W0(Z) ,R1(X),R1(Z) ,W1(X) ,W0(X) R1(X), W0(Z) R1(Z), R1(X) R1(Z) ,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 工作范文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号