📅  最后修改于: 2021-01-07 05:30:55             🧑  作者: Mango
数据库管理系统容易出现许多故障。在本章中,我们将研究故障类型和提交协议。在分布式数据库系统中,故障可以大致分为软故障,硬故障和网络故障。
软故障是导致计算机易失性存储器而不是永久性存储器丢失的故障类型。在此,存储在非永久性存储区(如主存储器,缓冲区,缓存或寄存器)中的信息会丢失。它们也称为系统崩溃。各种类型的软故障如下-
硬故障是导致永久性或非易失性存储(如磁盘)中的数据丢失的故障类型。磁盘故障可能会导致某些磁盘块中的数据损坏或整个磁盘出现故障。硬故障的原因是-
如果有新的,格式化的且随时可用的磁盘保留,则从磁盘故障中恢复的时间可能很短。否则,工期包括获取采购订单,购买磁盘并准备所需的时间。
网络故障在分布式数据库或网络数据库中很普遍。这些包括由于数据的分布式性质和通过网络传输数据而在数据库系统中引起的错误。网络故障的原因如下-
任何数据库系统都应保证即使在失败之后也能保持事务的理想属性。如果在执行事务期间发生故障,则可能发生未提交由事务引起的所有更改。这使数据库不一致。提交协议使用事务撤消(回滚)或事务重做(前滚)来防止这种情况。
决定是提交还是中止事务的时间点称为提交点。以下是提交点的属性。
这是数据库一致的时间点。
此时,其他事务可以看到数据库带来的修改。所有事务都可以具有一致的数据库视图。
至此,交易的所有操作均已成功执行,其影响已记录在交易日志中。
此时,如果需要,可以安全地撤消事务。
此时,一个事务将释放它所持有的所有锁。
撤消事务对数据库所做的所有更改的过程称为事务撤消或事务回滚。这主要适用于软故障的情况。
重新应用事务对数据库所做的更改的过程称为事务重做或事务前滚。这主要用于从硬故障中恢复。
事务日志是一个顺序文件,用于跟踪对数据库项目的事务操作。由于日志本质上是顺序的,因此它从头开始或从头开始依次处理。
事务日志的目的-
事务日志通常保存在磁盘上,因此不受软故障的影响。此外,该日志会定期备份到磁带之类的档案存储中,以防止磁盘故障。
事务日志根据事务的状态维护五种类型的列表。此列表可帮助恢复管理器确定事务的状态。状态和相应的列表如下-
具有事务开始记录和事务提交记录的事务是已提交事务–维护在提交列表中。
具有事务开始记录和事务失败记录但没有事务中止记录的事务是失败事务-保留在失败列表中。
具有事务开始记录和事务中止记录的事务是中止的事务–保留在中止列表中。
具有事务开始记录和事务提交前记录的事务是事务提交前事务,即所有操作均已执行但未提交的事务–保留在事务提交前列表中。
具有事务开始记录但没有提交前,提交,中止或失败的记录的事务是活动事务–保留在活动列表中。
立即更新和延迟更新是两种维护事务日志的方法。
在立即更新模式下,当执行事务时,由事务进行的更新将直接写入磁盘。在将旧值和更新值写入磁盘中的数据库之前,会将它们写入日志。提交后,对磁盘所做的更改将永久化。回滚时,将放弃事务在数据库中所做的更改,并将旧值从日志中存储的旧值恢复到数据库中。
在延迟更新模式下,当执行事务时,该事务对数据库所做的更新将记录在日志文件中。提交后,日志中的更改将写入磁盘。在回滚时,日志中的更改将被丢弃,并且不会将任何更改应用于数据库。