第12章数据库安全及维护..ppt_第1页
第12章数据库安全及维护..ppt_第2页
第12章数据库安全及维护..ppt_第3页
第12章数据库安全及维护..ppt_第4页
第12章数据库安全及维护..ppt_第5页
免费预览已结束,剩余47页可下载查看

下载本文档

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

文档简介

1、,数据库安全及维护,引入,事务(Transaction)是并发控制的基本单位。通过事务,SQL Server能将逻辑相关的一组操作绑定在一起,以便服务器保持数据的完整性。,学习目标,事务的概念和ACID特性 并发操作带来数据的不一致性问题 封锁是实现并发控制的一个非常重要的技术,学习完本课程,您应该能够:,知识重、难点分析,重点: 事务的概念和ACID特性 并发操作带来数据的不一致性问题 难点: 封锁是实现并发控制的一个非常重要的技术,一、基本概念 1事务 事务(Transaction)是并发控制的单位,是用户定义的一个操作序列。这些操作要么都做,要么都不做,是一个不可分割的工作单位。 在SQ

2、L语言中,定义事务的语句有: BEGIN TRANSACTION COMMIT ROLLBACK 事务通常是以BEGIN TRANSACTION开始,以COMMIT或ROLLBACK结束。 COMMIT表示提交,即提交事务的所有操作。具体地说就是将事务中所有对数据库的更新写回到磁盘上的物理数据库中去,事务正常结束。 ROLLBACK表示回滚,即在事务运行的过程中发生了某种故障,事务不能继续进行,系统将事务中对数据库的所有以完成的操作全部撤消,滚回到事务开始的状态。,事务,三种事务运行模式,1、自动提交事务(默认事务管理模式) 每条单独的语句都是一个事务。每个语句后都隐含一个COMMIT。 2、

3、显式事务 以BEGIN TRANSACTION显式开始,以COMMIT或ROLLBACK显式结束。 3、隐性事务 在前一个事务完成时,新事务隐式启动,但每个事务仍以COMMIT或ROLLBACK显式结束。,事务的特性(ACID特性),1) 原子性(Atomicity) 事务是数据库的逻辑工作单位,事务中包括的诸操作要么全做,要么全不做。 2) 一致性(Consistency) 事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。 3) 隔离性(Isolation) 一个事务的执行不能被其他事务干扰。 4) 持续性/永久性(Durability) 一个事

4、务一旦提交,它对数据库中数据的改变就应该是永久性的。,1) 原子性(Atomicity),银行转帐:事务T从A帐户过户50¥到B帐户。 T: Read(A); A=A-50; Write(A); Read(B); B=B+50; Write(B); Read(X):从数据库传送数据项X到事务的工作区中。 Write(X):从事务的工作区中将数据项X回写到数据库。这个工作不能只完成一部分,它必须满足原子性。,2) 一致性(Consistency),事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。 当数据库只包含成功事务提交的结果时,就说明数据库处于一致状态。如果数据库系统运行中

