《数据库系统概论》知识点总结 第十章

第十章 数据库恢复技术

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

2.事务的属性COMMIT:表示提交,一次提交所有的事务,即将事务中所有对数据库的更新都写回到磁盘上;

ROLLBACK:如果事务执行中途中断了,那么将会恢复之前对数据库的操作

3.事务的ACID特性:原子性(Atomicity),一致性(Consistency),隔离性(Isolation),持续性(Durability)。

4.事务故障分类:

1)事务内部故障

BEGIN TRANSACTION
    读取账户甲的余额BALANCE;
    BALANCE=BALANCE-AMOUNT;
    IF(BALANCE<0)THEN
        {打印‘余额不足,不能转账’;
         ROLLBACK;}
    ELSE{
        读账户乙的余额BALANCE1;
        BALANCE1=BALANCE1+AMOUNT;
        写回BALANCE1;
        COMMIT;}

2)系统故障:造成系统停止运转的任何事件,使得系统要重新启动。

3)介质故障:比如存储介质的故障

4)计算机病毒

5.恢复的实现技术:

1)数据转存:静态转存(系统在无事务时进行转储操作);动态转存(转储期间允许数据库进行存取或者修改);海量转储(每次转储全部的数据库);增量转储(每次只转储上一次转储后更新过的数据),他们可以进行组合。这些策略可以组合起来使用,比如一天进行一次增量动态转储,一周进行一次海量静态转储。

2)登记日志文件

6.数据库的恢复策略:

1)事务故障的恢复:反向查日志,将更新记录进行UNDO(撤销处理),比如我在某时某刻update了Grade,那么在恢复的时候就要将update后的值变为update之前的值

2)系统故障的恢复:正向查日志,对于有开始没有COMMIT的事务进行REDO(重做)处理,对于有开始也有OMMIT的事务先进行UNDO,然后再进行REDO。

3)介质故障的恢复:重装数据库,然后重做已完成的事务

7.检查点(checkpoint):与游戏里面类似,就是周期性地将之前完成的事务进行存档,具体步骤是:

1)将当前日志缓冲区中所有的日志记录写入磁盘的日志文件中

2)在日志文件中写入一个检查点

3)把当前数据缓冲区的所有数据记录写入磁盘的数据库中  (这里面的相关事务都不需要REDO了)

4)把检查点记录在日志文件中的地址写入一个重新开始文件(注意这里不是日志文件,而是另一个文件,并且对于检查点的检查是以这个文件为标准的)

8.系统在有检查点时的恢复策略:

1)对于在检查点之前就完成的事务不需要REDO

2)对于检查点前开始,故障点前结束的事务,他们的数据可能还在数据缓冲区中,所以要REDO

3)对于检查点之后开始,故障点之前结束的事务,也要REDO,原因同上

4)对于故障点之后没有提交的事务要进行UNDO(UNDO到事务开始的地方)然后再REDO

猜你喜欢

转载自blog.csdn.net/haohulala/article/details/82720981