数据库系统原理
  • 数据库系统原理
  • 引言
    • 数据库系统概述
  • 关系模型介绍
    • 关系数据库结构
    • 数据库模式
    • 关系代数
      • 选择运算
      • 投影运算
      • 笛卡尔运算
      • 连接运算
      • 集合运算
      • 其他运算
  • SQL介绍
    • SQL语言分类
    • SQL数据类型
    • SQL数据库操作
    • SQL数据表操作
    • SQL数据操纵语言
    • SQL数据查询语言
    • 集合运算
    • 聚集函数
  • 中级SQL
    • 连接查询
    • 内连接
    • 外连接
    • 交叉连接和自连接
    • 视图
    • 完整性约束
    • SQL用户和授权
  • 高级SQL
    • 函数
    • 存储过程
    • 触发器
  • ER模式数据库设计
    • 数据库设计过程概览
    • 需求分析
    • 实体-联系模型
      • 复杂属性
      • 映射基数和弱实体集
    • 将E-R图转换为关系模式
    • E-R模型设计
  • 关系数据库设计
    • 数据库设计规范化
    • 函数依赖理论
    • 关系范式
  • 半结构化数据
    • 半结构化数据
  • 应用程序开发
    • ADO.NET访问数据库技术
    • 断开模式数据查询
    • 连接模式数据更新
  • 数据存储结构
    • 磁盘
    • 文件的存储
    • 文件的逻辑结构
    • 文件组织
  • 索引
    • 索引基本概念
    • B树索引
    • B+树索引
    • MySQL索引的基本语法
    • 联合索引
  • 查询处理
    • 查询处理概述
  • 查询优化
    • 查询优化概述
    • 查询树的启发式优化(代数优化算法)
  • 事务
    • 事务的概念
    • 事务的特性
    • MySQL事务处理
    • 可串行化
  • 并发控制
    • 并发控制概述
    • 封锁
    • 两阶段封锁协议封锁
    • 多粒度封锁
    • 活锁和死锁
    • 基于时间戳排序的并发控制
    • 乐观控制法
  • 恢复系统
    • 数据库恢复概述
    • 数据库恢复的实现技术
    • 基于检查点的数据库恢复
Powered by GitBook
On this page
  • 影子拷贝
  • 基于日志记录的数据库恢复
  1. 恢复系统

数据库恢复的实现技术

影子拷贝

想要更新数据库的事务,首先创建数据库的一个完整拷贝,所有更新在库的这个新拷贝上进行,不动原来数据;如果在任何时间点上事务被终止,系统仅删除这个新的拷贝。

为每个事务拷贝一个大型数据库代价极其昂贵,影子拷贝模式普遍用于文本编辑器,影子拷贝的一个变种是影子分页,只拷贝需要更新的数据页

基于日志记录的数据库恢复

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

日志文件的格式:以记录为单位的日志文件;以数据块为单位的日志文件。

日志文件的内容:各个事务的开始标记begin transaction/结束标记/所有更新操作,与事务有关的内部更新操作,作为日志文件中的一个日志记录。

每条日志记录的内容:

  • 事务标识Ti:是事务的唯一标识

  • 数据项标识Xj:所写数据项的唯一标识

  • 更新前数据的旧值V1:对插入操作而言,此项为空值

  • 更新后数据的新值V2:对删除操作而言,此项为空值

将一条更新日志记录表示为<Ti,Xj,V1,V2>,表示事务Ti对数据项Xj执行写操作,写之前Xj的值是V1,写之后Xj的值是V2。

每次事务执行写操作之前,需要创建该操作的日志记录,并将它加到日志中。为了从系统故障和磁盘故障中恢复时能使用日志记录,日志必须存放在稳定存储器中。可以根据实际情况,使用日志来重做redo或者撤销undo事务了。

日志文件的用途:

  • 进行事务故障恢复

  • 进行系统故障恢复

  • 协助后备副本进行介质故障恢复

Previous数据库恢复概述Next基于检查点的数据库恢复

Last updated 4 months ago