5、发生故障,有些事务尚未完成就被迫中断,系统将事务中对数据库的所有已完成的操作全部撤消,滚回到事务开始的一致状态。 如银行转帐,转帐前后两个帐户金额之和应保持不变。,3) 隔离性(Isolation),一个事务的执行不能被其他事务干扰。 事务查看数据时数据所处的状态,要么是另一并发事务修改它以前的状态,要么是另一并发事务修改它以后的状态,事务不会查看中间状态的数据。这称为可串行性。 对任何一对事务T1,T2,在T1看来,T2要么在T1开始之前已经结束,要么在T1完成之后再开始执行。,4) 持续性/永久性(Durability,一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他

6、操作或故障不应该对其执行结果有任何影响。 系统发生故障不能改变事务的持久性。,Use 学生管理数据库 Go Begin Tran Mytran -启动事务 Insert into 学生表 Values(200308003,李四,男,计算机,软件2班,22) -插入一条记录 Delete 学生表 Where 学号=200308003 -删除记录 Rollback Tran Mytran -回滚事务 Commit Tran Go Select * From 学生表,丢失修改(Lost Update),丢失更新:两个事务T1和T2读入同一数据并修改,T2提交的结果破坏了T1提交的结果,导致T1的修改

7、被丢失。,脏读(Dirty Read),事务T1修改某一数据,并将其写回磁盘,事务T2读取同一数据后,T1由于某种原因被撤消,这时T1已修改过的数据恢复原值,T2读到的数据就与数据库中的数据不一致,则T2读到的数据就为“脏”数据。,不可重复读,事务T1读取某一数据后,事务T2对其做了修改,当事务T1再次读该数据时,得到与前一次不同的值。 事务T1按一定条件从数据库中读取了某些数据记录后,事务T2删除了其中部分记录,当事务T1再次按相同条件读取数据时,发现某些记录神秘地消失了。 事务T1按一定条件从数据库中读取了某些数据记录后,事务T2插入了一些记录,当事务T1再次按相同条件读取数据时,发现多了

8、一些记录。 后两种不可重复读有时也称为幻影(Phantom Row)现象。,幻像读,当对某行执行插入或删除操作,而该行属于某个事务正在读取的行的范围时,会发生幻像读问题。事务第一次读的行范围显示出其中一行已不复存在于第二次读或后续读中,因为该行已被其它事务删除。同样,由于其它事务的插入操作,事务的第二次或后续读显示有一行已不存在于原始读中。,事务的调度,事务的执行顺序称为一个调度,表示事务的指令在系统中执行的时间顺序。一组事务的调度必须保证: 包含了所有事务的操作指令。 一个事务中指令的顺序必须保持不变。 串行调度: 串行调度中,属于同一事务的指令紧挨在一起。 对有N个事务的事务集,可以有N!

9、个有效调度。 并行调度: 在并行调度中,来自不同事务的指令可以交叉执行。 当并行调度等价于某个串行调度时,则称它是正确的。,串行调度:,并发调度:,并行Vs串行: 并行事务会破坏数据库的一致性。 串行事务效率底。 并行的优点: 1、一个事务由不同的步骤组成,所涉及的系统资源也不同,这些步骤可以并发执行,以提高系统的吞吐量。 2、系统中存在着周期不等的各种事务,串行会导致难于预测的时延。如果各个事务所涉及的是数据库的不同部分,采用并发会减少事务平均响应时间。 核心问题: 在保证一致性的前提下,最大限度地提高并发度。,调度的简化,事务并发执行时,只有访问相同数据项的基本操作read和write才会

10、在事务间产生影响。,调度的可串行化,调度的目的就是用于确定那些可以保证数据库一致性的所有事务的全部指令的执行序列!如果一个并发调度的执行效果与一个包含相同事务的串行调度的执行效果是相同的,我们就说它们是等价的。事务的串行执行可以保证数据库的一致性,这时不言而喻的。因此,与之等价的并发调度也可以保证数据库的一致性。,指令的可交换性,1、read-read指令(不冲突 ),指令的可交换性,2、read-write指令(冲突 ),指令的可交换性,3、write-read指令(冲突 ),指令的可交换性,4、write-write指令(冲突 ),调度的可恢复性,1、可恢复调度 事务T7读取了事务T6所写

11、的数据A,如果事务T6发生故障而回滚,就有可能引起T7的回滚,因此事务T6必须在T7提交之前进行提交,才能保证调度中事务是可恢复的。,2、无级联调度 为了避免调度中事务的级联回滚,对于每对事务Ti和Tj,如果Tj读取了由Ti所写的数据项,则Ti必须在Tj读取之前提交。我们把这样的调度称为无级联调度。,并发控制: 就是要用正确的方式调度并发操作,避免造成数据的不一致性,使一个用户事务的执行不受其它事务的干扰。另一方面,对数据库的应用有时允许某些不一致性。 并发控制的主要方法是采用封锁机制(Locking)。,并发控制,封锁:事务对数据库操作之前,先对数据加锁以便获得这个数据对象的一定控制,使得其

12、他事务不能更新此数据,直到该事务解锁为止。 1、封锁的类型: 共享锁/S锁,也称读锁(RLOCK):若事务T对数据对象A加上S锁,则事务T可以读取A但不能修改A,其他事务只能对A加S锁,而不能加X锁,直到T释放A上的S锁。保证了其他事务可以读A,但在T释放A上的锁之前不能修改A。 排他锁/X锁,也称写锁(WLOCK):若事务T对数据对象A加上X锁,则只允许T读取和修改A,其他任何事务都不能再对A加任何类型的锁,直到T释放A上的锁。保证了其他事务在T释放A上的锁之前不能再读取和修改A。,封锁,2、封锁类型的控制方式 封锁类型决定控制方式,用相容矩阵表示控制方式。,2、 封锁粒度 封锁粒度越大,系

13、统中能够被封锁的对象就越少,并发度就越小,但同时系统开销也越小。,3、 封锁协议 对何时申请X锁或S锁、持锁时间、何时释放等规定一些规则,称为封锁协议。 1) 保证数据一致性的封锁协议三级封锁协议 (1) 一级封锁协议:事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放。-防止丢失修改。 (2) 二级封锁协议:一级封锁协议加上事务T在读取数据R之前必须先对其加S锁,读完后即可释放S锁。-防止丢失修改、防止读“脏”数据。 (3) 三级封锁协议:一级封锁协议加上事务T在读取数据R之前必须先对其加S锁,直到事务结束才释放。-防止丢失修改、防止读“脏”数据、防止了不可重复读。,2) 保证并行调

