数据库原理及应用第二版第7章 数据库保护_第1页
数据库原理及应用第二版第7章 数据库保护_第2页
数据库原理及应用第二版第7章 数据库保护_第3页
数据库原理及应用第二版第7章 数据库保护_第4页
数据库原理及应用第二版第7章 数据库保护_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

1、 数据库保护包括数据的一致性和并发控制、安全性、备份和恢复等内容。 事务是保证数据一致性的基本手段,事务处理技术包括数据库恢复技术和并发控制技术。1第7章 数据库保护 7.1 事务7.2 并发控制 7.3 数据库备份与恢复 27.1 事务一、事务基本概念 例如:A帐户转帐给B帐户n元钱,这个活动包含两个动作: 第一个动作:A帐户 n 第二个动作:B帐户 n 事务是用户定义的数据操作系列,这些操作作为一个完整的工作单元,一个事务内的所有语句被作为一个整体,要么全部执行,要么全部不执行。3 要让系统知道哪个动作属于一个事务,可通过标记事务的开始与结束来实现。在不同的事务处理模型中,事务的开始标记不

2、完全一样,但事务的结束标记是一样的。事务的结束标记有两种:一种是正常结束,用COMMIT(提交)表示,也就是事务中的操作会保存到数据库中成为永久的操作;另一种是异常结束,用ROLLBACK(回滚)表示也就是事务中的操作被全部撤销,数据库回到事务开始之前的状态。4二、事务的特性原子性(Consistency) 指事务是数据库的逻辑工作单位,事务中的操 作要么都做,要么都不做。一致性(Atomicity) 指事务执行的结果必须是使数据库从一个一致性 状态变到另一个一致性状态。隔离性(Isolation) 指数据库中一个事务的执行不能被其它事务干扰持久性(Durability) 也称永久性(Perm

3、anence),指事务一旦提交, 则其对数据库中数据的改变就是永久的。5三、SQL事务处理模型隐式事务 每一条数据操作语句都自动地成为 一个事务。显式事务 有显式的开始和结束标记的事务61、ISO事务处理模型 明尾暗头,即事务的开始是隐含的,而事务的结束有明确标记。 例如: UPDATE 支付表 SET 帐户总额 帐户总额 nWHERE 帐户名 AUPDATE 支付表 SET 帐户总额 帐户总额 nWHERE 帐户名 BCOMMIT72、Transact-SQL事务处理模型 明头明尾。事务的开始标记是: BEGIN TRANSACTION, 事务的结束标记为: COMMIT TRANSACTI

4、ONTRAN 和 ROLLBACK TRANSACTIONTRAN例如: BEGIN TRANSACTION UPDATE 支付表 SET 帐户总额 帐户总额 nWHERE 帐户名 AUPDATE 支付表 SET 帐户总额 帐户总额 nWHERE 帐户名 B COMMIT87.2并发控制 一个事务完成后,再开始另一个事务,这种执行方式为串行执行;如果DBMS可同时接受多个事务,这些事务在时间上可重叠执行,这种执行方式为并发执行。 在单CPU系统中,同一时间只能有一个事务占据CPU,各个事务交叉使用CPU,这种并发方式称为交叉并发;在多CPU系统中,多个事务可同时占有CPU,这种并发方式称为同时

5、并发。9一、并发控制概述 数据库中的数据是一个共享的资源,因此会有很多用户同时使用数据库中的数据,也就是在多用户系统中,可能同时运行着多个事务,而事务的运行需要时间和一定的数据。那么当系统中同时有多个事务在运行时,特别是当这些事务是对同一段数据进行操作时,彼此之间就有可能产生相互的干扰情况。10并发操作所带来的数据不一致情况有: 丢失修改、不可重复读 读“脏”数据、产生“幽灵”数据1、丢失数据修改 指两个事务T1和T2读入同一数据并进行修改,T2提交的结果破坏了T1提交的结果,导致T1的修改被T2覆盖了。11122、读“脏数据” 指一个事务读取了某个失败事务运行过程中的数据。133、不可重复读

6、 144、产生“幽灵”数据 实际属于不可重复读的范畴。指当事务T1按一定条件从数据库中读取了某些数据记录后,事务T2删除了其中的部分记录,或者在其中添加了部分记录,则当T1再次按相同条件读取数据时,发现其中少了(对删除)或多了(对插入)一些记录。这样的数据对T1来说就是“幽灵”数据或称“幻影”数据。 15二、并发控制措施 并发控制的主要方式是封锁机制,即加锁(Locking)。 加锁就是限制事务内和事务外对数据的操作。 所谓加锁就是事务T在操作某个数据之前,先向系统发出请求,封锁其所要使用的数据。加锁后事务T对要操作的数据具有了一定的控制权,在事务T释放它的锁之前,其他事务不能操作这些数据。1

