1 事务的基本概念

1.1 事务概念

  • 事务:是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位
  • 一个事务可以是一条SQL语句、一组SQL语句或整个程序
  • 一个应用程序通常包含多个事务
  • 事务是恢复和并发控制的基本单位

1.2 如何定义事务

  • COMMIT语句表示:事务正常结束提交事务的所有操作(读+更新),事务中所有对数据库的更新永久生效
1
2
3
4
5
BEGIN TRANSACTION
SQL语句1
SQL语句2
…………
COMMIT
  • ROLLBACK语句表示:事务异常终止回滚事务的所有更新操作,使事务回滚到开始时的状态
1
2
3
4
5
BEGIN TRANSACTION
SQL语句1
SQL语句2
…………
ROLLBACK

1.3 事务的特性 ACID

  • 原子性(Atomicity)
    • 事务中包含的诸操作要么都做,要么都不做
  • 一致性(Consistency)
    • 事务执行使数据库从一个一致性状态变到另一个一致性状态
  • 隔离性(Isolation)
    • 一个事务的执行不能被其他事务干扰,而影响它对数据的正常使用和修改
  • 持续性(Durability)
    • 一个事务一旦提交,它对数据库中数据的改变就应该是永久性的,接下来的其他操作或故障不应该对其执行结果由任何影响

2 故障的种类

2.1 事务故障

定义

  • 某个事务由于某种原因未运行至终止点就夭折了

恢复

  • 对于可预见的错误,由事务程序来处理(如越界判断等)
  • 对于不可预见的错误,由DBMS强行回滚该事务

2.2 系统故障

定义

  • 整个系统的正常运行突然被破坏
  • 所有正在运行的事务都非正常终止

恢复

  • 清除尚未完成的事务对数据库的所有修改
  • 将缓冲区中已完成的事务提交的结果写入数据库

2.3 介质故障

定义

  • 存储数据库的设备(如硬盘)发生故障导致存储在其上的数据部分丢失或全部丢失

恢复

  • 装入数据库发生介质故障前某个时刻的数据副本
  • 重做自此时开始的所有成功事务,将这些事务已提交的结果重新记入数据库

3 恢复的实现技术

3.1 数据恢复的基本原理

  • 数据恢复的基本原理是冗余,即利用存储在系统其他地方的冗余数据重建数据库中已被破坏或不正确的那部分数据
    关键技术:
  1. 如何建立冗余数据
    • 数据转储(backup)
    • 登录日志文件(logging)
  2. 如何利用这些冗余数据实施数据库恢复

3.2 数据转储

定义

  • 转储是指DBA将整个数据库复制到磁带或另一个磁盘上保存起来的过程
  • 这些备用的数据文件称为后备副本或后援副本

分类

  1. 静态转储
    • 转储必须等用户事务结束
    • 新的事务必须等转储结束
  2. 动态转储
    • 转储操作与用户事务并发进行
    • 转储期间允许对数据库进行存储或修改
  3. 海量转储
    • 每次转储全部数据库
  4. 增量转储
    • 只转储上次转储后更新过的数据

转储策略

  • 应定期进行海量转储
  • DBA应该更具使用情况确定适当的转储周期和转储方式

3.3 登录日志文件

定义

  • 日志文件(log)是用来记录事务对数据库的更新操作的文件

格式和内容

以记录为单位的日志文件

  • 格式
    • 各个事务开始标记 BEGIN TRANSACTION
    • 各个事务结束标记 COMMIT 或 ROLLBACK
  • 内容
    • 各个事物的所有更新操作
    • 各个事物的内部更新操作

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

  • 事务标识
  • 操作类型(插入、删除或修改)
  • 操作对象(记录ID、Block NO.)
  • 更新前数据的旧值
  • 更新后数据的新值

日志文件的用途

  • 进行故障恢复

恢复策略

具有检查点的恢复技术

数据库镜像