- 分布式数据库管理系统教程
- DDBMS - 首页
- DDBMS - 数据库管理系统概念
- DDBMS - 分布式数据库
- 分布式数据库设计
- 分布式数据库环境
- DDBMS - 设计策略
- DDBMS - 分布式透明性
- DDBMS - 数据库控制
- 分布式数据库管理系统安全
- 数据库安全与密码学
- 分布式数据库中的安全
- 分布式数据库管理系统资源
- DDBMS - 快速指南
- DDBMS - 有用资源
- DDBMS - 讨论
分布式数据库管理系统 - 故障与提交
数据库管理系统容易受到多种故障的影响。本章将研究故障类型和提交协议。在分布式数据库系统中,故障大致可分为软故障、硬故障和网络故障。
软故障
软故障是一种导致计算机易失性存储器数据丢失,而非持久性存储器数据丢失的故障。此处,存储在非持久性存储器(如主内存、缓冲区、缓存或寄存器)中的信息将丢失。它们也称为系统崩溃。各种类型的软故障如下:
- 操作系统故障。
- 主内存崩溃。
- 事务失败或中止。
- 系统生成的错误,例如整数溢出或除零错误。
- 支持软件故障。
- 电源故障。
硬故障
硬故障是一种导致持久性或非易失性存储器(如磁盘)中数据丢失的故障。磁盘故障可能导致某些磁盘块中的数据损坏或整个磁盘故障。硬故障的原因包括:
- 电源故障。
- 介质故障。
- 读写故障。
- 磁盘上信息的损坏。
- 磁盘读/写磁头损坏。
如果备用磁盘已格式化并可以使用,则从磁盘故障中恢复可能很快。否则,持续时间包括发出采购订单、购买磁盘和准备磁盘所需的时间。
网络故障
网络故障在分布式数据库或网络数据库中很普遍。这些包括由于数据的分布式性质和通过网络传输数据而导致的数据库系统错误。网络故障的原因如下:
- 通信链路故障。
- 网络拥塞。
- 传输过程中信息损坏。
- 站点故障。
- 网络分区。
提交协议
任何数据库系统都应保证即使在故障后也能保持事务的理想属性。如果在事务执行期间发生故障,则可能发生事务带来的一些更改未提交的情况。这使得数据库不一致。提交协议使用事务撤销(回滚)或事务重做(前滚)来防止这种情况。
提交点
决定是否提交或中止事务的时间点称为提交点。以下是提交点的属性。
这是数据库一致的时间点。
在此点,数据库带来的修改可以被其他事务看到。所有事务都可以对数据库具有一致的视图。
在此点,事务的所有操作都已成功执行,其效果已记录在事务日志中。
在此点,如果需要,可以安全地撤消事务。
在此点,事务释放其持有的所有锁。
事务撤销
撤销事务对数据库所做的所有更改的过程称为事务撤销或事务回滚。这主要用于软故障的情况。
事务重做
重新应用事务对数据库所做的更改的过程称为事务重做或事务前滚。这主要用于从硬故障中恢复。
事务日志
事务日志是一个顺序文件,用于跟踪对数据库项的事务操作。由于日志本质上是顺序的,因此可以从开头或结尾顺序处理它。
事务日志的目的:
- 支持提交协议以提交或支持事务。
- 帮助在故障后恢复数据库。
事务日志通常保存在磁盘上,因此不会受到软故障的影响。此外,日志会定期备份到磁带等存档存储中,以防止磁盘故障。
事务日志中的列表
事务日志根据事务的状态维护五种类型的列表。此列表帮助恢复管理器确定事务的状态。状态和相应的列表如下:
具有事务开始记录和事务提交记录的事务是已提交的事务——保存在提交列表中。
具有事务开始记录和事务失败记录但没有事务中止记录的事务是失败的事务——保存在失败列表中。
具有事务开始记录和事务中止记录的事务是已中止的事务——保存在中止列表中。
具有事务开始记录和事务提交前记录的事务是提交前事务,即所有操作都已执行但未提交的事务——保存在提交前列表中。
具有事务开始记录但没有提交前、提交、中止或失败记录的事务是活动事务——保存在活动列表中。
立即更新和延迟更新
立即更新和延迟更新是维护事务日志的两种方法。
在立即更新模式下,当事务执行时,事务所做的更新将直接写入磁盘。在写入磁盘中的数据库之前,旧值和更新值将写入日志。提交时,对磁盘所做的更改将永久保存。回滚时,数据库中事务所做的更改将被丢弃,旧值将从日志中存储的旧值恢复到数据库中。
在延迟更新模式下,当事务执行时,事务对数据库所做的更新将记录在日志文件中。提交时,日志中的更改将写入磁盘。回滚时,日志中的更改将被丢弃,并且不会对数据库应用任何更改。