时间:2022-11-13 06:30:01 | 来源:信息时代
时间:2022-11-13 06:30:01 来源:信息时代
事务故障的恢复 : 在不影响其他事务执行的情况下,将发生的事务故障对数据库产生的影响进行消除的机制和过程。事务故障(transaction failure)是指事务在正常结束前被终止,但是整个DBMS仍能正常执行。这是数据库系统最经常发生的一类故障。造成事务终止的原因,可能是事务程序中有明显的ROLLBACK语句被执行,也可能是一些事务程序在运行时发生了不能预期的错误,例如并发事务发生死锁等。由于数据库系统仍然在正常地运行,因此,需要识别出发生故障的事务,然后在不影响其他事务执行的情况下,将该事务对数据库产生的影响消除掉。
数据库系统运行中,在存在大量的并发事务的情况下,很容易造成事务之间由于竞争资源而相互阻塞(死锁),事务管理程序就会将其中的一些事务回滚。
事务回滚也叫事务撤消操作(UNDO操作),是指将某个故障事务对数据库所做的影响消除的过程。UNDO操作需要依据日志(LOG)来完成。具体过程描述如下:
(1)反向扫描日志文件,即从文件的尾部开始扫描日志文件,如果是在事务结束标志前遇到的更新操作,肯定是一个故障事务的操作,就需要进行恢复。否则,跳过去。
(2)对该操作执行UNDO操作,即用该操作的BI重新写入数据库。如果是插入操作,相当于执行一个删除操作; 如果是删除操作,相当于执行一个插入操作; 如果是更新操作,相当于用BI替代当前的值。
(3)继续反向扫描过程,查找该事务的其他更新操作,直到遇到该事务的开始标志,该事务恢复完成。