事务的性质可以用ACID来表示,即原子性、一致性、隔离性和持续性。在这类故障中维持事务原子性的机制称为故障恢复。验证事务是否一致是由语义数据控制实现的。 假设有两个并发事务对用户的银行账户x进行处理,它们都要存取数据项x。......
2025-09-30
本节假设只有系统故障发生,不考虑通信故障问题,这就类似处理集中式数据库的恢复。
发生系统故障时,易失(存储)数据库丢失。因此,DBMS必须在出现故障时保留一些状态信息,以便在故障出现后能恢复到原来的状态,我们把这类信息称为恢复信息。
系统维护的恢复信息依赖于执行更新采用的方法(见图10.6)。这里有两种选择:就地更新与异地更新。就地更新是在稳定存储器中按原来的地址物理性地改变数据项的值,结果原来的值丢失。异地更新不是在稳定存储器里直接修改数据项的值,而是在另外一个地方存放一个新值,周期性地将新值集成到稳定数据库里(一般是改变指针的指向,即将指向修改前的值的指针改为指向新值)。
由于就地更新会让原来的值丢失,因此必须保持数据库状态发生变化时有足够信息,以便能在故障发生后让数据库恢复到一个一致状态。这类信息典型地由数据库日志来维护。
图10.6 执行更新操作
现在我们来看一个发生系统故障时的事务,如图10.7所示。时间为0时DBMS开始执行,时间为t时发生系统故障。在间隔[0,t]内,有两个事务(记作T 1和T 2)递交给DBMS,其中一个(T1)在故障发生时已完成(即已提交),而另一个则并非如此。事务的持续性要求T1的效果应当反映在稳定数据库里。同样,原子性性质要求稳定数据库不包含T2的效果。需要采取专门的预防措施来保证这一点。
图10.7 发生系统故障时的事务
假设仅当缓冲管理器需要新的缓冲空间时,LRM和缓冲管理器算法才会将缓冲页面写回稳定数据库中。这种情况下,有可能由T 1更新的易失数据库页面已经在故障出现时写回了稳定数据库。因此,恢复时能够redo T 1的操作。这要求T 1事先把T 1中的有些信息写到日志里。通过这些信息,系统在恢复时可以找回老状态。
类似地,缓冲管理器可能把T2更新的某些易失数据库页面写入了稳存。到系统故障恢复时,必须undo T2的操作。这样,恢复信息必须包含足够的数据以undo新的数据库状态,恢复到事务T2开始时的原始状态,如图10.8所示。
图10.8 系统故障恢复时需redo和undo事务
系统故障恢复时,如何处理这两个事务,可用图10.9和图10.10说明。(https://www.chuimin.cn)
图10.9 redo事务
图10.10 undo事务
如前所述,redo和undo操作都是幂等的。换言之,即便在redo(或undo)实施期间又发生故障,导致redo(或undo)操作不成功,形成在redo(或undo)中又redo(或undo),呈级联状态,成功恢复时,事务的重复恢复动作等价于只做一次。
日志的内容按照实现技术的不同而有所不同。然而,每个数据库日志中至少要包含如下信息:begin-transaction记录、更新前数据项的值(称为前象,before image)、更新后数据项的值(称为后象,after image)和终止记录说明是提交还是夭折。前象和后象的颗粒可以不同,可以是记录整个页面,也可以是更小的单位。
类似于易失数据库,在内存中也维护一个日志(称为日志缓冲),然后写入稳定存储器。可以用两种方法将日志页面写入稳定存储器:一种是同步方法,指将日志在内存处理完后就移入稳定存储器;一种是异步方法,指周期性地将内存中的日志写入稳定存储器或者在缓冲区满时写入稳定存储器,如图10.11所示。
图10.11 日志接口
无论是采用同步方法还是采用异步方法书写日志,都需要一个维护日志的重要协议。如果更新数据库写入稳定存储器前,日志已经写入稳定存储器,则发生故障时容易通过日志给予恢复,反之不行。如前所述,为此推荐使用一个WAL(write-ahead logging)协议。
●在更新稳定数据库前,其前象必须写入稳定日志,以便undo。
●事务提交时,其后象必须在更新稳定数据库前存入稳定日志,以便redo。
相关文章
事务的性质可以用ACID来表示,即原子性、一致性、隔离性和持续性。在这类故障中维持事务原子性的机制称为故障恢复。验证事务是否一致是由语义数据控制实现的。 假设有两个并发事务对用户的银行账户x进行处理,它们都要存取数据项x。......
2025-09-30
中间关系的大小决定了数据传输量,数据传输量大小对系统性能的影响很大。值得一提的是,这种估算依据的是统计信息,而非真实数据。,Rn是其数据片,定义如下。假设一个数据库用于描述企业的供销系统,涉及几个关系,如“供应”和“部门”。表7.6关系Supply的概貌表7.7关系Dept的概貌表7.6和表7.7中的第一行表示该关系的记录个数(基)。......
2025-09-30
EasyRecovery是一个非常著名的数据恢复软件。该工具采用全新恢复技术,为使用FAT 12/16/32、NTFS、NTFS 5和Ext2FS分区的磁盘提供完整数据维护解决方案。最终在数据恢复公司的帮助下,该设计院才成功找回90%左右的数据。能用EasyRecovery找回数据、文件的前提就是硬盘中还保留有文件的信息和数据块。......
2025-09-30
数据库在建立、运行和维护时,由数据库管理系统统一管理和统一控制。数据库管理系统可以使用户方便地定义数据和操纵数据,并能够保证数据的安全性和完整性、多用户对数据的并发使用及发生故障后的系统恢复。完整性规则是给定的数据及其联系所具有的制约和存储规则,用以限定符合数据库状态及状态的变化,以保证数据的正确性、有效性和相容性。同时,程序与现有存取结构的联系过于密切,也大大降低了数据的独立性。......
2025-09-30
图3.1软件开发过程数据库设计的过程与软件开发的过程类似。下面先来看一下集中式数据库设计的情况。在分布式数据库系统中,集中式数据库设计的问题依然存在,且有以下两个新的问题需要考虑。这个过程就是确定如何将全局关系划分成水平、垂直或者混合的数据片。数据片的分配,即决定数据片如何映射到物理镜像上,决定如何复制数据片。数据片的分配问题则研究已久,当然,过去研究的则是“文件分配”问题。......
2025-09-30
如前所述,计算机中的信息都是采用二进制数表示的。较比特稍大的单位是“字节”,英文是“byte”,使用“B”表示。一个字节包含8个比特,即b7b6b5b4b3b2b1b0其中:每个bi表示一个二进制位,b7和b0分别代表最高位和最低位。计算机在存储信息时存储容量使用字节或字长为单位显然不合适,需使用更大的单位。在数据通信和计算机网络中传输信息时,由于是一位一位地串行传输,传输速率的度量单位是每秒的比特数。......
2025-09-30
类似对数据备份定义的情况,长期以来,计算机领域对数据恢复也没有一个标准定义。这里也给出了一个关于数据恢复较为公认的概念。数据备份是保护数据安全的一种预防措施,而数据恢复是出现问题之后的一种补救措施。因此,对数据恢复技术的研究也引起了广泛关注。在现实中,操作人员或计算机系统的不同,导致数据出现的问题千差万别,所以在进行数据恢复时,一定要谨慎细致,对每一步的操作都有一个明确的目的。......
2025-09-30
图5.6以网络为中心的计算驱动力量、增长领域与示例值得注意的是,美国国防部的Net-Centric的数据策略是从用户出发考虑的。根据DoD的描述:以网络为中心是指实现一个联网环境,包括基础设施、系统、过程和个人,使之能够按照完全不同的方式实施战斗和商务活动。以网络为中心的基础是GIG。以网络为中心,通过安全互联时间或地点独立的人和系统,充分支持军事态势知识的改进和更好地访问商务信息,大大缩短了决策周期。......
2025-09-30
相关推荐