事务是一系列的数据库操作,是数据库应用程序的基本逻辑单元。事务处理(transaction processing)技术主要包括数据库恢复技术和并发控制技术。

10.1 事务的基本概念

  1. 事务:是用户定义的一个数据库操作序列,是一个不可分割的工作单位(原子性)
    一般的,一个程序中被包含多个事务。如果用户没有显式的定义事务,则DBMS自动划分事务。
    事务一般以BEGIN TRANSACTION开始,以COMMIT或ROLLBACK结束。ROLLBACK表示回滚,系统将事务中对数据库的所有已完成的操作全部撤销,回滚到事务开始时的状态。

  2. 事务的ACID特性

  • 原子性:事务中的操作要么都做,要么都不做
  • 一致性:事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态
  • 隔离性:一个事物的执行不能被其他事务干扰,并发执行的各个事务之间不能互相干扰
  • 持续性:一个事务一旦提交,它对数据库中数据的改变就应该是永久性的

可能破坏事务ACID特性的因素有:

  1. 多个事务并发运行时,不同事务的操作交叉执行
  2. 事务在运行过程中被强行停止

10.2 数据库恢复概述

数据库的恢复:把数据库从错误状态恢复到某一已知的正确状态

10.3 故障的种类

  1. 事物内部的故障:只影响这个事物本身,一般是非预期的,如运算溢出、因为死锁被撤销等,解决方法是强行回滚,称为事务撤销

  2. 系统故障(软故障):造成系统停止运转的任何事件,使得系统重新启动。影响正在运行的所有事务,但不破坏数据库。

    解决方法:清除所有未完成的事务对数据库的所有更改。同时重做所有已提交的事务(因为这些已提交的事务可能还在缓冲区没写到磁盘上的物理数据库上)

  3. 介质故障(硬故障):指外存故障,如磁盘损坏

    解决方法:备份

  4. 计算机病毒:产生故障的原因,本身不是故障,可能产生故障2或3

10.4 恢复的实现技术

建立冗余数据:

  1. 数据转储
  2. 登记日志文件

10.4.1 数据转储

静态转储:系统中无运行事务时进行的转储,转储期间不允许任何事务执行。
优点:得到的一定是一个数据一致性的副本
缺点:降低了数据库的可用性

动态转储:转储和用户事务可以并发执行
优点:系统可用性较好
缺点:转储得到的副本不一定一致,因此必须建立日志文件等级转储期间各事务对数据库的修改活动

海量转储:每次转储整个数据库,恢复更方便
增量转储:每次只转储上一次转储后更新过的数据,恢复较复杂

10.4.2 登记日志文件

1.日志文件的格式和内容

两种格式:以记录为单位/以数据块为单位
需要登记的内容:

  • 各个事务的开始(BEGIN TRANSACTION)标记
  • 各个事务的结束(COMMIT或ROLLBACK)标记
  • 各个事务的所有更新操作

这里每个事务的开始标记、每个事物的结束标记和每个更新操作均作为日志文件中的一个日志记录(log record)。

每个日志记录文件的内容包括:

  • 事务标识(标明是哪个事务)
  • 操作的类型(插入、删除或修改)
  • 操作对象(记录内部标识)
  • 更新前数据的旧值(对插入操作而言,此项为空值)
  • 更新后数据的新值(对删除操作而言,此项为空值)

对于以数据块为单位的日志文件,日志记录的内容包括事务标识和被更新的数据块。由于将更新前的整个块和更新后的整个块都放入日志文件中,操作类型和操作对象等信息就不必放入日志记录中了。

2. 日志文件的作用:

  1. 事务/系统故障恢复必须用日志文件
  2. 动态转储必须建立日志文件,后备副本和日志文件结合才能有效地恢复

3.登记日志文件的两条原则

  1. 登记的次序按并发事务执行的时间次序
  2. 必须先写日志文件,后写数据库

10.5 恢复策略

10.5.1 事务故障的恢复

系统自动完成的,对用户是透明的

恢复步骤:

  1. 反向扫描日志文件,查找该事务的更新操作
  2. 对该事务的更新操作执行逆操作
  3. 重复12,直至读到此事务的开始标记

10.5.2 系统故障的恢复

系统在重新启动时自动完成的,不需要用户干预

恢复步骤:

  1. 正向扫描日志文件,找出故障发生前已经提交的事务(有BEGIN有COMMIT),记入重做事务。同时找出未完成的事务(只有BEGIN),加入撤销队列
  2. 对撤销队列中的事务进行撤销处理:反向扫描并执行逆操作
  3. 对重做队列中的各个事务进行重做处理:正向扫描并重做

10.5.3 介质故障的恢复

恢复方法:

  1. 装入最新的数据库后备副本,对于动态转储还需同时装入转储开始时刻的日志文件副本
  2. 装入相应的日志文件副本(转储结束时刻的日志文件副本),重做已完成的事务

10.6 具有检查点的恢复技术

检查点记录的内容:

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

  • 重新开始文件记录检查点记录
  • 检查点记录里面记录活跃的事务:T1T2,以及它们的最后日志记录D1D2

恢复方法:

清理日志文件:在重新开始文件里面找到上一个与当前检查点没有相同的活跃事务的检查点,那么它之前的日志记录都可以删掉

