10.1 事务的基本概念
事务的概念
- 事务:是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位;是恢复和并发控制的基本单位;
事务的特性(ACID)
- 原子性(Atomicity):事务中包括的诸操作要么都做,要么都不做
- 一致性(Consistency)事务执行的结果必须是使数据库从一个
** 一致性状态变到另一个一致性状态**(数据库中只包含成功事务提交的结果)注:不一致状态:数据库中包含失败事务的结果 - 隔离性(Isolation)一个事务内部的操作及使用的数据对其他并发事务是隔离的;并发执行的各个事务之间不能互相干扰
- 持续性(Durability )一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。
10.2 数据库恢复概述
10.3 故障的种类
故障的种类
- 事务故障
- 系统故障
- 介质故障
事务故障
- 事务故障:某个事务在运行过程中由于种种原因未运行至正常终止点就夭折了
- 如何恢复?撤销事务
系统故障
- 整个系统的正常运行突然被破坏,所有正在运行的事务都非正常终止,内存中数据库缓冲区的信息全部丢失,外部存储设备上的数据未受影响;
- 系统故障的恢复:
介质故障
- **定义:**硬件故障使存储在外存中的数据部分丢失或全部丢失
- 常见原因:磁盘损坏,磁头碰撞,操作系统的某种潜在错误,瞬时强磁场干扰
- 恢复:①装入数据库发生介质故障前某个时刻的数据副本②重做自此时始的所有成功事务,将这些事务已提交的结果重新记入数据库
10.4 恢复的实现技术
恢复操作的基本原理:冗余 恢复的实现技术:复杂
恢复机制涉及的关键问题
- 如何建立冗余数据?①数据转储②登录日志文件
- 如何利用这些冗余数据进行数据库的恢复?
数据转储
- 定义:DBA将整个数据库复制到磁带或另一个磁盘上保存起来的过程。
转储方法
- ①静态转储 系统无运行状态时进行转储;转储开始时数据库处于一致性;状态转储期间不允许对数据库的任何存取、修改活动
- ②动态转储:转储操作与用户事务并发进行;转储期间允许对数据库进行存取或修改
- ③海量转储 :每次转储全部数据库
- ④增量转储:只转储上次转储后更新过的数据
转储策略
- 应定期进行数据转储,制作后备副本。
- 但转储又是十分耗费时间和资源的,不能频繁进行。
- DBA应该根据数据库使用情况确定适当的转储周期和转储方法。
登录日志文件
- 定义:用来记录事务对数据库的更新操作的文件
- 分为以记录为单位的日志文件(插入了什么类型什么值)和以数据块为单位的日志文件;
- 用途:①进行事务故障恢复②进行系统故障恢复③协助后备副本进行介质故障恢复
10.5 恢复策略
事务故障的恢复
- 定义:事务在运行至正常终止前中止
- 方法:恢复子系统应利用日志文件撤消(UNDO)此事务已对数据库进行的修改
- 注意:由系统自动完成,不需要用户干预;
- 例子:插入操作, “更新前的值”为空,则相当于做删除操作
系统故障的恢复
- 原因有许多:① 一些未完成事务对数据库的更新已写入数据库② 一些已提交事务对数据库的更新还留在缓冲区没来得及写入数据库
- 恢复方法:① Undo 故障发生时未完成的事务② Redo 已完成的事务
- 注意:由系统在重新启动时自动完成,不需要用户干预
- 步骤:① 正向扫描日志文件(即从头扫描日志文件)找出Redo队列: 在故障发生前已经提交的事务 T1, T3, T8……和Undo队列:故障发生时尚未完成的事务 T2, T4, T5, T6, T7, T9 ……;② 对Undo队列事务进行UNDO处理;③ 对Redo队列事务进行REDO处理
介质故障的恢复
- ①重装数据库,使数据库恢复到一致性状态②重做已完成的事务