数据库保护

上传人:小** 文档编号:57365057 上传时间:2018-10-21 格式:PPT 页数:37 大小:955KB
返回 下载 相关 举报
数据库保护_第1页
第1页 / 共37页
数据库保护_第2页
第2页 / 共37页
数据库保护_第3页
第3页 / 共37页
数据库保护_第4页
第4页 / 共37页
数据库保护_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《数据库保护》由会员分享,可在线阅读,更多相关《数据库保护(37页珍藏版)》请在金锄头文库上搜索。

1、第8章 数据库保护,8.1 事务的基本概念 8.2 并发控制8.3 介绍数据库备份与恢复的概念,8.1 事务的基本概念,8.1.1 事务8.1.2 事务的特征8.1.3 SQL事务处理模型,8.1.1 事务,事务是用户定义的数据操作系列,这些操作做为一个完整的工作单元,一个事务内的所有语句被作为一个整体,要么全部执行,要么全部不执行。 例如:对于一个转帐活动:A帐户转帐给B帐户n元钱,这个活动包含两个动作: 第一个动作:A帐户 n 第二个动作:B帐户 n见书 P110,8.2.2 事务的特征 (ACID),原子性(Atomicity) :指事务是数据库的逻辑工作单位,事务中的操作要么都做,要么

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

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

4、付表 SET 帐户总额 帐户总额 nWHERE 帐户名 B COMMIT,T-SQL事务处理模型,每个事务都有显式的开始和结束标记。 事务的开始标记是: BEGIN TRANSACTION | TRAN 事务的结束标记为: COMMIT TRANSACTIONTRAN ROLLBACK TRANSACTIONTRAN,示例,例如前边的转帐例子用Transact-SQL事务处理模型描述为: BEGIN TRANSACTION UPDATE 支付表 SET 帐户总额 帐户总额 nWHERE 帐户名 A UPDATE 支付表 SET 帐户总额 帐户总额 nWHERE 帐户名 B COMMIT,8.2

5、并发控制,8.2.1 并发控制概述 8.2.2 并发控制措施8.2.3 封锁协议8.2.4 死锁8.2.5 并发调度的可串行性8.2.6 两段锁协议,8.2.1 并发控制概述,1 数据库中的数据是一个共享的资源,因此会有很多用户同时使用数据库中的数据。 2 在多用户系统中,可能同时运行着多个事务,而事务的运行需要时间,并且事务中的操作是在一定的数据上进行的。 当系统中同时有多个事务在运行时,特别是当这些事务是对同一段数据进行操作时,彼此之间就有可能产生相互干扰的情况。串行:一个事务执行完,在开始另一个事物;并发:系统中同时接受多个事务时,并且这些事务在时间上可重叠执行交叉:在同一时间只能有一个

6、事务占CPU,各事务交叉使用CPU,并发事务的相互干扰示例,A、B两个订票点恰巧同时办理同一架航班的飞机订票业务。设其操作过程及顺序如下: A订票点(事务A)读出航班目前的机票余额数,假设为16张; B订票点(事务B)读出航班目前的机票余额数,也为为16张; A订票点订出1张机票,修改机票余额为161 15,并将15写回到数据库中; B订票点订出4张机票,修改机票余额为164 12,并将12写回到数据库中;,并发操作产生的数据不一致,有下面几种情况,1 丢失数据修改 P113,2 读“脏”数据,事务失败 返回,3 不可重复读,4 产生“幽灵”数据,属于不可重复读的范畴。 指当事务T1按一定条件

7、从数据库中读取了某些数据记录后,事务T2删除了其中的部分记录,或者在其中添加了部分记录,则当T1再次按相同条件读取数据时,发现其中莫名其妙地少了(对删除)或多了(对插入)一些记录。这样的数据对T1来说就是“幽灵”数据或称“幻影”数据。,8.2.2 并发控制措施,控制目标:事务运行过程中尽可能隔离事务外操作对本事务数据环境的影响。 在数据库环境下,并发控制的主要方式是封锁机制,即加锁(Locking),加锁是一种并行控制技术,是用来调整对共享目标,如:DB中共享的记录并行存取的技术。,所谓加锁就是事务T在对某个数据操作之前,先向系统发出请求,对其 加锁。加锁后事务T对其要操作的数据具有了一定的控

