事务是一系列的数据库操作,是数据库应用程序的基本逻辑单元。事务处理(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. 上海肯特选用Ultimus 提升企业管理
  2. could not open parameter file init**.ora
  3. python3+matplotlib+tkinter
  4. 简单的节流函数throttle
  5. LeetCode MySQL 1511. Customer Order Frequency
  6. 几米的一段话,献给所有小郁闷的人
  7. 聊一聊字节跳动的面试
  8. webview加载百度失败_独家|神秘SDK暗刷百度广告 植入数千款APP
  9. 嵌入式开发中常用的软件设计模式
  10. win8.1修改用户名
  11. Android开发进阶-接入Google Admob
  12. [js]调用google,51ditu和mapbar的地图API
  13. 图片随着屏幕大小变化而变化
  14. 局部加权回归Loess对比MFCC三角滤波(吴恩达机器学习中说,Loess算法用到了aircraft的自动驾驶中)
  15. 安装python3.x解释器步骤,Windows下使Python2.x版本的解释器与3.x共存的方法
  16. 用于ip伪装身份的网络爬虫
  17. 【学习OpenCV4】OpenCV入门精讲(C++/Python双语教学)
  18. 【JavaSE】《基础篇005》集合
  19. Hey UI源码市场
  20. Linux 安装Oracle11g完整安装图文教程另附基本操作 (分享)

热门文章

  1. 利用solr6.5,tomcat9.0和centos7.0的搭建
  2. Oracle 截取字符串,取系统时间
  3. JavaScript的Cookie操作
  4. 心路历程(一)-自学java两个月心得
  5. MAC下《暗黑世界》客户端版本编译说明!!
  6. SQL Server 数据库连接字符串的声明
  7. (转)SQL操作全集
  8. AI大牛压箱底的14本2018年进阶书(附PDF链接)
  9. 想转行到机器学习,学到什么程度,才能找到工作?
  10. 监控ui_做了10年监控系统,有些经验想和你分享