数据库-第十章 数据库恢复技术【期末复习|考研复习】

前言

总结整理不易,希望大家点赞收藏。

给大家整理了一下数据库系统概论中的重点概念,以供大家期末复习和考研复习的时候使用。

参考资料是王珊老师和萨师煊老师的数据库系统概论(第五版)。


数据库系统概论系列文章传送门:
第一章 绪论
第二/三章 关系数据库和标准语言SQL
第四/五章 数据库安全性和完整性
第六/七章 关系数据理论和数据库设计
第八/九章 数据库编程和优化
第十章 数据库恢复技术
第十一章 并发控制


文章目录

  • 前言
  • [第十章 数据库恢复技术](#第十章 数据库恢复技术)
    • [10.1 事务的基本概念](#10.1 事务的基本概念)
    • [10.2 事务的ACID特性](#10.2 事务的ACID特性)
    • [10.3 数据库恢复](#10.3 数据库恢复)
    • [10.4 故障种类](#10.4 故障种类)
    • [10.5 恢复的实现技术](#10.5 恢复的实现技术)
    • [10.6 日志文件](#10.6 日志文件)
    • [10.7 数据库镜像](#10.7 数据库镜像)
  • 练手题
  • 下一章传送门

第十章 数据库恢复技术

10.1 事务的基本概念

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

BEGIN TRANSACTION

COMMIT

ROLLBACK //表示回滚,指事务遇到某些故障,系统将撤销操作,回滚到事务开始时的状态

10.2 事务的ACID特性

四个特性:

原子性(atomicity)

一致性(consistency)

隔离性(isolation)

持续性(durability)

原子性:要么不做,要么全做。不可拆分;

一致性:和原子性密切相关。事务的执行结果必须是使数据库从一个状态到另一个状态。

隔离性:一个事务的执行不能被其他事务干扰

持续性:一个事务一旦提交对数据库的影响就是永久性的。

保持事务的ACID特性是事务管理的重要任务。可能遭到的破坏因素有:

(1)多个事务并发执行,不同事物交叉执行。

(2)强制停止

10.3 数据库恢复

数据库的恢复:尽管数据库系统中采取了各种保护措施来防止数据库的安全性和完整性被破坏,但是还有一些是不可避免的。数据库管理系统必须具备把数据库从错误状态恢复到某一已知的正确状态的功能。

10.4 故障种类

事务故障类型:事务内部的故障、系统故障、介质故障、计算机病毒

事务撤销:在不影响其他事务运行的情况下,强制回滚该事务,撤销事务做出的任何操作。使得事务好像没有启动一样。------内部

事务故障的恢复策略:

1、反向扫描日志文件查找该事务的更新操作,对该事务的更新操作进行逆操作。

2、对该事务的其他更新操作做同样的处理,直到读到该事务的开始标记时事务故障恢复完成。

系统故障是指造成系统停止运转的任何事件,使得系统要重新启动。如:CPU故障、操作系统故障、DBMS代码错误、系统断电等。

恢复策略:

1、从头扫描日志文件找出在故障发生前已经提交的事务将其记入重做队列,同时找出故障发生时未完成的事务将其事务标记记入撤销队列。

2、对撤销队列的各个事务进行撤销处理。

3、对重做事务中的各个事务进行重做处理

介质故障:磁盘损坏、磁头碰撞等。

恢复策略:重装数据库,重做已完成的事务。

10.5 恢复的实现技术

恢复的基本原理:冗余。

恢复机制的两个关键问题:如何建立冗余数据、如何利用这些冗余数据实施数据库恢复。

建立冗余数据最常用的技术是数据转储和登记日志文件。

数据转储:数据库管理员定期地将整个数据库复制到磁带、磁盘或其他存储介质上保存起来的过程。后备副本,这些副本只能将数据库恢复到转储时的状态。

静态转储:转储时不能有任何操作;动态转储: 转储和用户事务可以并发执行。

海量转储:全部数据库;增量转储:只转储更新部分

10.6 日志文件

日志文件是用来记录事务对数据库的更新操作的文件。事务故障恢复和系统故障恢复必须使用日志文件。

在动态转储方式中必须建立日志文件,后备副本和日志文件结合起来才能有效地恢复数据库。

为保证数据库是可恢复的,登记日志文件时必须遵循两条原则。

(1) 登记的次序严格按照并发事务执行地时间次序

(2) 必须先写日志文件再写数据库。

10.7 数据库镜像

相当于复制。镜像和源数据库一致。出现故障,就可以利用镜像恢复。

练手题

11.1

11.2

下一章传送门

第十一章 并发控制

相关推荐
好吃的肘子4 分钟前
MongoDB入门
数据库·mongodb
noravinsc6 分钟前
人大金仓数据库 与django结合
数据库·python·django
代码配咖啡1 小时前
《Navicat之外的新选择:实测支持国产数据库的SQLynx核心功能解析》
数据库
懒大王爱吃狼1 小时前
怎么使用python进行PostgreSQL 数据库连接?
数据库·python·postgresql
时序数据说1 小时前
IoTDB集群的一键启停功能详解
大数据·数据库·开源·时序数据库·iotdb
小叶子来了啊2 小时前
信息系统运行管理员:临阵磨枪版
运维·服务器·数据库
数据库幼崽2 小时前
MySQL 8.0 OCP 1Z0-908 131-140题
数据库·mysql·ocp
北漂老男孩2 小时前
主流数据库运维故障排查卡片式速查表与视觉图谱
运维·数据库
源码云商2 小时前
基于SpringBoot的校园周边美食探索及分享平台【附源码+数据库+文档下载】
数据库·spring boot·美食
爱编程的小新☆2 小时前
【MySQL】数据库三大范式
数据库·mysql