日志刷出去了以后系统故障:没问题,因为这个检查点还没写到重新开始文件上,写重新开始文件是最后一步。

10.7 数据库镜像

用途:

  1. 介质故障时将应用迁移到镜像数据库,使数据库可以继续使用,同时恢复著数据库
  2. 提供系统并发访问

数据库系统概论:第十章 数据库恢复技术相关推荐

  1. 第十章数据库恢复技术

    第十章数据库恢复技术 10.1_事务 事务的四个特性:原子性.一致性.隔离性.持续性 10.2_故障的种类 事务内部的故障 系统故障 介质故障 计算机病毒 10.3_恢复的实现技术 转储:动态和静态 ...

  2. 数据库系统原理 实验5 数据库恢复技术

    数据库系统原理 实验5 数据库恢复技术 一. 实验目的 1. 掌握数据库备份和恢复的概念: 2. 熟练掌握数据库备份和恢复.数据导入导出等操作: 二. 实验内容及要求 假定你的数据库名称是XDB(具体 ...

  3. 数据库系统概论(第十章数据库恢复技术)

    第10章 数据库恢复技术 事务是一系列的数据库操作,是数据库应用程序的基本逻辑单元.事务处理(transaction processing)技术主要包括数据库恢复技术和并发控制技术. 10.1 事务的 ...

  4. (数据库系统概论|王珊)第十章数据库恢复技术:习题

    名词解释 事务:是用户定义的一个数据库操作序列.这些操作要么不做,要么全做,是一个不可分割的工作单位.例如在RDBMS中一个事务可以是一条SQL语句或整个程序.事务是数据库恢复和并发控制的基本单位 事 ...

  5. (数据库系统概论|王珊)第十章数据库恢复技术-第一、二节:事务的基本概念和数据库恢复概述

    文章目录 一:事务的基本概念 (1)事务 A:定义 B:事务的定义 (2)事务的四个特性--ACID A:数据库的ACID ①:原子性(Atomicity) ②:一致性(Consistency) ③: ...

  6. (数据库系统概论|王珊)第十章数据库恢复技术-第四、五、六、七节:数据库恢复技术和数据库镜像

    文章目录 一:数据库恢复的实现技术 (1)数据转储(备份) A:转储的分类 ①:按照系统是否运行事物时分类 ②:按转储的范围分类 (2)登记日志文件 A:日志文件的内容 B:日志文件的作用 C:登记日 ...

  7. (数据库系统概论|王珊)第十章数据库恢复技术-第三节:故障种类

    文章目录 一:事务故障 (1)事务故障概念 (2)事务故障原因 (3)事务故障恢复 二:系统故障 (1)系统故障概念 (2)系统故障的破坏性 (3)系统故障恢复 三:介质故障 (1)介质故障概念 (2 ...

  8. 数据库系统概论(第十章: 数据库恢复技术)

    第十章  数据库恢复技术 10.1  事务的基本概念 10.1.1.事务 1.事务(Transaction)是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位. 2 ...

  9. 南京工程学院 数据库复习(数据库系统概论复习 及 数据库原理与应用样题)

    一.数据库系统概论 1.1 百度文库 复习文档(需下载券) <数据库系统概论>(王珊.第五版) ★第一章   绪论 v 本章内容:数据库系统概述.数据模型.数据库系统结构 v 本章主要考点 ...

最新文章

  1. Linux free命令详解(转)
  2. 研究生实名举报深圳大学导师强迫学生延迟毕业,违规报销,各方回应
  3. CachedNetworkImage 图片缓存
  4. c++ 预处理命令 预定义变量用法
  5. [itint5]棋盘漫步
  6. cnn神经网络可以用于数据拟合吗_代码详解:最全面的卷积神经网络介绍,都在这里了...
  7. 惠普打印机怎么无线连接电脑_惠普SPECTRE X360 13笔记本电脑怎么样,值得买吗
  8. linux的yum详解,Linux之YUM 详解
  9. 《网友世界》杂志:2010“最不给力”软件
  10. oracle按天创建分区,oracle 10g按天分区
  11. asp td tr 高度_ASP.NET Core Blazor 初探之 Blazor Server
  12. theano学习——内置数据类型
  13. 合批/批量渲染 (Batch)、实例化Instancing
  14. IDE SATA SCSI iSCSI等存储硬盘对比与分析
  15. 使用igvtools可视化测序深度分布
  16. 从事软件行业的第759天,人还是要经常审视自己
  17. 数学建模竞赛在中国的蝗虫式增长
  18. google外链怎么做?谷歌网站做外链的方法
  19. 如何挣更多钱呢?提高你的编程艺术!
  20. 计算机文化教育对学生思维品质的影响,信息技术教育让素质教育绽放“光芒”...

热门文章

  1. 固定div的位置——不随窗口大小改变为改变位置
  2. 【转】JAVA 并发性和多线程 -- 读感 (二 线程间通讯,共享内存的机制)
  3. 2017-06-09 问题
  4. T25健身视频全集+课表
  5. BZOJ3808 : Neerc2012 Labyrinth of the Minotaur
  6. Proteus仿真STM32F103R6微控制器的EXTI
  7. C#字符串与unicode互相转换
  8. 机器学习实战:k-近邻算法(手写数字识别)
  9. VC++ MFC DLL动态链接库编写详解
  10. 华科研究生复试机试题代码堆积供以后参考