Database Recovery

Transaction

  • 事务(Transaction)是用户定义的一个数据库操 作序列这些操作要么全做要么全不做是 一个不可分割的工作单位

  • 事务和程序是两个概念

    • 在关系数据库中一个事务可以是一条SQL语句 一组SQL语句或整个程序
    • 一个程序通常包含多个事务
  • 事务是恢复和并发控制的基本单位

事物的定义

显示地定义

BEGIN TRANSACTION
  <SQL STATEMENT 1>
  <SQL STATEMENT 2>
  ...
COMMIT  
BEGIN TRANSACTION
  <SQL STATEMENT 1>
  <SQL STATEMENT 2>
  ...
ROLLBACK

这里 COMMITROLLBACK 是显示地终止一个事物的两条指令

当用户没有显式地定义事务时, 数据库管理系统按缺省规定自动划分事务

  • 事务正常结束

  • 提交事务的所有操作读+更新

  • 事务中所有对数据库的更新写回到磁盘上的物理数据库中

  • 事务异常终止

  • 事务运行的过程中发生了故障不能继续执行

  • 系统将事务中对数据库的所有已完成的操作全部撤销

  • 事务滚回到开始时的状态

  • ACID特性

    • Atomicity: 事务是数据库的逻辑工作单位 —— 事务中包括的诸操作要么都做, 要么都不做
    • Consistency: 数据库中只包含成功事务提交的结果 (也就是说失败的事物必须rollback)
    • Isolation: 一个事务的执行不能被其他事务干扰, 并发执行的各个事务之间不能互相干扰
    • Durability: 一个事务一旦提交它对数据库中数据的改变就应该是永久性的. 接下来的其他操作或故障不应该对其执行结果有任何影响
  • 事务的控制语句事务的提交(commit)与回滚(rollback)

Fault and Database Recovery

故障 (Fault) 的种类

  • 事务内部的故障 (事务故障)
  • 系统故障
  • 介质故障
  • 计算机病毒

各类故障对数据库的影响有两种可能性

  • 数据库本身被破坏
  • 数据库没有被破坏, 但数据可能不正确, 这是由于事务的运行被非正常终止造成的.

事务内部更多的故障是非预期的, 是不能由应用程序处理的.

  • 运算溢出
  • 并发事务发生死锁而被选中撤销该事务
  • 违反了某些完整性限制而被终止等

事务故障仅指这类非预期的故障

事务故障的恢复事务撤消UNDO

  • 强行回滚ROLLBACK该事务
  • 撤销该事务已经作出的任何对数据库的修改使得该事务像根本没有启动一样

系统故障, 称为软故障, 是指造成系统停止运转的任何事件 (特定类型的硬件错误如CPU故障 操作系统故障数据库管理系统代码错误系统断 电使得系统要重新启动

  • 整个系统的正常运行突然被破坏

  • 所有正在运行的事务都非正常终止

  • 不破坏数据库

  • 内存中数据库缓冲区的信息全部丢失

  • 发生系统故障时一些尚未完成的事务的结果可能已送 入物理数据库造成数据库可能处于不正确状态

    • 恢复策略系统重新启动时恢复程序让所有非正常终止的 事务回滚强行撤消UNDO所有未完成事务
  • 发生系统故障时有些已完成的事务可能有一部分甚至 全部留在缓冲区尚未写回到磁盘上的物理数据库中 系统故障使得这些事务对数据库的修改部分或全部丢失

    • 恢复策略系统重新启动时恢复程序需要重做REDO 所有已提交的事务

介质故障称为硬故障指外存故障

  • 磁盘损坏
  • 磁头碰撞
  • 瞬时强磁场干扰

介质故障破坏数据库或部分数据库并影响正 在存取这部分数据的所有事务

介质故障比前两类故障的可能性小得多但破 坏性大得多

病毒是数据库的主要威胁

恢复操作的基本原理冗余: 利用存储在系统别处的冗余数据来重建数据库中已被破 坏或不正确的那部分数据

恢复的实现技术复杂: 一个大型数据库产品恢复子系统的代码要占全部代码 的10%以上

恢复机制涉及的关键问题:

  • 如何建立冗余数据数据转储登记日志文件
  • 如何利用这些冗余数据实施数据库恢复

Data Dumping & Logs

数据转储

转储 (dumping) 是指数据库管理员定期地将整个数据库复制到 磁带磁盘或其他存储介质上保存起来的过程

转储方法:

  • 静态: 在系统中无运行事务时进行的转储操作
  • 动态: 转储操作与用户事务并发进行

海量转储: 每次转储全部数据库

增量转储: 只转储上次转储后更新过的数据

日志

日志文件的格式

  • 以记录为单位的日志文件
  • 以数据块为单位的日志文件

用途

  • 进行事务故障恢复
  • 进行系统故障恢复
  • 协助后备副本进行介质故障恢复

Schedule

  • 串行调度(serial schedule)

  • 可串行化调度(Serializability Schedule)

  • 冲突 与 冲突可串行化调度

  • 串行调度/可串行化调度/冲突可串行化调度 三者之间的关系

Two-Phase Locking

  • 封锁

    • 排它锁的作用与申请规则

    • 共享锁的作用与申请规则

  • 两阶段封锁协议

  • 死锁的定义

Logs

  • UNDO日志的内容记载规则和作用

  • REDO日志的内容记载规则和作用

  • UNDO/REDO日志的内容记载规则和作用

恢复策略

  • 事务故障UNDO
  • 系统故障UNDO and REDO
  • 介质故障重装数据库UNDO and REDO