1、第七章 数据库恢复技术7.1 事务的基本概念一、事务 (Transaction)所谓事务是用户定义的一个 数据库操作序列 ,这些操作要么 全做 要么 全不做 ,是一个不可分割的工作单位。例如,在关系数据库中,一个事务可以是 一条 SQL语句 、 一组 SQL语句或 整个程序 。事务的开始与结束可以由 用户显式控制 。如果用户没有显式地定义事务,则由 DBMS按 缺省规定自动划分 事务。在 SQL语言中, 定义事务的语句 有三条:BEGIN TRANSACTIONCOMMITROLLBACKCOMMIT表示 提交 ,即提交事务的所有操作。具体地说就是将事务中所有对数据库的更新写回到磁盘上的物理数
2、据库中去,事务正常结束 。ROLLBACK表示 回滚 ,即在事务运行的过程中发生了某种故障,事务不能继续执行,系统将事务中对数据库的所有已完成的操作全部撤销,滚回到事务开始时的状态。二、事务的特性事务具有四个特性( ACID特性):原子性 (Atomicity)、 一致性 (Consistency)、隔离性 (Isolation)和持续性 (Durability)。1 原子性 事务是数据库的 逻辑工作单位 ,事务中包括的诸操作要么都做,要么都不做。2一致性事务执行的结果必须是使数据库从一个 一致性状态 变到另一个 一致性状态 。当数据库 只包含成功事务 提交的结果时,就说数据库处于一致性状态。
3、如果数据库系统运行中发生故障,有些事务尚未完成就被迫中断,这些未完成事务对数据库所做的修改有一部分已写入物理数据库,这时数据库就 处于一种不正确的状态 ,或者说是 不一致的状态。一致性与原子性是密切相关的。3隔离性一个事务的执行 不能被其他事务干扰 。即一个事务内部的操作及使用的数据对其他并发事务是隔离的,并发执行的各个事务之间不能互相干扰。4持续性持续性也称永久性 (Permanence), 指一个事务 一旦提交 ,它对数据库中数据的 改变就应该是永久性的 。接下来的其他操作或故障不应该对其执行结果有任何影响。事务 ACID特性可能遭到破坏的因素有:(1)多个事务 并发运行时,不同事务的操作
4、 交叉执行 ;(2)事务在运行过程中被 强行停止 。7 2数据库恢复概述数据库的恢复 :数据库管理系统必须具有把数据库从 错误状态 恢复到某一已知的 正确状态 (亦称为一致状态或完整状态 )的功能,这就是数据库的恢复。恢复子系统是数据库管理系统的一个重要组成部分,而且还相当庞大,常常占整个系统代码的百分之十以上。数据库系统所采用的恢复技术是否行之有效,不仅对系统的可靠程度起着决定性作用,而且对系统的运行效率也有很大影响,是衡量系统性能优劣的重要指标。7.3 故障的种类一、事务内部的故障事务内部的故障 有的是可以通过 事务程序 本身发现的 (见下面转账事务的例子 ),有的是非预期的,不能由事务程序处理的例如: 银行转账事务,这个事务把一笔金额从一个账户甲转给另一个账户乙。事务内部更多的故障是非预期的,是不能由应用程序处理的。如运算溢出、并发事务发生死锁而被选中撤销该事务、违反了某些完整性限制等。以后,事务故障仅指这类非预期的故障。事务撤销 (UNDO): 数据库可能处于不正确状态。恢复程序要在不影响其他事务运行的情况下,强行回滚 (ROLLBACK)该事务,即撤销该事务已经作出的任何对数据库的修改,使得该事务好像根本没有启动一样。 这类恢复操作称为事务撤销(UNDO)。