一
DBMS必须提供数据库的恢复、数据库的并发控制、数据库的完整性检查和数据库的安全性保护四个方面的功能。
数据库的恢复功能:计算机系统的硬件故障、软件故障、操作员的失误以及恶意的破坏都会影响数据库中数据的正确性,甚至造成数据库部分或全部数据的丢失,DBMS必须具有将数据库从错误状态恢复到某一已知的正确状态的功能。
并发控制功能:当多个用户的并发进程同时存取、修改数据库时,可能会发生相互干扰而得到错误的结果或使得数据库的完整性遭到破坏,DBMS必须具有对多用户的并发操作加以控制和协调的功能。
数据库的完整性:指数据库中数据的正确性、有效性和相容性,DBMS必须具有将数据控制在有效的范围内,或保证数据之间满足一定的关系的功能,这就是数据库的完整性检查功能。
数据库的安全性保护功能:是指保护数据,以防止不合法的使用造成的数据的泄密和破坏,DBMS必须具有使每个用户只能按规定对某些数据以某些方式进行使用和处理的功能。
二
事务是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。事务和程序是两个概念。在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句或整个程序;一个应用程序通常包含多个事务。事务是恢复和并发控制的基本单位。
事务的开始与结束可以由用户显式定义。在SQL中,显式定义事务的语句有三条:BEGIN TRANSACTION;COMMIT;ROLLBACK。通常是以BEGIN TRANSACTION开始,以COMMIT或ROLLBACK结束。COMMIT表示事务正常结束,提交事务的所有操作,事务中所有对数据库的更新永久生效。ROLLBACK表示事务异常终止,事务运行的过程中发生了故障,不能继续执行,系统将事务中对数据库的所有已完成的操作全部撤销,回滚事务所有更新操作,事务回滚到开始时的状态。当用户没有显式地定义事务时,DBMS按缺省规定隐式自动划分事务。
三
事务的ACID特性是指事务具有四个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。
1. 原子性:事务是数据库的逻辑工作单位。事务中包括的诸操作要么都做,要么都不做。
2. 一致性:事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。当数据库中只包含成功事务提交的结果时,就说数据库处于一致性状态,如果数据库系统运行中发生故障,有些事务尚未完成就被迫中断,这些未完成事务对数据库所做的修改有一部分已写入物理数据库,这时数据库就处于一种不正确的状态,或者说是不一致的状态。
3. 隔离性:对并发执行而言,一个事务的执行不能被其他事务干扰。一个事务内部的操作及使用的数据对其他并发事务是隔离的,并发执行的各个事务之间不能互相干扰。
4. 持续性:持续性也称永久性(Permanence),一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。
四
数据库管理系统必须具有把数据库从错误状态恢复到某一已知的正确状态(亦即一致性状态)的功能,这就是数据库的恢复。
故障类型
数据库系统中可能发生各种各样的故障,大致可以分以下几类:
1. 事务故障
事务故障是指某个事务在运行过程中由于种种原因未能运行至终止点(COMMIT或ROLLBACK),发生故障。
事务故障的常见原因包括输入数据有误、运算溢出、违反了完整性限制、应用程序出错、并行事务发生死锁等。
发生事务故障时,未完成的事务可能把对数据库的部分修改写回磁盘,此时的数据库可能处于不正确的状态,恢复程序要在不影响其它事务运行的情况下,强行回滚(ROLLBACK)该事务,清除该事务对数据库的所有修改,使得这个事务好像根本没有运行过一样。
2. 系统故障
系统故障是指由于操作系统或DBMS代码错误、特定类型的硬件错误(如CPU故障)或突然停电等原因,使得系统要重新启动。发生系统故障时,所有正在运行的事务都非正常终止,内存中数据库缓冲区的信息全部丢失,但外部存储设备上的数据未受影响。
发生系统故障时,一些尚未完成的事务的结果可能已被写入物理数据库,从而造成数据库可能处于不正确的状态。为保证数据一致性,需要清除这些事务对数据库的所有修改。恢复子系统必须在系统重新启动时让所有非正常终止的事务回滚,强行撤销(UNDO)所有未完成的事务。
另一方面,发生系统故障时,有些已完成事务的结果可能有一部分甚至全部留在缓冲区,尚未写入磁盘的物理数据库中,系统故障使得这些事务对数据库的修改部分或全部丢失,这也会使数据库处于不一致状态,因此应将这些事务已提交的结果重新写入数据库。恢复子系统必须在系统重新启动时需要重做(REDO)所有已提交的事务,以将数据库恢复到一致状态。
3. 介质故障
系统故障称为软故障(Soft Crash),介质故障称为硬故障(Hard Crash)。介质故障是指由于磁盘损坏、磁头碰撞、瞬时强磁场干扰等原因,使得存储在外存中的数据部分丢失或全部丢失。
介质故障比前两类故障的可能性小得多,但破坏性大得多。
关键概念:事务故障和系统故障不会破坏外存中数据库的数据,介质故障会破坏存放在外存的数据库中的部分或全部数据。
总结各类故障,对数据库的影响有两种可能性。一是数据库本身被破坏,二是数据库没有被破坏,但数据可能不正确。
网友评论