数据库管理系统(DBMS)中恢复计划的不同类型是什么?
如果任何执行脏读操作的事务来自未提交的事务,并且其提交操作也被延迟,直到未提交的事务被提交或回滚,则此类计划称为可恢复计划。
可恢复计划的类型
有三种类型的可恢复计划,下面将结合相关示例进行解释:
- 级联计划
- 非级联计划
- 严格计划。
可恢复计划的类型如下表所示:

可恢复计划
首先,让我们看一个可恢复计划的示例。
| T1 | T2 |
|---|---|
| R(X) | |
| W(X) | |
| W(X) | |
| R(X) | |
| commit | |
| Commit |
这里,事务 T2 读取由事务 T1 写入的值,并且 T2 的提交发生在 T1 提交之后。因此,这是一个可恢复计划。
可恢复计划再次细分为非级联和严格计划。
- 级联计划
级联计划被归类为可恢复计划。可恢复计划基本上是指执行读取操作的特定事务的提交操作被延迟,直到未提交的事务提交或回滚。
级联回滚是一种回滚类型,如果一个事务失败,则会导致其他依赖事务的回滚。级联回滚的主要缺点是它会导致 CPU 时间浪费。
以下是一个级联计划的示例:
| T1 | T2 | T3 | T4 |
|---|---|---|---|
| Read(A) | |||
| Write(A) | |||
| Read (A) | |||
| Write(A) | |||
| Read(A) | |||
| Write(A) | |||
| Read(A) | |||
| Write(A) | |||
| Failure |
以上事务由于 T1 失败而导致级联回滚,T2 回滚,T2 的回滚导致 T3 回滚,T3 的回滚导致 T4 回滚。
- 非级联计划
当不允许事务读取数据,直到最后一个写入它的事务提交或中止时,此类计划称为非级联计划。
以下是一个非级联计划的示例:
| T1 | T2 |
|---|---|
| R(X) | |
| W(X) | |
| W(X) | |
| commit | |
| R(X) | |
| Commit |
这里,事务 T2 仅在事务 T1 提交后读取 **X** 的更新值。因此,该计划是非级联计划。
- 严格计划
以下是一个严格计划的示例:
| T1 | T2 |
|---|---|
| R(X) | |
| R(X) | |
| W(X) | |
| commit | |
| W(X) | |
| R(X) | |
| Commit |
这里,事务 T2 仅在事务 T1 提交后读取和写入事务 T1 的更新或写入值。因此,该计划是严格计划。
可恢复计划在下图中表示:

广告
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP