第四章数据库管理系统与数据库保护

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

11
练习:
1.DBMS的并发控制子系统,保证了事务( )的 实现。 2.事务的独立执行不会破坏DB的完整性,称为 ( ) 3.DBMS中实现事务持久性的子系统是: ( )
1.隔离性 2.事务的一致性 3.DBMS恢复管理子系统
12
一个事务从开始到成功地完成或者因故中止,中间可能经 历不同的状态。
4.2.1 故障类型
21
4.2.2 恢复的基本原则和实现方法



(1)定期对整个数据库进行复制和转储 冗余技术是数据库恢复的保障 建立数据的冗余 与数据库分别存储 利用冗余数据,重建数据,使其达到一致的状 态 建立整个数据库的冗余 将整个数据库进行备份(冗余的数据库) 需要时将备份数据库恢复(重载)至系统中 解决数据库本身被破坏的场合 只能恢复到数据库备份时的状态
4.1.4 更新事务的执行与恢复
2.更新事务的恢复 (1)从活动状态转入失败状态的恢复 (2)从局部提交状态转入失败状态的恢复。 这种对事务操作的撤销也称为回滚(ROLLBACK)。
17
4.2 数据库的故障与恢复


4.2.1 故障类型 4.2.2 恢复的基本原则和实现方法 4.2.3 SQL中的恢复操作
2.不一致问题
时间 1 2 read(A) 更新事务T1 数据库A的值 50 更新事务T3
3
4 5 A=A-10 write(A)
read(A)
6
40
在第6步时,由于T1已更新了A的值,此时T3使用的A值仍 为50,因此造成了不一致。即读了过时的数据。
31
4.3.1 并发控制的概念
3."脏数据"的读出



(2)建立日志文件 以日志文件的形式,记录事务对数据库的更新操作 日志文件记录了数据库更新的所有日志记录的序列 常见的是以记录为单位的日志文件 利用日志记录,可对数据库做相应的恢复 日志内容 各个事务的开始标志 各个事务的数据更新操作 各个事务的结束(Commit/Rollback)
24
4.2.2 恢复的基本原则和实现方法

(3)恢复 数据库本身(或DBMS)被破坏 重新安装DBMS Reload数据库副本(先前被转储的数据库) 用日志文件执行REDO操作,不丢失对数据库的更新 需要DBA人工处理
25
4.2.2 恢复的基本原则和实现方法




(4)具体恢复 数据库本身未被破坏,但有些数据不可靠 系统重启,扫描日志文件(耗时) 根据日志,做Undo:对更新的操作执行反向操作 系统自动完成 根据运行记录优先原则 1.至少要等到相应运行记录已经写入"日志"文件后,才 能允许事务向数据库写入记录 2.直至事务的所有运行记录都已写入运行“日志”文件 后,才能允许事务完成“END TRANSACTION”处理。
第4章 数据库管理系统 与数据库保护
1
主要内容:



4.1 4.2 4.3 4.4 4.5
事务处理 数据库的故障与恢复 并发控制 数据库的完整性 数据库的安全性
2
4.1 事务处理
保持数据的一致性与稳定性是正确使用数据库 的关键。 4.1.1 事务 4.1.2 事务的性质 4.1.3 事务的状态 4.1.4 更新事务的执行与恢复
6
4.1.2 事务的性质
(2)一致性(Consistency) 独立运行的事务,必须保证数据库的一致状态, 即数据不会因为事务的执行而遭到破坏。 数据库的一致性状态有编写事务的程序员来负责,也可 以有系统测试完整性约束来自动完成。 由DBMS的完整性子系统完成。
7
4.1.2 事务的性质
(3)隔离性(Isolation) 系统必须保证事务不受其它并发执行事务的影 响。 多个并发事务之间不能相互干扰 并发不影响事务的执行。 隔离性通过DBMS并发控制子系统实现。
4
4.1.1 事务
SQL中事务的定义 事务以Begin transaction 开始,以Commit work或 Rollback work结束。 Commit work表示提交,事务正常结束。 Rollback work表示事务非正常开始时状态。
5
4.1.2 事务的性质
事务具有以下4个重要特性,通常称为ACID性质。 (1)原子性(Atomicity) 从终端用户(End-User)的角度看,事务是不可再分的 原子工作。 从系统的角度看,事务是完成某件原子工作的程序的一 次执行。它要么全部成功地完成;要么全部不完成,对数据 库毫无影响。(nothing or all)原则。 事务必须以Commit/Rollback结束。 由DBMS的事务管理子系统完成。
时间 1 2 read(A) 更新事务T1 数据库A的值 50 更新事务T2
3 4
5 6 7 8 write(A) 40 100
read(A) A=A-10
A=A*2 write(A)
1.在第3步避免T2执行read,因为T1已经读了A的值,将要进行更新。 2.应避免T1执行write,因为T2已经在使用A值。 3.应避免T2执行write,因为T1已写了新的A值,事务T2的写操作将把T1 的写操作冲掉。
26
练习:


