我正在努力了解如何确定某个时间表是否可以冲突序列化
提前谢谢!
答案 0 :(得分:0)
我们可以通过分析从名为序列化图的历史记录派生的图来确定历史记录是否可以冲突序列化。
让H
成为T = \{ T_1, T_2, \ldots, T_n \}
以上的历史记录。 H
的序列化图(SG),表示为SG(H)
,是一个有向图,其节点是T
中提交的H
中的事务,其边缘都是{ {1}} T_i \to T_j
),i \neq j
的某个操作先于T_i
T_j
中H
个操作之一并与之发生冲突。
T_i \to T_j
中的每个边SC(H)
表示T_i
的至少一个操作先于T_j
&#39}之一并与之发生冲突。这表明T_i
应该在T_j
之前的任何序列历史记录中等同于H
。如果我们可以找到H_s
的序列历史记录,与SG(H)
中的所有边缘一致,则H_s
与H
冲突等效,因此H
是冲突可序列化。只要SG(H)
是非循环的,我们就可以这样做。
在形式上,我们有(冲突)可串行化理论的基本定理:
历史
H
是冲突可序列化的,当且仅当SG(H)
是非循环的时候。
注意:有关详细信息,请参阅Page 33 in Chapter 2 of Philip A. Bernstein et al.。