数据库管理系统中的恢复和原子性介绍使用DBMS(数据库管理系统)可以快速有效地监控、存储和更改数据。数据库具有原子性、一致性、隔离性和持久性等特性。系统保存数据和对数据所做更改的能力定义了它的持久性。数据库可能由于以下任何一种原因而失败:
数据库管理系统中的恢复过程保证了数据库的原子性和持久性。如果系统在事务进行到一半时崩溃,并且丢失了所有数据,那么它就不被认为是持久的。如果在事务期间只更新数据的一部分,则不认为它是原子的。DBMS中的数据恢复过程确保数据始终是可恢复的,以保护持久性属性,并保留其状态,以保护原子属性。下面列出的过程用于从DBMS中恢复数据。
DBMS的原子性属性保护了数据状态。如果执行了数据修改,则必须完全完成操作,或者必须保持数据的状态,就好像操作从未发生过一样。这种特性可能会受到事务导致的DBMS故障的影响,但是DBMS恢复方法可以保护它。 什么是基于日志的恢复?每个DBMS都有自己的系统日志,记录每个系统活动,并包括用于事件计时的时间戳。数据库为错误、查询和其他数据库更新等操作管理多个日志文件。日志保存的文件格式如下:
我们可以利用这些日志来查看事务期间数据的状态如何变化,并将其恢复到以前或新的状态。 undo操作可以检查[写项,T, X,旧值,新值]操作,恢复数据状态为旧数据。将数据的先前状态恢复到由于系统故障而丢失的新状态的唯一方法是执行[commit, T]操作。 考虑以下一系列事务:t1、t2、t3和t4。在第四个事务之后系统崩溃;但是,仍然可以在事务t1期间将数据检索到检查点建立之前的状态。 在将事务的所有记录写入日志后,将创建一个检查点,将所有日志从本地存储传输到永久存储,以供将来使用。 什么是认输更新方法?在事务进入其最后阶段或在提交操作期间之前,不会使用让步更新机制更改数据。按照这个过程,数据被更新并永久地放在主存中。 在发生故障时,在整个过程中保存的日志用于确定故障的精确时刻。我们从中受益,因为即使系统在提交步骤之前崩溃,数据库的数据也不会被更改,并且状态得到了管理。如果系统在提交阶段之后失败,我们可以快速地在新阶段重做更改,而不是撤消过程。 许多数据库自动配置日志记录,但我们也可以手动配置它们。在MySQL终端配置登录MySQL数据库。
快速更新方法需要什么?在快速更新策略中,在事务到达提交阶段之前并发地更新数据。一旦数据发生变化,日志也会被记录下来。 如果事务失败并且数据处于部分状态,则可以执行数据恢复活动。我们还可以使用SQL指令标记事务的状态,并将数据恢复到该状态。要完成此操作,请运行以下命令:
延迟更新和即时更新的区别是什么?在DBMS中用于保存事务日志文件的数据库恢复方法包括延迟更新和快速更新。 使用延迟更新,一旦事务完成,数据库的数据状态不会立即改变;相反,更改被记录在日志文件中,并且一旦提交完成,数据库的状态就会更新。 在立即更新的每个事务中,数据库都直接更新,并且还保留了详细说明新旧值的日志文件。
备份技术备份是保存在另一个位置的数据库当前状态的副本。在系统因自然灾害或物理损害而被破坏时,这种备份是有益的。可以使用这些备份将数据库恢复到备份时的状态。备份技术有很多,包括以下几种:
什么是事务日志?事务日志用于跟踪更新了数据库中数据的所有事务。下面的方法用于从事务日志中恢复数据。 恢复管理器扫描所有日志文件,查找具有启动事务阶段但没有提交阶段的事务。 使用rollback命令和日志将上述事务回滚到以前的状态。 使用commit命令的事务对数据库进行了修改,这些修改被记录在日志中。这些修改也可以使用撤销功能来撤销。 什么是影子寻呼?
在缓存/缓冲方法的逻辑内存中是一个称为DBMS缓冲区的缓冲区集合。在整个过程中,所有日志都保存在缓冲区中,一旦事务到达提交阶段,主日志文件就会更新。 原子性: 用于确保数据库事务完整性的一组思想被称为ACID模型,它代表数据库管理系统中的原子性、一致性、隔离性和持久性。 原子性主要是通过复杂的进程实现的,比如日志记录或日志记录,或者通过操作系统调用。 在数据库管理系统中,原子事务被定义为一系列不可分割且不可简化的数据库操作,其中要么发生一切,要么不发生任何事情。 原子性保证可以防止不完整的数据库更改,这可能会导致比简单地拒绝整个系列更多的问题。因此,没有其他数据库客户机能够查看该事务。在某个时刻,它还没有发生,但在另一个时刻,它已经完全发生了(或者如果事务正在进行中被取消,则不会发生任何更改)。 原子性的例子: 我们已经研究了原子性在关系数据库中的含义。让我们看一些示例,以便更好地理解原子性的概念。 例1:在线订票系统中的原子性: 以在线订票系统为例,订票可以由两个独立的行为组成,这两个行为结合起来构成交易:第一个是支付机票,第二个是为刚刚付款的人预订座位。根据业务逻辑,这两个不同且独立的操作必须同时发生。如果一个发展而没有另一个,就会出现问题。例如,系统可能会为两个不同的消费者保留相同的座位。 例2:发生在银行的交易(贷记或借记)。 如果Marino有一个50美元的账户a,他想付给Amanda 20美元,Amanda有一个50美元的账户B。账户B中已经有200美元的余额。当你向账户B存入20美元时,总共是220美元。 现在已经安排了两个程序。首先,马里诺想要发送的20美元将从他的账户A中借记,并贷记到账户B,即阿曼达的账户。初始借记事务成功,但随后的贷记过程失败。 结果,马里诺的账户a的价值下降到30美元,而阿曼达的账户价值保持不变,为200美元。 ![]() 因此,这不是原子事务。结果,马里诺的账户a的价值下降到30美元,而阿曼达的账户价值保持不变,为200美元。 结论:
下一个话题
数据库管理系统中集中式、分散式和分布式系统的区别
|