冲突可串行化调度

2025 年 3 月 17 日 | 阅读 1 分钟
  • 如果一个调度在交换非冲突操作后可以转化为一个串行调度,那么这个调度就称为冲突可串行化。
  • 如果一个调度与一个串行调度冲突等价,那么它就是冲突可串行化的。

冲突操作

如果同时满足以下所有条件,则两个操作就是冲突的:

  1. 两者属于不同的事务。
  2. 它们访问的是同一个数据项。
  3. 它们中至少包含一个写操作。

示例

只有当 S1 和 S2 在逻辑上相等时,才能进行交换。


DBMS Conflict Serializable Schedule

这里,S1 = S2。这意味着它们是非冲突的。


DBMS Conflict Serializable Schedule

这里,S1 ≠ S2。这意味着它们是冲突的。

冲突等价

在冲突等价中,一个调度可以通过交换非冲突操作来转换为另一个调度。在给定的示例中,S2 与 S1 冲突等价(S1 可以通过交换非冲突操作转换为 S2)。

两个调度被称为冲突等价,当且仅当:

  1. 它们包含相同的事务集合。
  2. 如果每对冲突操作的顺序都相同。

示例


DBMS Conflict Serializable Schedule

调度 S2 是一个串行调度,因为在该调度中,T1 的所有操作都在开始 T2 的任何操作之前执行。调度 S1 可以通过交换 S1 的非冲突操作来转换为一个串行调度。

在交换非冲突操作后,调度 S1 变为:

T1T2
Read(A)
Write(A)
Read(B)
Write(B)




Read(A)
Write(A)
Read(B)
Write(B)

因此,S1 是冲突可串行化的。