事务处理技术主要包括数据库恢复技术和并发控制技术
这章讲述数据库恢复技术
所谓事务
是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做
,是一个不可分割
的工作单位。一个事务可以是一条SQL语句、一组SQL语句、整个程序
事务通常以BEGIN TRANSACTION
开始,以COMMIT
或ROLLBACK
结束。
COMMTI表示提交
,即提交事务的所有操作
,具体的说是将事务中所有对数据库的更新写回到磁盘上的物理数据库中,事务正常结束
ROOLBACK表示回滚,即在事务运行过程中发生某种故障,事务不能继续运行
。系统将事务中对数据库所有已完成(更新)操作全部撤销,回滚到事务开始状态。
事务有4个特性:
原子性(Atomicity)
一致性(Consistency)
:
事务执行结果必须是使数据库从一个一致性状态变为另一个一致性状态。当数据库只包含成功事务提交结果时,称数据库处于一致性状态
隔离性(Isolation)
:
一个事务执行不能被其他事务干扰,即一个事务的内部操作及使用数据都其他事务是隔离的,并发执行的各事务之间不能相互干扰
持续性(Durability)
:
也称永久性,☞一个事物一旦提交,对数据库中数据的改变就应该是永久的
计算机系统中硬件故障、软件错误、操作员失误及恶意破坏不可避免,这些故障轻则造成事务非正常中断,重则破坏数据库。因此数据库管理系统必须具有把数据库从错误状态恢复到某一已知的正确状态(一致状态或完整状态)的功能,这就是数据库的恢复。
事务内部故障更多是非预期的
、是不能由应用程序处理的。如运算溢出、并发事务死锁、违反完整性限制等
事物故障意味着事务没有达到预期的终点(COMMIT或显式的ROLLBACK)。
恢复程序要在不影响其他事务运行的情况下,强行回滚该事务,即撤销该事务已经做出的任何对数据库的修改。这类恢复操作称为事务撤销
系统故障指造成系统停止运转的任何事件,使得系统要重新启动。
恢复子系统必须在系统重新启动时让所有非正常终止事务回滚,强行撤销所有未完成事务;另外有些已完成事务可能一部分甚至全部留在缓冲区,尚未写回磁盘上的物理数据库,因此应将这些事务已提交结果重新写入数据库。
系统故障称为软故障,介质故障称为硬故障
,指外存故障。这类故障发生可能性小,但破坏性最大
恢复的基本原理:冗余
,即数据库的数据可以根据存储在系统别处的冗余数据来重建
恢复机制涉及两个关键问题:
建立冗余数据最常用技术是数据转储和登记日志文件
所谓转储
即数据库管理员定期
将整个数据库复制
到磁带、磁盘或其他存储介质上保存起来的过程。这些被用数据称为后备副本
转储分为静态转储和动态转储
静态转储
:系统在无事务运行是进行转储操作,即转储操作开始的时刻数据库处在一致性状态,转储期间不允许对数据库的任何存取、修改活动。
静态转储简单,但转储必须等待正运行的事务结束才能运行。
动态转储
:转储期间允许对数据库进行存取或修改,即转储和用户事务可并发执行。克服了静态转储的缺点,但转储结束时的后备副本上的数据不能保证正确有效
转储还可以分为海量转储和增量转储
海量转储
:每次转储全部数据库
增量转储
:每次只转储上一次转储后更新过的数据
日志文件
:用来记录事务对数据库的更新操作的文件
日志文件中需要登记的内容包括:事物的开始标记、结束标记、所有更新操作
日志文件在数据库恢复中起着重要作用
,可用来进行事务故障恢复和系统故障恢复,并协助后备副本进行介质故障恢复。
为保证数据库是可恢复的,登记日志文件必须遵循两条原则
:
恢复子系统应利用日志文件撤销(UNDO)
此事务已对数据库进行的修改,由系统自动完成,对用户是透明的。
事务故障恢复步骤
:
系统故障的恢复是由系统在重新启动时自动完成的,不需要用户干预
系统故障恢复步骤
:
这是最严重的一种故障,恢复方法是重装数据库,然后重做已完成的事务。
介质故障恢复步骤
:
这种技术在日志文件中增加了一类新的记录——检查点
记录,增加一个重新开始文件,并让恢复子系统在登陆日志文件期间动态维护日志
检查点记录的内容
:
重新开始文件
用来记录各个检查点记录在日志文件中的地址
根据数据库管理员的要求,自动把整个数据库或其中关键数据复制到另一个磁盘上,由数据库管理系统自动保证镜像数据与主数据库的一致性。在没有出现故障时,数据库镜像还可以用于并发操作