1、为了能在出故障时做好恢复,应在平时做好两件事情: ( )和( ) 2、后备副本的主要作用是( ) 3、日志文件用于保存( ) 1、备份和日志 2、故障恢复 3、对数据库的更新操作
27
4.3 并发控制
4.3.1 4.3.2 4.3.3 4.3.4 4.3.5 4.3.6 并发控制的概念 可串行化的判断 封锁机制 活锁与死锁 共享型封锁(S封锁) 两段封锁协法
9
4.1.2 事务的性质
对数据库的访问是建立在读和写两个操作的基础上。 read(X):从数据库传送数据项X到事务的工作区。 write(X):从事务的工作区中将数据项X写回数据库。
10
4.1.2 事务的性质
举例: 银行转帐:事务Ti从帐户A过户100¥到帐户B。 T: read(A); A=A-100; write(A); read(B) B=B+100; write(B); read(X):从数据库传送数据项X到事务的工作区。 write(X):从事务的工作区中将数据项X写回数据库。
18
4.2.1 故障类型



在运行数据库系统时,可能回出现各种各样的故障。发 生故障时,可能丢失数据库中的数据。DBMS的恢复管 理子系统采取一系列措施,保证在任何情况下保持事务 的原子性和持久性,确保数据不被破坏。 1.数据库系统中可能发生的故障 (1)事务故障 非预期的事务故障 事务由于某些内部条件无法继续正常执行 如:非法输入、找不到数据、出错等 可预期的事务故障 应用程序可以发现的事务故障 该事务可在以后的某个时间重新执行。 此时数据库中的数据处于非一致状态
8
4.1.2 事务的性质
(4)持久性(Durability) 事务的持久性是指一个事务的成功完成之后,其工作的 结果就会永远保存在数据库中,是永久有效的,即使随后系 统发生故障,也能保持或恢复。 一旦事务成功完成(Commit),它对数据库的更新应该是持久 的 即使在写入磁盘之前,系统发生故障 在下次启动之后,也应该保障数据更新的有效 持久性通过DBMS恢复管理子系统实现。
完整性检查可以分为以下几种: (1)在事务的每个维护操作(插入、删除、修改)执行 后检查完整性,如果这时查出完整性受到破坏,则将该事务 转为失败状态。这样的完整性约束称为立即约束 (Immediate Constraint)。 (2)在整个事务完成之后检查完整性,这种完整性约束 称为延迟约束(Deferred Constraint)。 (3)在事务的某些特定点检查完整性,这样的点称为检 查点。 (4)在一个维护操作请求之后且执行之前检查完整性。 (5)在数据库管理员或审计员发出检查请求时检查完整 16 性。
4.1.3 事务的状态
活动 状态 局部提交 状态 提交 状态
失败 状态
中止 状态
事务状态图
13
4.1.3 事务的状态
(1)活动状态(Active)。 (2)局部提交状态(Partially Committed)。 (3)失败状态(Failed)。 (4)中止状态(Aborted)。 (5)提交状态(Committed)。
22
4.2.2 恢复的基本原则和实现方法



