目录

系统架构设计师数据库基础篇数据库的控制功能

系统架构设计师—数据库基础篇—数据库的控制功能

事务管理

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

原子性(Atomicity)

  • 操作
  • 操作序列要么全做要么全不做。

一致性(Consistency)

  • 数据
  • 数据库从一个一致性状态变到另一个一致性状态。

隔离性(Isolation)

  • 执行
  • 不能被其他事务打扰

持久性(Durability)

  • 变化
  • 一旦提交,改变就是永久的。

并发控制

排他型封锁(X封锁,写锁)

只允许一个事物,独锁某个数据,具有 排他性

  • 不允许并发加写锁。

共享型封锁(S封锁,读锁)

在S封锁解除之前,不允许任何事务对S锁数据实现X锁。

  • 允许并发加读锁

备份

逻辑备份

利用DBMS自带的工具软件备份和恢复数据库的内容。

物理备份

在操作系统层面上对数据库的数据文件进行备份。

冷备份热备份
关闭数据库进行备份不关闭数据库进行备份。可使用备份软件。

备份的类型

完全备份增量备份差异备份
将数据库的内容 全部备份 ,备份所需时间较长。只备份上次 完全、增量或差异备份 以来 修改的 数据。备份自上次 完全备份 后发生变化的所有数据。

故障恢复

事务故障的恢复

事务故障是指,事务未运行至正常终止点前被撤销,这时恢复子系统应对此事务做撤销处理。

事务故障的恢复是由系统自动完成的,不需要用户干预,步骤如下:

  1. 反向扫描文件日志,查找该事务的更新操作。
  2. 对该事务的更新操作执行逆操作。
  3. 继续反向扫描日志文件,查找该事务的其他更新操作,并做同样处理。
  4. 如此处理下去,直至读到此事务的开始标记,事务故障恢复完成。

系统故障的恢复

系统故障发生时,造成数据库不一致状态的原因有两个:

  1. 由于一些未完成事务对数据库的更新已写入数据库。
  2. 由于一些已提交事务对数据库的更新还留在缓冲区未写入数据库。

系统故障的恢复是在重新启动时自动完成的,不需要用户干预,步骤如下:

  1. 正向扫描日志文件,找出在故障发生前已经提交的事务,将其事务标识记入重做(Redo)队列。同时找出故障发生时尚未完成的事务,将事务标识记入撤销(Undo)队列。
  2. 对撤销队列中的各个事务进行撤销处理:反向扫描日志文件,对每个Undo事务的更新操作执行逆操作。
  3. 对重做队列中各个事务进行重做处理:正向扫描日志文件,对每个Redo事务重新执行日志文件登记的操作。

介质故障与病毒破坏的恢复

在发生介质故障和遭病毒破坏时,磁盘上的物理数据库被破坏,这时的恢复操作可分为三步:

  1. 装入最新的数据库后备副本,使数据库恢复到最近一次转储时的一致性状态。
  2. 从故障点开始反向读日志文件,找出已提交事务标识将其记入重做队列。
  3. 从起始点开始正向阅读日志文件,根据重做队列中的记录,重做所有已完成事务,将数据库恢复至故障前某一时刻的已执行状态。

具有检查点的恢复技术

检查点记录的内容可包括:

  • 建立检查点时刻所有正在执行的事务清单。
  • 这些事务最近一个日志记录的地址。

采用检查点的恢复步骤如下:

  • 找到最后一个检查点记录在日志文件中的位置,由该地址在日志文件中找到最后一个检查点记录。
  • 由该检查点记录得到检查点建立时,所有正在执行的事务清单队列(A)。
  • 建立重做队列(R)和撤销队列(U),将A队列放入U队列中,R队列为空。