事务的基本概念,数据库恢复技术,数据库的故障分析笔记

一、什么是事务
事务(Transaction)是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单元。
事务和程序是两个概念:
在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句或整个程序;
一个应用程序通常包含多个事务;
事务是恢复和并发控制的基本单位。

事务的基本特性
原子性(Atomicity):事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。
一致性(Consistency):事务执行结果必须使数据库从一个一致性状态变到另一个一致性状态。
隔离性(Isolation):由并发事务所做的修改必须与任何其他并发事务所做的修改隔离。事务识别数据时数据所处的状态,要么是另一并发事务修改它之前的状态,一个事务的执行不能被其他事务干扰,从而影响它对数据的正确使用和修改。
持续性(Durability):一个事务一旦提交,它对数据库的改变就应该是永久的,接下来的其他操作或故障不应该对其执行结果有任何影响。

例:银行转帐:从帐号A中取出一百元,存入帐号B。
定义一个事务,该事务包括两个操作
① 从帐户A减去一百元(A=A-100);
② 给帐户B加上一百元(B=B+100)。
该事务应该符合:这两个操作要么全做,要么全不做。如果只做一个操作,数据库就处于不一致性状态。

事务的基本概念,数据库恢复技术,数据库的故障分析笔记

数据库系统故障的种类
一、事务内部的故障
事务内部的故障有的是可以通过事务程序本身发现的(见下面转账事务的例子),有的是非预期的,不能由事务程序处理的。
例如:银行转账事务,这个事务把一笔金额从一个账户甲转给另一个账户乙。
二、系统故障
系统故障是指造成系统停止运转的任何事件,使得系统要重新启动。例如,特定类型的硬件错误(CPU故障)、操作系统故障、DBMS代码错误、突然停电等。这类故障影响正在运行的所有事务,但不破坏数据库。这时主存内容,尤其是数据库缓冲区(在内存)中的内容都被丢失,所有运行事务都非正常终止。发生系统故障时,一些尚未完成的事务的结果可能己送入物理数据库,从而造成数据库可能处于不正确的状态。为保证数据一致性,需要清除这些事务对数据库的所有修改。
恢复于系统必须在系统重新启动时让所有非正常终止的事务回滚,强行撤销(UNDO)所有未完成事务。
另一方面,发生系统故障时,有些己完成的事务可能有一部分甚至全部留在缓冲区,尚未写回到磁盘上的物理数据库中,系统故障使得这些事务对数据库的修改部分或全部丢失,这也会使数据库处于不一致状态,因此应将这些事务己提交的结果重新写入数据库。所以系统重新启动后,恢复子系统除需要撤销所有未完成事务外,还需要重做(REDO)所有己提交的事务,以将数据库真正恢复到一致状态。
三、介质故障
系统故障常称为软故障(Soft Crash),介质故障称为硬故障(Hard Crash)。硬故障指外存故障,如磁盘损坏、磁头碰撞,瞬时强磁场干扰等。这类故障将破坏数据库或部分数据库,并影响正在存取这部分数据的所有事务。这类故障比前两类故障发生的可能性小得多,但破坏性最大。

数据库恢复技术基本知识
故障是不可避免的 :计算机硬件故障 ,软件的错误 ,操作员的失误 ,恶意的破坏 。
故障的影响 :运行事务非正常中断,影响数据库中数据的正确性 ,破坏数据库,全部或部分丢失数据 。

数据库的恢复
数据库管理系统必须具有把数据库从错误状态恢复到某一已知的正确状态(亦称为一致状态或完整状态)的功能,这就是数据库的恢复管理系统对故障的对策。
恢复子系统是数据库管理系统的一个重要组成部分 。
恢复技术是衡量系统优劣的重要指标。

事务故障

什么是事务故障
 事务在运行过程中未运行至正常终止点就夭折了。
常见原因
输入数据有误
运算溢出
违反了某些完整性限制
某些应用程序出错
并行事务发生死锁
事务故障恢复
(1) 可预见错误:由事务程序来处理
(2) 不可预见错误:由DBMS强行回滚该事务