您的位置:首页 > 数据库

数据库恢复技术之事务

2017-03-14 10:30 197 查看

1.事务的基本概念

事务是用户定义的一个数据库操作序列,一个基本逻辑单元,这些操作要么全做,要么全不做。例如,在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句或者整个程序。在SQL中定义事务的语句,主要包含以下三条:
begin transaction
commit
rollback
事务通常以begin transaction开始,以commit,或者commit结束。commit表示提交,即提交事务的所有操作。rollback表示回滚,即在事务运行过程中,发生了某种故障,事务不能继续执行,则对已完成的操作全部撤销,回滚到事务开始时的状态。

2.事务的四大特性

毋庸置疑,ACID。分别为原子性(atomicity),一致性(consistency),隔离性(isolation),持久性(durability)。
原子性:事务是数据库的逻辑工作单元,包含的操作要么全做,要么全不做。
一致性:事务执行的结果必须是从一个一致性状态转换为另外一个一致性状态,即前后要保持一致。
隔离性:一个事务的执行不能被其他事务干扰。
持续性:指一个事务一旦提交,其对数据库中数据的改变就应该是持久性的。

3.故障的分类

主要分为事务内部故障,系统故障,介质故障,病毒等。
事务内务故障:一般可以通过事务程序本身发现,但大多数是非预期的,不能由事务程序处理的。处理方式:事务发生故障,一般意味着事务没有达到预期的终点(commit,或者commit),导致数据库处于不正确的状态。一般通过事务撤销(UNDO)恢复操作来处理。
系统故障:指造成系统停止运转的任何事件,使得系统要重新启动。如:特定类型的硬件错误,操作系统故障,以及系统断电等。
介质故障:一般为硬故障,即外存故障,如磁盘损坏,磁头碰撞等。

4.恢复策略

首先,介绍两个相关概念——数据转储,日志文件。
数据转储是数据库中采用的基本技术,即DBA定期地将整个数据库复制到磁带或者另一个磁盘上保存起来的过程。这些备用数据称为后援副本或者后备副本。
                其中,包含静态转储和动态转储。静态转储是在系统中无运行事务时进行的转储操作。实现简单,但会降低数据的可用性。
                动态转储,指在转储期间允许对数据库进行存取或修改,即转储和用户事务可以并发执行。
日志文件:用来记录事务对数据库更新操作的文件。
言归正传,下面介绍一下,事务故障恢复,系统故障恢复以及介质故障恢复。

事务故障恢复
恢复步骤:(1)反向扫描日志文件,查找该事务的更新操作。
    (2)对该事务的更新操作执行逆操作。
    (3)继续反向扫描日志文件,查找该事务的其他更新操作,并做同样处理。
                            (4)如此处理下去,直到读到此事务的开始标记,事务故障恢复就完成了。

系统故障恢复
恢复步骤:
                           (1)正向扫描日志文件,找到故障发生前已经提交的事务,将其事务标识记入重做队列(REDO)。同时,找出故障发生时尚未发生的事务,将其事务标识记
入撤销队列(UNDO)。

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

  (3)对重做队列中的各个事务进行重做处理。

介质故障恢复
        恢复步骤:重装数据库,然后重做已完成的事务。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  事务 数据库