第8章数据库保护_第1页
第8章数据库保护_第2页
第8章数据库保护_第3页
第8章数据库保护_第4页
第8章数据库保护_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

1、数据库原理与应用高等院校计算机教材系列第8章 数据库保护 8.1 事务的基本概念 8.1.1 事务 8.1.2 事务的特征 8.1.3 SQL事务处理模型8.1.1 事务 事务是用户定义的数据操作系列,这些操作作为一个完整的工作单元,一个事务内的所有语句被作为一个整体,要么全部执行,要么全部不执行。 例如:对于一个转帐活动:A帐户转帐给B帐户n元钱,这个活动包含两个动作: 第一个动作:A帐户 n 第二个动作:B帐户 n8.2.2 事务的特征 原子性(Atomicity) :指事务是数据库的逻辑工作单位,事务中的操作要么都做,要么都不做。 一致性(Consistency) :指事务执行的结果必须

2、是使数据库从一个一致性状态变到另一个一致性状态。隔离性(Isolation) :指数据库中一个事务的执行不能被其它事务干扰。持久性(Durability) :也称为永久性指事务一旦提交,则其对数据库中数据的改变就是永久的。 保证事务的ACID特性是事务处理的重要任务。事务的ACID特性可能遭到破坏的因素有: 多个事务并行运行时,不同事务的操作有交叉情况; 事务在运行过程中被强迫停止。 8.2.3 SQL事务处理模型 隐式事务:隐式事务是每一条数据操作语句都自动地成为一个事务。 显式事务:有显式的开始和结束标记的事务。 ISO事务处理模型 T-SQL事务处理模型ISO事务处理模型 明尾暗头事务的

3、开头是隐含的,事务的结束有明确标记 A事务结束符COMMIT:事务成功结束符,ROLLBACK:事务失败结束符, B事务提交方式自动提交:每条SQL语句为一个事务指定位置提交:在事务结束符或程序正常结束处提交 C事务起始/终止位置程序的首条SQL语句或事务结束符后的语句。在程序正常结束处或COMMIT语句处成功终止;在程序出错处或或ROLLBACK处失败终止。示例UPDATE 支付表 SET 帐户总额 帐户总额 nWHERE 帐户名 AUPDATE 支付表 SET 帐户总额 帐户总额 nWHERE 帐户名 BCOMMIT T-SQL事务处理模型 每个事务都有显式的开始和结束标记。 事务的开始标

4、记是:BEGIN TRANSACTION | TRAN 事务的结束标记为:COMMIT TRANSACTIONTRANROLLBACK TRANSACTIONTRAN示例 例如前边的转帐例子用Transact-SQL事务处理模型描述为:BEGIN TRANSACTION UPDATE 支付表 SET 帐户总额 帐户总额 nWHERE 帐户名 AUPDATE 支付表 SET 帐户总额 帐户总额 nWHERE 帐户名 BCOMMIT 8.2并发控制 8.2.1 并发控制概述 8.2.2并发控制措施 8.2.3封锁协议 8.2.4 死锁 8.2.5 并发调度的可串行性 8.2.6 两段锁协议 8.2

5、.1 并发控制概述 数据库中的数据是一个共享的资源,因此会有很多用户同时使用数据库中的数据, 在多用户系统中,可能同时运行着多个事务,而事务的运行需要时间,并且事务中的操作是在一定的数据上进行的。 当系统中同时有多个事务在运行时,特别是当这些事务是对同一段数据进行操作时,彼此之间就有可能产生相互干扰的情况。 并发事务的相互干扰示例A、B两个订票点恰巧同时办理同一架航班的飞机订票业务。设其操作过程及顺序如下: A订票点(事务A)读出航班目前的机票余额数,假设为10张;B订票点(事务B)读出航班目前的机票余额数,也为为10张;A订票点订出6张机票,修改机票余额为106 4,并将4写回到数据库中;B