8、制权,在事务T释放它的锁之前,其他事务不能操作这些数据。,基本的封锁类型,共享锁: (Share Locks,也称S锁或读锁)指对于读操作(检索)来说,可以多个事务同时获得共享锁,但阻止其它事务对已获得共享锁的数据进行排它封锁。若事务T对数据对象A加了S锁,则事务T可以读A,但不能修改A,其它事务只能再对A加S锁,而不能加X锁,直到T释放了A上的S锁。 排它锁: (Exclusive Locks,也称为X锁或写所)一旦一事务获得了对某一数据的排它锁,则任何其它事务再不能对该数据进行排它封锁,其它事务只能进入等待状态,直到第一个事务撤销了对该数据的封锁。若事务T对数据对象A加了X锁,则允许T读取

9、和修改A,但不允许其它事务再对A加任何类型的锁和进行任何操作。,排它锁和共享锁的控制方式,左边一列表示T1已获得的数据对象上的锁的类型,上面一行表示T2对同一数据对象发出加锁请求,8.2.3 封锁协议,在运用X锁和S锁对数据对象进行加锁时,还需要约定一些规则,如:何时申请X锁或S锁、持锁时间、何时释放锁等。称这些规则为封锁协议或加锁协议(Locking Protocel)。 对封锁方式规定不同的规则,就形成了各种不同级别的封锁协议。 不同级别的封锁协议达到的系统一致性级别不同。,一级封锁协议,1 对事务T要修改的数据加X锁,直到事务结束(包括正常结束和非正常结束)时才释放。 2 一级封锁协议可

10、以防止丢失修改,并保证事务T是可恢复的 3 但不能保证可重复读和不读“脏”数据。见书P115,一级封锁协议示例,没有丢失修改,二级封锁协议,1 一级封锁协议加上对事务T对要读取的数据加S锁,读完后即释放S锁。 2 除了可以防止丢失修改外,还可以防止读“脏”数据。 3 但不能保证可重复读数据。,二级封锁协议示例,不读“脏”数据,三级封锁协议,1 一级封锁协议加上事务T对要读取的数据加S锁,并直到事务结束才释放。 2 除了可以防止丢失修改和不读“脏”数据之外,还进一步防止了不可重复读。,三级封锁协议示例,不同级别的封锁协议总结,8.2.4 死锁,两个事务相互等待对方先释放资源,则会造成死锁。,预防

11、死锁的方法,1 一次封锁法 一次封锁法是每个事务一次将所有要使用的数据全部加锁。2 顺序封锁法 顺序封锁法是预先对数据对象规定一个封锁顺序,所有事务都按这个顺序封锁。,8.2.5 并发调度的可串行性,多个事务的并发执行是正确的,当且仅当其结果与按某一顺序的串行执行的结果相同,则我们称这种调度为可串行化的调度。 可串行性是并发事务正确性的准则,按这个准则,一个给定的并发调度,当且仅当它是可串行化的时,才认为是正确的调度。(见P118),8.2.6 两段锁协议,两段锁协议是实现可串行化调度的充分条件。 可以将每个事务分成两个时期:申请封锁期和释放封锁期,申请期申请要进行的封锁,释放期释放所占有的封

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

13、机器上。 备份的介质可以是磁带也可以是磁盘,但通常选用磁带。 是保证系统安全的一项重要措施。 在制定备份策略时,应考虑如下几个方面: 备份的内容 备份频率,8.3.3 数据库恢复,1恢复策略 事务故障的恢复 系统故障的恢复 介质故障的恢复 2恢复方法 利用备份技术 利用事务日志 利用镜像技术,本章介绍了事务、并发控制和数据库的备份和恢复三个概念。事务在数据库中是非常主要的,它是保证数据并发性的重要方面。并发控制是指当同时有多个事务在执行时,为了保证一个事务的执行不受其他事务的干扰所采取的措施。并发控制的主要方法是加锁,根据对数据操作的不同,锁分为共享锁和排他锁两种。为了保证并发执行的事务是正确的,一般要求事务遵守两段锁协议。简介数据库的备份和恢复是保证当数据库出现故障时能够将数据库尽可能的恢复到正确状态的一些概念。,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 经营企划

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