7、6基本的锁类型有两种:排它锁(也称为X锁)和共享锁(也称S锁)。共享锁:若事务T对数据对象A加了S锁,则事务T可以读A,但不能修改A,其它事务只能再对A加S锁,而不能加X锁,直到T释放了A上的S锁。排它锁:若事务T对数据对象A加了X锁,则允许T读取和修改A,但不允许其它事务再对A加任何类型的锁和进行任何操作。17排它锁和共享锁的相容矩阵 T2 T1XS无锁XNONOYESSNOYESYES无锁YESYESYES18三、封锁协议 对封锁方式规定不同的规则,就形成了各种不同级别的封锁协议。1、一级封锁协议 一级封锁协议是:对事务T要修改的数据加X锁,直到事务结束(包括正常结束和非正常结束)时才释放

8、。 一级封锁协议可以防止丢失修改,但不能保证可重复读和不读“脏”数据。19t1t2t3 t4事务T1时间事务T2(1)对A加X锁 获得(2)读A16(3)要对A加X锁等待(4)修改AA1 A15t6t7t8 t5(5)释放A对X的 锁(6)(7)(8)(9)等待获得A对X的锁读A15修改AA4写回A11释放A对X的锁202、二级封锁协议 二级封锁协议是:一级封锁协议加上事务T对要读取的数据加S锁,读完后即释放S锁。 二级封锁协议除了可以防止丢失修改外,还可以防止读“脏”数据。但在二级封锁协议协议中,由于事务T读完数据即释放S锁,因此,不能保证可重复读数据。21t1t2t3t4事务T1时间事务T

9、2(1)对C加X锁 获得(2)读C50(3)求CC2 写回C100要对C加S锁等待(4)图66t6t7t8t5(5)回滚(6)释放C锁(7)(8)(9)等待等待获得C的S锁读C50释放C的S锁223、三级封锁协议 三级封锁协议是:一级封锁协议加上事务T对要读取的数据加S锁,并直到事务结束才释放。 三级封锁协议除了可以防止丢失修改和不读“脏”数据之外,还进一步防止了不可重复读。 23t1t2t3t4事务T1时间事务T2(1)对A、B分别 加S锁 获得(2)读A50 B100 求AB150(3)等待(4)读A50 B100求AB150图67t6t7t8t5(5)将和值写入(6)释放A锁 释放B锁(

10、7)(8)(9)等待等待获得B的X锁读B100写回B200要对B加X锁等待t9释放对B的X锁24三个封锁协议的主要区别在于什么操作需要申请封锁,以及何时释放锁。封锁协议X锁(对写数据)S锁(对只读数据) 不丢失修改(写) 不读脏数据(读)可重复读(读)一级事务全程加锁 不加 二级事务全程加锁 事务开始加,读完即放 三级事务全程加锁 事务全程加锁 25四、死锁t1t2t3t4事务T1时间事务T2(1)对R1加锁(2)(3)请求对R2加锁 等待请求对R1加锁等待(4) 等待等待等待对R2加锁26解决死锁问题方法:一类是采取一定措施来预防死锁发生一类是允许发生死锁,采用一定手段定期诊断系统中有无死锁

11、,若有则解除之。27预防死锁方法: 一次封锁法:每个事务一次将所有要使用的数据全部加锁。 封锁范围大,降低了系统的并发性顺序封锁法:预先对数据对象规定一个封锁顺序,所有事务都按这个顺序封锁。 难以确定封锁事务及其封锁顺序死锁诊断与解除: 方法与操作系统类似,一般使用超时法或事 务等待图法28五、并发调度的可串行性 直观地说,如果多个事务在某个调度下的执行结果与这些事务在某个串行调度下的执行结果相同,那么这个调度就一定是正确的,因为所有事务的串行调度策略一定是正确的调度策略。 多个事务的并发执行是正确的,当且仅当其结果与按某一顺序的串行执行的结果相同,则我们称这种调度为可串行化的调度。 29例如

12、,假设有两个事务,分别包含如下操作: 事务T1:读B;AB1;写回A; 事务T2:读A;BA1;写回B;假设A、B的初值均为4, 按T1 T2:结果为A5,B6; 按T2 T1:结果为A6,B5。 当并发调度时,如果执行的结果是这两者之一,就都是正确的。 30T1T2T1T2T1T2T1T2B加S锁 B加S锁 B加S锁 B加S锁 YB4 XA4 YB4 YB4 B释放S锁 A释放S锁 A加S锁 B释放S锁 A加X锁 B加X锁 XA4 A加X锁 AY+1 BX+1 B释放S锁 A加S锁 写回A(5) 写回B(4) A释放S锁 AY+1 等待 A释放X锁 B释放X锁 A加X锁 写回A(5) 等待