14、度可串行性的封锁协议两段锁协议 两段锁(two-phase lock, 2PL)协议: 1)对任何数据进行读、写操作之前,事务首先要获得对该数据的封锁; 2)在释放一个封锁之后,事务不再获得任何其他封锁。,3、用封锁机制解决购买火车票问题:,活锁与死锁,1、 活锁 如果事务T1封锁了数据R,事务T2又请求封锁R,于是T2等待。事务T3也请求封锁R,当T1释放了R上的封锁之后系统首先批准了T3的请求,T2仍然等待。然后事务T4又请求封锁R,当T3释放了R上的封锁之后系统又批准了T4的请求T2有可能永远等待,这就是活锁的情形。 避免活锁的简单方法是采用先来先服务的策略。,活锁与死锁,2、 死锁 如

15、果事务T1封锁了数据R1,事务T2封锁了数据R2,然后T1又请求封锁R2,因为T2已封锁了R2,于是T1等待T2释放R2上的锁。接着T2又申请封锁R1,因为T1已封锁了R1,T2也只能等待T1释放R1上的锁。这样就出现了T1在等待T2,而T2又在等待T1的局面,T1和T2两个事务永远不能结束,形成死锁。,死锁的预防 一次封锁法: 每个事务必须一次将所有要使用的数据全部加锁,否则就不能继续执行。 顺序封锁法: 预先对数据对象规定一个封锁顺序,所有事务都按照这个顺序实行封锁。,2) 死锁的诊断 超时法: 如果一个事务的等待时间超过了规定的时限,就认为发生了死锁。 等待图法: 事务等待图是一个有向图

16、G = ( T, U)。T为结点的集合,每个结点表示正运行的事务;U为边的集合,每条边表示事务等待的情况。若T1等待T2,则T1、T2之间划一条有向边,从T1指向T2。事务等待图动态地反映了所有事务的等待情况。并发控制子系统周期性地检测事务等待图,如果发现图中存在回路,则表示系统中出现了死锁。,3) 死锁的解除 通常采用的方法是选择一个处理死锁代价最小的事务,将其撤消,释放此事务持有的所有的锁,使其它事务得以继续运行下去。当然,对撤消的事务所执行的数据修改操作必须加以恢复。 死锁解决方法: 将所有数据一次性加锁降低了并发度。 预先规定一个封锁顺序。 诊断法:检测是否有死锁发生,如有则设法解除。

17、,故障的种类 1事务内部的故障 事务内部的故障有的是可以通过事务程序本身发现的,有的是非预期的,不能由事务程序处理的。 示例:(通过事务程序本身发现的)银行转帐事务将一笔金额从一个帐户甲转给另一个帐户乙。,数据恢复,BEGIN TRANSACTION 读帐户甲的余额BALANCE1; BALANCE1 = BALANCE1-AMOUNT; (AMOUNT为转帐金额) IF (BALANCE10) THEN 打印金额不足,不能转帐; ROLLBACK;(撤消该事务) ELSE 写回BALANCE1; 读帐户乙的余额BALANCE2; BALANCE2 = BALANCE2+AMOUNT; 写回B

18、ALANCE1; COMMIT; ,事务撤消(UNDO),事务内部更多的故障是非预期的,是不能由应用程序处理的。系统就要强行回滚此事务,即撤消该事务已经作出的任何对数据库的修改,使得该事务好象根本没有启动一样。 2系统范围内的故障撤消与重做(REDO) 3介质故障 4计算机病毒 数据恢复的基本原理十分简单,采用的主要技术手段是冗余(数据转储、登录日志文件)。,2、转储和恢复 1什么是转储和恢复 转储:是数据库恢复中采用的基本技术。所谓转储即DBA(数据库管理员)定期地将整个数据库复制到磁带或另一个磁盘上保存起来的过程。这些备用的数据文本称为后备副本或后援副本。 恢复:当数据库遭到破坏后就可以利用后备副本把数据库恢复,这时,数据库只能恢复到转储时的状态,从那以后的所有更新事务必须重新运行才能恢复到故障时的状态。,2转储的分类 静态转储:指转储期间不允许(或不存在)对数据库进行任何存取、修改活动。 动态转储:指转储期间允许对数据库进行存取或修改。即转储和用户事务可以并发执行。动态转储可克服静态转储的缺点,但是,转储结束时后援副本上的数据并不能保证正确有效。为此,必须把转储期间各事务对数据库的修改活动登记下来,建立日志文件(log file)。这样,后援副本加上日志文件就能把数据库恢复到某一时刻的正确状态。,海量转储:海量转储是指每次转储全部数据库。

温馨提示

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

评论

0/150

提交评论