数据库原理及应用 教学课件 ppt 作者 范剑波 1_ 第7章 数据库保护

上传人:E**** 文档编号:89409863 上传时间:2019-05-24 格式:PPT 页数:53 大小:294.50KB
返回 下载 相关 举报
数据库原理及应用 教学课件 ppt 作者  范剑波 1_ 第7章 数据库保护_第1页
第1页 / 共53页
数据库原理及应用 教学课件 ppt 作者  范剑波 1_ 第7章 数据库保护_第2页
第2页 / 共53页
数据库原理及应用 教学课件 ppt 作者  范剑波 1_ 第7章 数据库保护_第3页
第3页 / 共53页
数据库原理及应用 教学课件 ppt 作者  范剑波 1_ 第7章 数据库保护_第4页
第4页 / 共53页
数据库原理及应用 教学课件 ppt 作者  范剑波 1_ 第7章 数据库保护_第5页
第5页 / 共53页
点击查看更多>>
资源描述

《数据库原理及应用 教学课件 ppt 作者 范剑波 1_ 第7章 数据库保护》由会员分享,可在线阅读,更多相关《数据库原理及应用 教学课件 ppt 作者 范剑波 1_ 第7章 数据库保护(53页珍藏版)》请在金锄头文库上搜索。

1、第7章数据库保护 Chapter 7 Protection of Relation Database,本章重点 本章要求了解数据库保护的四种措施:数据库的恢复、并发控制、安全性和完整性,要求重点领会这些措施的基本概念、应用方法和常用技术。,7.1 数据库的恢复 7.1.1 事务的概念和性质 本节介绍数据库恢复这方面内容,为此先给出事务处 理的概念。 1事务的概念 所谓事务(TRANSACTION)是一个操作序列,这些操作 要么都做,要么都不做,它是一个不可分割的工作单 位。 下面通过例子来进一步说明事务的概念。 例1 设银行数据库有两个用户帐目甲和乙,现要把笔 金额 Amount从帐户甲转给另

2、一个帐户乙,两帐户间资金 转换的事务可处理如下:,BEGIN TRANSACTION 读帐户甲的余额Temp TempTemp-Amount; 写回Temp; IF(Temp0) 打印 资金不足,不能转帐!; ROLLBACR; ELSE 读帐户乙的余额 Temp1; Temp1Iemp1+Amount; 写回 Temp1; COMMIT; END TRANSACTION,这个例子可以说明:事务是一个完整的工作单位,它所包括的一组更新操作要么全部完成,要么全部不做,否则就会使数据库处于不一致状态。 例如,只把账户甲的余额减少而没有把帐户乙的余额增加,这样就造成了数据库的不一致性。 事务和程序是

3、两个概念一般地讲,程序可包括多个事务。由于事务是并发控制的基本单位,所以下面讨论均以事务为对象。 2事务的性质 事务具有四个特性: 原子性(Atomicity) 一致性(Consistency) 隔离性(1solation) 持续性(Durability) 这个四个特性也简称为ACID特性。,(1)原子性 事务是数据库的逻辑工作单位,事务中包括的诸操作要么都做,要么都不做。 (2)一致性 事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。 (3)隔离性 一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对其他并发事务是隔离的,并发执行的各个事务之间不能互相干扰。