13、A加S锁 B加S锁 AY+1 等待 XA5 YB5 写回A(5) XA5A释放S锁 B释放S锁 B加X锁 A释放S锁 B加X锁 A加X锁 BX+1 B加X锁 BX+1 AY+1 BX+1 写回B(6) 写回A(6)A释放X锁 写回B(6) B释放X锁 A释放X锁 B释放X锁 B释放X锁 (a) 串行调度 (b) 串行调度(c) 不可串行化调度 (d) 可串行化调度 31六、两段锁协议 两段锁(简称2PL)协议是指所有事务必须分为两个阶段对数据进行加锁和解锁,内容为:在对任何数据进行读、写操作之前,首先要获得对该数据的封锁在释放一个封锁之后,事务不再申请和获得任何其他封锁 两段锁协议是实现可串行

14、化调度的充分条件。 32两段锁的含义:将每个事务分成两个时期:申请封锁期(开始对数据操作之前)和释放封锁期(结束对数据操作之后),申请期申请要进行的封锁,释放期释放所占有的封锁。在申请期不允许释放任何锁,在释放期不允许申请任何锁。若某事务遵守两段锁协议,则其封锁序列为:事务过程开始加锁段分界解锁段LOCK段UNLOCK段明显的分为加锁界所两个段t33 SQL Server系统的并发控制1、SQL Server使用加锁来控制并发问题 锁的类型有: 数据库锁(Database Lock) 表锁(Table Lock) 区域锁(Extent Lock) 对整个区域(8页)加锁 面锁(Page Loc

15、k) 对某个页面的所有记录加锁 关键字锁(Key Lock) 行锁(Row Lock)34 SQL Server系统的并发控制2、SQL Server可以以不同的加锁模式进行加锁 加锁模式有: 共享锁(Shared Lock) 独占锁(Exclusive Lock) 更新锁(Update Lock) 意向锁(Intend Lock) 模式锁(Schema Lock)357.3 数据库备份与恢复一、数据库故障的种类1、事务内部的故障 有些是可以预期到的,这样的故障可通过事务程序发现。2、系统故障 指造成系统停止运转、系统要重启的故障。例如,硬件错误(CPU故障)、操作系统故障、突然停电等。这样的

16、故障会影响正在运行的所有事务,但不破坏数据库。3、其它故障 介质故障或由计算机病毒引起的故障或破坏,我们归为其它故障。36二、数据库备份 数据备份是指定期或不定期地对数据库数据进行复制,可以将数据复制到本地机器上,也可以复制到其它机器上,备份的介质可以是磁带也可以是磁盘。 在制定备份策略时,应考虑如下几个方面:1、备份的内容 应备份数据库中的表(结构)、数据库用户(包括用户和用户操作权)、用户定义的数据库对象和数据库中的全部数据。而且还应该备份数据库日志等内容。372、备份频率 确定备份频率要考虑两个因素: 一是存储介质出现故障或其它故障时,允许丢失的数据量的大小。 二是数据库的事务类型(读多

17、还写多)以及事务发生的频率(经常发生还是不经常发生)。38三、数据库恢复1、恢复策略 (1) 事务故障的恢复 事务故障的恢复是由系统自动完成的,对用户是透明的。 恢复的过程为:反向扫描日志文件并执行相应操作的逆操作。39(2)系统故障的恢复 系统故障的恢复是系统在重启时自动完成的,不需用户干预。 恢复过程为:正向扫描日志文件,找出故障发生前已提交的事务,将其重做;同时找出故障发生时未完成的事务,并撤消这些事务。40(3)介质故障的恢复 恢复的方法是首先重装数据库,使数据库管理系统能正常运行,然后利用介质损坏前对数据库已做的备份或利用镜像设备恢复数据库。412、恢复方法利用备份技术利用事务日志利

18、用镜像技术 所谓镜像就是在不同的设备上同时存有两份数据库,把其中的一个设备称为主设备,把另一个称为镜像设备。主设备与镜像设备互为镜像关系。每当主数据库更新时,DMBS自动把更新后的数据复制到另一个镜像设备上,保证主设备上的数据库与镜像设备上的数据库一致。42应用1应用1应用1应用1 镜像 update复制readreadread应用1应用1应用1应用1update复制readreadread 镜像 (a)备份(b)恢复43SQL Server的恢复技术 1、定期对整个数据库进行转储 转储是数据库恢复中采用的基本技术。 图 转储和恢复442、建立“日志”文件 一般的恢复策略是:定期地将数据库内容转储到脱机装置上来形成副本,同时对每次转储后新发生的改变一一记录。日志文件就是用来记录对数据库每一次更新活动的文件。这样,即使联机的数据库存储设备中的信息被破坏,DBA也可以很快地利用这些副本和日志文件使原状态得以恢复。 453、数据库恢复 转储和日志文件是恢复数据库的有效手段。 若数据库已被破坏,则先装入最近一次备份的数据库,然后利用日志文件执行REDO(重做)操作。具体过程如下图所示。 图 利用转储和日志文件恢复数据库46 若数据库未被破坏,但某些数据不正确,则不必进行

温馨提示

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

评论

0/150

提交评论