优先图(Precedence graph),也称为前趋图,是用于表示特定调度 S 中事务之间冲突依赖关系的一种有向图。
优先图 P(S) 的定义如下:
- 节点(Nodes):图中的每个节点代表调度 S 中的一个事务。
- 边(Arcs):如果在调度 S 中,事务 Ti 的一个操作
pi(A)
在事务 Tj 的一个操作qj(A)
之前发生 (pi(A) <S qj(A)
),并且这两个操作 冲突,则从 Ti 到 Tj 画一条有向边。冲突操作的条件是这两个操作访问同一个数据项 A,且其中至少一个操作是写操作 [14, 20]。
简而言之,优先图通过有向边连接事务,边表示 Ti 先于 Tj 完成了一个冲突操作。
优先图的主要作用是判断一个调度是否是 冲突可串行化。如果一个调度的优先图是无环的,那么该调度就是冲突可串行化的,意味着它的执行效果与某个串行调度的效果是等价的 [24, 25]。