事务的四个特性及数据库的恢复

定义:事务是构成单一逻辑工作单元的操作集合。

事务是数据库管理系统提供的控制数据操作的一种手段,通过这一手段,应用程序员将一系列的数据库操作组合在一起作为一个整体进行操作和控制,以便数据库管理系统能够提供一致性状态转换的保证。

事务的ACID特性:

原子性(Atomicity): 事务是一个不可分割的工作单元,事务的操作要么全做,要么全不做

一致性(Consistency) : 事务单独执行时,数据不会因事务的执行而遭受破坏

隔离性(Isolation) : 在多个事务并发执行时,系统应保证与这些事务先后单独执行时的结果一样

持久性(Durability) : 一个事务一旦完成全部操作后,它对数据库的所有更新应永久地反映在磁盘数据库中

数据库的恢复:

定义:系统能把数据库从被破坏、不正确的状态恢复到最近一个正确的状态,DBMS这种能力称为数据库的可恢复性(Recovery) 。

事务的读写操作

缓冲区管理器发出,以块为单位

input(A):把磁盘物理块A的内容传送到内存的缓冲块中

output(B):把缓冲块B的内容传送到磁盘中恰当的物理块中 事务发出

read(X):把数据项X读到程序变量中

write(X):把程序变量写入数据项X中

数据库的故障及其影响
1、事务故障
某一个程序(事务)自身运行错误所引起的故障,影响该程序(事务)本身。
2、系统故障
由于掉电、非正常关机等所引起的故障。
影响正在运行的事务以及数据库缓冲区,数据库缓冲区将涉及运行和已经运行的事务。
3、介质故障
由于介质损坏等所引起的故障。
影响是全面的,既影响内存中的数据,又影响介质中存储的数据。

数据库故障恢复方法

事务故障:撤销(undo)或重做(redo)发生故障的事务

系统故障:日志

介质故障:转储

基于日志的恢复策略

日志是DBMS记录数据库全部更新操作的序列文件。通常一个数据库系统只有一个日志文件,为所有事务共享,主要特点有: 每条日志都记录在日志的尾部 日志文件是可以交错的,但属于单个事务的日志顺序应与事务执行顺序一致

日志记录有两种类型 记录数据更新操作(update,insert,delete) 记录事务操作(start,commit,abort)

系统故障可通过日志来恢复 按照日志记录的事务操作顺序重做事务(redo)或撤销事务(undo)

利用日志文件恢复主要有两个问题: 日志扫描过程太耗时。 许多要求REDO事务的更新实际上在恢复时都写入了磁盘的物理数据库中。并且日志会记录好多天的数据,那么我们一旦发生了故障该从哪一点进行恢复呢?

基于检验点恢复方法

设置tc为完成最近检查点时刻tf为故障发生时刻

tc之前的事务就不用考虑了,我们只考虑tc后的事务

基本规则:若事务在tf之前就已经做完那我们只需要redo而事务若是在tf之前没有做完那我们需要对该事务undo。

这样就可以解决了,是不是很简单。

介质故障的恢复

副本

在某一时刻,对数据库在其他介质存储上产生的另一份等同记录

用副本替换被损坏的数据库

介质故障的恢复

用副本替换被破坏的数据库  

由于介质故障影响全面, 在用副本恢复后还需要依据运行日志进行恢复

恢复的基本原则和实现方法

数据库具有可恢复性的基本原则 “冗余”,即数据重复存储

具体实现方法:转储和建立日志

周期地(比如一天一次)对整个数据库进行拷贝,转储到另一个磁盘或磁带一类存储介质中。

建立日志数据库。记录事务的开始、结束及数据每一次插入、删除和修改前后的值,并写到“日志”库中。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

用编程写诗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值