转储可以分为: 静态转储:在存储期间不允许对数据库进行存取、修改。 动态转储:在存储期间允许对数据库进行存取、修改。 转储还可以分为: 海量存储:每次存储全部数据库 增量存储:每次只存储上次转储后更新过的数据。
23
4.2.2 恢复的基本原则和实现方法
4.3.1 并发控制的概念
3
4.1.1 事务
事务(Transaction)是数据库环境中的一个逻辑工作单元。 事务由一系列的操作序列构成的程序执行单元,这些操作要 么全部成功完成,要么全部失败,即不对数据库留下任何影 响。事务是数据库系统工作的基本单位,既是保持数据库完 整性约束或逻辑一致性的单位,又是数据库恢复的单位。事 务的概念相当于操作系统中的进程。 事务可以是一个包含有对数据库进行各种操作的一个完 整的用户程序(长事务),也可以是只包含一个更新操作 (插入、修改、删除)的短事务。
28
4.3.1 并发控制的概念
数据库是一个共享资源,允许多个用户程序并行地存取 数据库。若对这种并发操作不加以控制就会破坏数据的一 致性。 这些用户程序可以一个一个的串行执行,每一时刻只有 一个用户程序运行,执行对数据库的存取。其它程序必须 等到这个用户程序结束后才能对数据库存取。 在多个用户共享系统中,如果多个用户同时对同一数据 进行操作称为并发操作。可能会互ห้องสมุดไป่ตู้干扰,破坏了事务的 隔离性。
14
4.1.4 更新事务的执行与恢复
涉及插入、删除和修改等操作的事务统称更新事务,数据 库管理系统必须确保其原子性和一致性。 1.更新事务的执行 为了确保事务的原子性和一致性,更新事务在活动状态 下对数据库的任何修改都不能直接在磁盘中进行,而只能在 内存缓冲区中进行。
15
4.1.4 更新事务的执行与恢复
时间 1 2 read(A) 更新事务T1 数据库A的值 50 更新事务T4
3
4 5
A=A-10
write(A) 40 read(A)
6
7
ROLLBACK
50
数据库中A的值恢复为50,事务T4读出的A的值为40, 提交随后又被撤消的数据称为"脏数据"。
32
4.3.1 并发控制的概念
并发控制需要靠数据库的并发控制子系统来解决。如

29
4.3.1 并发控制的概念
1.丢失更新问题
时间 1 更新事务T1 数据库A的值 50 更新事务T2
2
3 4
read(A)
A=A-10 write(A) 40 100
read(A)
A=A*2
5
6 7 8 write(A)
A值100,错误,第8步丢失了T1对数据库的更新操作。
30
4.3.1 并发控制的概念
33
4.3.1 并发 的概念
为了防止数据库数据的不一致性,必须采取封锁策略,即 在事务要对数据库进行操作之前,首先对其操作的数据设置 封锁,禁止其他事务再对该数据进行操作,当它对该数据操 作完毕并解除对数据的封锁后,才允许其他事务对该数据进 行 操 作 。 串行操作,并行操作。并行操作与串行操作的结果不一 定相同,当且仅当几个事务并行运行的结果和这些事务按某 一次序串行运行的结果相同时,这种并行操作才是正确的。 把并发操作的若干事务的全部事务步按某一顺序排定的运行 次序叫做调度。一个事务的运行次序在并行调度执行的结果 34 等价于某一串行调度执行的结果,则称这种调度是可串行化 的调度。
19


(2)系统故障 由于特殊的原因导致事务无法正常执行,而系统必 须重新启动 如停电、CPU故障等 一般只影响正在执行的事务,而不会破坏数据库本 身以及DBMS环境 系统重新启动时,数据库处于一种非一致性状态
4.2.1 故障类型
20


(3)介质故障 外存发生故障,导致存储其中的数据、或数据库本 身、或DBMS软件处于不正常状态 这类故障的破坏性较大 计算机病毒 破坏DBMS软件环境 破坏OS环境 导致数据库系统无法正常工作
相关文档
最新文档