解释 DBMS 中可恢复性的概念

dbmsdatabasebig data analytics更新于 2026/1/12 20:37:17

非序列化调度的特点如下 −

  • 事务可能是一致的,也可能不是一致的。

  • 事务可能是可恢复的,也可能不可恢复。

现在我们来谈谈可恢复性调度。

我们都知道,可恢复和不可恢复都是非序列化技术。

不可恢复调度

如果一个事务对一个未提交的事务执行了脏读操作,并且在读取该值的事务之前提交,则这种调度称为不可恢复调度。

示例

我们考虑如下所示的两个事务调度 −

T1T2
Read(A)
Write(A)
-Read(A) ///Dirty Read
-Write(A)
-Commit
-
Rollback

由于以下原因,上述调度不可恢复:

  • 事务 T2 正在对 A 执行脏读操作。

  • 事务 T2 也在事务 T1 完成之前提交。

  • 事务 T1 随后失败并发生回滚。

  • 事务 T2 读取了错误的值。

  • 最后,事务 T2 无法恢复,因为它已经提交。

可恢复调度

如果任何事务从未提交的事务执行脏读操作,并且其已提交的操作被延迟到未提交的事务提交或回滚,则此类调度称为可恢复调度。

示例

让我们考虑两个事务时间表如下 −

T1T2
Read(A)
Write(A)
-Read(A) ///Dirty Read
-Write(A)
-
-
Commit

Commit // delayed

由于以下原因 −,上述调度是可恢复的调度。

  • 事务 T2 对 A 执行脏读操作。

  • 事务 T2 的提交操作被延迟,直到事务 T1 提交或回滚。

  • 事务稍后提交。

  • 在上述调度中,事务 T2 现在被允许提交,而 T1 尚未提交。

  • 在这种情况下,事务 T1 失败,事务 T2 仍有机会通过回滚恢复。


相关文章