|
Post by account_disabled on Nov 27, 2023 7:19:41 GMT
优先图或其他名称序列化图,通常用于测试调度的冲突可序列化性。 以下是优先图的示例。但不确定图的 工作职能邮件数据库 最终结果会是这样。在本文中,我们将学习如何创建此图以及它与冲突可串行性的关系。 首先,对于每笔交易,我们将创建一个节点(圆圈),如图所示(T9,T10)。之后,将为每个特定事件绘制线条图。以下事件将使我们划清界限。当事务之间存在冲突操作时我们会划清界限。 读(x)和写(x)操作。如果事务 T10 在 T9 执行 write(x) 之后执行 read(x),则从 T9 到 T10 画一条线。 写入(x)和读取(x)操作。如果事务 T10 在 T9 执行 read(x) 之后执行 write(x),则从 T9 到 T10 画一条线。 Write(x) 和 write(x) 操作。如果事务 T10 在 T9 执行 write(x) 之后执行 write(x),则从 T9 到 T10 画一条线。 如果图的结果不循环,则冲突是可序列化的,这意味着调度可以序列化。我们将看两个例子: S:r1(x) r1(y) w2(x) w1(x) r2(y) 我们为每笔交易创建一个节点 对于与 r1(x) w2(x) 冲突的操作,其中 r1(x) 发生在 w2(x) 之前,请从 T1 到 T2 画一条线。 对于与 w2(x) w1(x) 冲突的操作,其中 w2(x) 发生在 w1(x) 之前,请从 T2 到 T1 画一条线。 从显示最后一个周期 T1 和 T2 的图表中,我们可以得出结论,该调度不可冲突串行化。让我们尝试使用拓扑排序从该图中推断出串行调度。 T1–>T2 行表示 T1 必须按线性顺序出现在 T2 之前。 T2 -> T1 行表明 T2 必须按线性顺序出现在 T1 之前。 因此,我们无法预测特定的序列(当图是循环时)。因此,从该图中无法获得串行时间表。 让我们尝试另一个时间表: 在查看图片之前,您可以尝试创建自己的优先级图。 由于图表不循环,因此计划冲突可以序列化。在此图上执行拓扑排序将给我们一个可能与 S1 调度冲突的串行调度。 在拓扑排序中,我们首先选择入度为0的节点,即T1。随后是 T3 和 T2。 因此,S1 是可冲突串行的,因为冲突相当于串行调度 T1 T3 T2。
|
|