4、 (4)持续性 持续性也称永久性(Permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其执行结果有任何影响。,3事务控制语句 事务通常以BEGIN TRANSACTION开始,以COMMIT或ROLLBACK操作结束。COMMIT表示提交事务中所有的操作,事务正常结束。ROLLBACK表示撤销已作的所有操作,滚回到事务开始时的状态。 这里的操作指对数据库的更新操作,下面介绍四个事务控制语句。 (1)开始一个事务 语句格式:BEGIN TRANSACTION 它的作用是标识一个用户定义的事务的开始。 (2)提交一个事务 语句格式:CO

5、MMIT TRANSACTION 它的作用是结束一个用户定义的事务,保证对数据的修改已经成功地写入数据库。,(3)回滚一个事务 语句格式: ROLLBACK TRANSACTION 它的作用是回滚一个事务到事务的开始处或一个保存点。 (4)设置保存点 语句格式: SAVE TRANSACTION 它的作用是在事务中设置一个保存点,它可以使一个事务内的部分操作回滚。 例2 使用事务控制语句的例子。 Use teaching GO DECLARE err int BEGIN TRANSACTION,UPDATE student SET sname=李四 WHERE sno=9912303 SET

6、err=ERROR IF err!=0 BEGIN ROLLBACK TRANSACTION END SAVE TRANSACTION namechanged INSERT INTO student (sno, sname, dept, tel) VALUES(9912311,张三,计算机系,87081818) SET err=ERROR IF err!=0 BEGIN ROLLBACK TRANSACTION END COMMIT TRANSACTION RETURN 请读者仔细阅读上述程序,正确理解其含义。,7.1.2 故障的种类和恢复的基本原则 1数据库系统中故障发生的种类 数据库系统中

7、常见的故障很多,这里我们仅考虑造 成数据库中数据损坏的故障,列举如下: (1)事务故障 事务故障通常分为两种:非预期的事务故障; 可以预期的事务故障。 (2)系统故障 在硬件故障和软件(DBMS、OS或应用程序)错误的影 响下,虽引起内存信息丢失,但未破坏外存中的数据。 (3)介质故障 介质故障通常被称作硬故障,也称为磁盘故障 。 (4)计算机病毒 计算机病毒是一种人为的故障和破坏,是一些恶作 剧者研制的一中计算机程序。,2数据库恢复的基本原则 总结各类故障可以发现,对数据库的影响只有二种 可能: 一是数据库本身被破坏; 二是数据库本身没有破坏,但数据可能不正确。 数据库系统中故障恢复的基本原

8、则就是冗余,也就 是事先进行数据备份。作为DBMS,应能把数据库从被破 坏、不正确的状态恢复到最近个正确的状态,DBMS的 这种能力称为可恢复性。,7.1.3 日志文件优先原则 写一个修改到数据库中和写一个表示这个修改的登 记记录到“日志”文件中是两个不同的操作。有可能在两 个操作之间发生故障,即第一个操作完成之后,第二个 操作还未来得及做,故障就发生了。这时,如果先写了 数据库修改,而在运行记录中没有登记下这个修改,则 以后就无法恢复这个修改,那么以后也就无法撤消这个 修改。因此,为了安全起见,运行记录应该先写下来, 这就是“日志文件优先原则”。 具体一点说,“日志文件优先原则”有两点: 1

9、至少要等相应运行记录已经写入“日志”文件后,才 能允许事务往数据库中写记录。 2直至事务的所有运行记录都已写入运行“日志”文件 后,才能允许事务完成“END TRANSACTION”处理。,7.1.4 SQL Server的恢复技术 1. 定期对整个数据库进行转储 转储是数据库恢复中采用的基本技术。 图7.1 转储和恢复 2建立“日志”文件 一般的恢复策略是:定期地将数据库内容转储到脱 机装置上来形成副本,同时对每次转储后新发生的改变 一一记录。日志文件就是用来记录对数据库每一次更新 活动的文件。这样,即使联机的数据库存储设备中的信 息被破坏,DBA也可以很快地利用这些副本和日志文件使 原状态

10、得以恢复。,3数据库恢复 转储和日志文件是恢复数据库的有效手段。 若数据库已被破坏,则先装入最近一次备份的数据 库,然后利用日志文件执行REDO(重做)操作。具体过 程如下图7.2所示。 图7.2 利用转储和日志文件恢复数据库 若数据库未被破坏,但某些数据不正确,则不必进 行转储。首先,只要通过“日志”文件执行UNDO(撤 消)操作,对每个UNDO事务的更新操作执行反操作。然 后,对这些事务再进行REDO(重做)操作即可。,7.2 数据库的并发控制 7.2.1 并发操作存在的问题 数据库系统最突出的特点之一,就是数据共享性。 当多个用户均要访问数据库时,这些用户程序可以串行 的执行,即一个程序

11、执行结束后,再执行另一个程序。 但这样做有一个缺点:如果一个用户程序涉及大量数据 输入输出交换,则数据库系统的大部分时间将处于休 闲状态。为了充分利用数据库资源,一般在数据库系统 中允许多个用户程序并行地存取数据库,这样就会产生 多个用户程序并发地存取同一数据的情况。若对并发操 作不加控制,就会存取和存储不正确的数据,破坏数据 库的完整性。,在没有采用适当的并发控制的系统中,会在三个基 本方面发生错误。在这三种情况中,虽然一次事务本身 是正确的,但它因另一事务的干扰而不可能得到正确的 结果。 1.丢失修改问题 我们考虑飞机订票系统中的一个活动序列: (1) 甲售票点读出某航班的机票余额Al0;

12、 (2) 乙售票点读出同一航班的机票余额A, 当然也为10; (3) 甲售票点卖出一张机票,修改余额A为9,把A写回数 据库; (4) 乙售票点也卖出一张机票,修改余额 A为9,把A写 回数据库。 结果卖出二张机票而余额只减少l。,2. 不可重复读问题 我们考虑如下操作序列: (1)事务T1读取数据C100; (2)事务T2也读取数据 C100; (3)事务T2做如下操作:C=C2。并把C存入数据库; (4)T1为了对读取值进行核对再读C,则此时C为200。与 第一次读取值不一致。 3. 读“脏数据”问题 事物T1修改某一数据,事物T2读取同一数据,而T1 由于某种原因被撤销,则T2读到的数据

13、就为“脏数 据”。 例如: (l)T1将数据库中C值由100改为200; (2)T2读C值,此时C=200; (3)T1撤销刚才修改C值的操作(ROLLBACK),C恢复原值 1OO; T1事务由于被撤销,因此没有对数据库产生任何影 响,但T2事务却读到C为200,与数据库内容不一致。,7.2.2 并发调度的可串行性 怎样对并发操作进行调度才能防止数据不一致性 呢?或者说,怎样才能保证并发操作得到正确的结果 呢? 假如事务都是串行运行的,一个事务的运行过程完 全不受其他事务影响,只有一个事务结束(提交或者退回 )之后,另一个事务才能开始运行,那么就可以认为所有 事务的运行结果都是正确的。这些事

14、务假如以不同的次 序运行,可能会对数据库造成不同的影响,得到不同的 运行结果。 并发调度的可串行性原则:假如并发操作调度的结 果与按照某种顺序串行执行这些操作的结果相同,就认 为并发操作是正确的。,例3 现在有两名学生同时对学生选课数据库进行操作。 一名学生的事务是选修“数据库原理课”,假设“数据 库原理”课的余额为A,那么该事务包括如下操作序列: 读A;AA-l;写回A(事务1包括的操作序列);另一名学 生的事务是退选“数据库原理课”,该事务包括如下操 作序列:读A;AA+1;写回A(事务2包括的操作序 列) 。 假设A的当前值为20,如果按照先事务1后事务2的顺 序来运行这两个事务,过程如

15、下: 事务1: 读A20; AA-l; 写回A19。 事务2: 读A19; AA+l; 写回A20。 最后,数据库中记录的A值为20。,如果按照先事务2后事务1的顺序来运行这两个事 务,过程如下: 事务2: 读A20; AA+l; 写回A2l。 事务1: 读A21; AA-l; 写回A20。 最后得到的结果也是A20。 根据可串行化的准则,两个事务并发执行的结果只 要和任意一种串行执行的结果相同,就认为是正确的。 在本例中两种串行执行顺序的结果正好相同,因此只要 两个事务并发执行得到的结果也是A20就行了。,对这两个并发事务可以进行多种不同的调度,下面 就是一例: 1读A20;(事务1的操作)

16、 2读A20;(事务2的操作) 3AA-l;(事务1的操作) 4AA+l;(事务2的操作) 5写回A19;(事务l的操作) 6写回A21。(事务2的操作) 问题出现了,数据库中最后的A值为21,而不是正确 的结果20,说明这种调度方式并非可串行化调度。为了 保证对并发操作的调度满足可串行化条件,数据库管理 系统必须提供一定的手段,通常采用的是封锁机制。,7.2.3 并发控制的封锁机制 DBMS并发控制的基本思想是:当一个应用程序对数 据库的某一部分执行修改操作时,对该部分数据实行封 锁,拒绝其它用户对该部分的并发访问要求,直至该事 务执行完毕(正常结束或非正常情况下恢复到事务发生 前的状态)。 由于以一个完整的事务作为封锁的时间单位,这就 确保了任何时候不可能有脏数据被读出,也不可能出现 数据不一致性和丢失修改的问题。当然,这种封锁是以 降低并行度为代

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

当前位置:首页 > 高等教育 > 大学课件

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