6、订票点订出5张机票,修改机票余额为105 5,并将5写回到数据库中;丢失数据修改 读“脏”数据 不可重复读 产生“幽灵”数据 属于不可重复读的范畴。 指当事务T1按一定条件从数据库中读取了某些数据记录后,事务T2删除了其中的部分记录,或者在其中添加了部分记录,则当T1再次按相同条件读取数据时,发现其中莫名其妙地少了(对删除)或多了(对插入)一些记录。 这样的数据对T1来说就是“幽灵”数据或称“幻影”数据。 8.2.2 并发控制措施 控制目标:事务运行过程中尽可能隔离事务外操作对本事务数据环境的影响。 在数据库环境下,并发控制的主要方式是封锁机制,即加锁(Locking),加锁是一种并行控制技术

7、,是用来调整对共享目标,如DB中共享的记录并行存取的技术。基本的封锁类型 共享锁共享锁:指对于读操作(检索)来说,可以多个事务同时获得共享锁,但阻止其它事务对已获得共享锁的数据进行排它封锁。 排它锁排它锁:一旦一事务获得了对某一数据的排它锁,则任何其它事务再不能对该数据进行排它封锁,其它事务只能进入等待状态,直到第一个事务撤销了对该数据的封锁。排它锁和共享锁的控制方式 T2T1XS无锁XNo NoYesSNoYesYes-YesYesYes8.2.3 封锁协议 在运用X锁和S锁对数据对象进行加锁时,还需要约定一些规则,如何时申请X锁或S锁、持锁时间、何时释放锁等。 称这些规则为封锁协议或加锁协

8、议(Locking Protocel)。 对封锁方式规定不同的规则,就形成了各种不同级别的封锁协议。 不同级别的封锁协议达到的系统一致性级别不同。一级封锁协议 对事务T要修改的数据加X锁,直到事务结束(包括正常结束和非正常结束)时才释放。 一级封锁协议可以防止丢失修改,并保证事务T是可恢复的 但不能保证可重复读和不读“脏”数据。一级封锁协议示例二级封锁协议 一级封锁协议加上对事务T对要读取的数据加S锁,读完后即释放S锁。 除了可以防止丢失修改外,还可以防止读“脏”数据。 但不能保证可重复读数据。 二级封锁协议示例三级封锁协议 一级封锁协议加上事务T对要读取的数据加S锁,并直到事务结束才释放。

9、除了可以防止丢失修改和不读“脏”数据之外,还进一步防止了不可重复读。 三级封锁协议示例8.2.4 死锁 两个事务相互等待对方先释放资源,则会造成死锁。预防死锁的方法 一次封锁法 一次封锁法是每个事务一次将所有要使用的数据全部加锁。 顺序封锁法 顺序封锁法是预先对数据对象规定一个封锁顺序,所有事务都按这个顺序封锁。 8.2.5 并发调度的可串行性 多个事务的并发执行是正确的,当且仅当其结果与按某一顺序的串行执行的结果相同,则我们称这种调度为可串行化的调度。 可串行性是并发事务正确性的准则,按这个准则,一个给定的并发调度,当且仅当它是可串行化的时,才认为是正确的调度。 8.2.6 两段锁协议 两段

10、锁协议是实现可串行化调度的充分条件。 可以将每个事务分成两个时期:申请封锁期和释放封锁期,申请期申请要进行的封锁,释放期释放所占有的封锁。 在申请期不允许释放任何锁,在释放期不允许申请任何锁,这就是两段式封锁。8.3 数数据库备份与库备份与恢复复 8.3.1 数据库故障的种类 8.3.2 数据库备份 8.3.3 数据库恢复 8.3.1 数据库故障的种类 事务内部的故障事务内部的故障 事务故障意味着事务没有达到预期的终点(COMMIT或ROLLBACK),因此,数据库可能处于不正确的状态。 系统故障系统故障 指造成系统停止运转、系统要重启的故障。例如,硬件错误(CPU故障)、操作系统故障、突然停电等。 其它故障其它故障介质故障或由计算机病毒引起的故障或破坏。 8.3.2 数据库备份 指定期或不定期地对数据库数据进行复制。 可以复制到本地机器

温馨提示

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

评论

0/150

提交评论