深入理解数据库并发控制原理
作者: , 出处:IT专家网社区, 责任编辑: 李书琴,
2007-12-11 01:01
事务之间的相互影响可能导致数据库状态的不一致,即使各个事务能保持状态的正确性,而且也没有任何故障发生。因此,不同事务中各个步骤的执行顺序必须以某种方式进行规范。控制这些步骤的功能由DBMS的调度器部件完成,而保证并发执行的事务能保持一致性的整个过程称为并发控制。
2.2 优先图及冲突可串行化判断
已知调度S,其中涉及事务T1和T2,可那个还有其他事务,我们说T1优先于T2,写作T1 1)在S中A1在A2前; 2)A1和A2都涉及同一数据库元素;并且 3)A1和A2至少有一个是写动作。 这正是我们不能交换A1和A2顺序的情况。因此,在任何冲突等价于S的调度中,A1将出现在A2的前面。所以,如果这些调度中有一个是串行调度,那么该调度必然是T1在T2前。 我可以使用优先图概括这样的先后次序。优先图中的结点是调度S中的事务。如果Ti 例7 下面的调度S涉及三个事务T1、T2和T3。 S:r2(A);r1(B);w2(A);r3(A);w1(B);w3(A);r2(B);w2(B) 判断调度S是否是冲突可串行化有一条简单的规则: 1)构造S的优先图,并判断其中是否有环。 如果有,那么S不是冲突可串行化的。如果该图是无环的,那么S是冲突可串行化的。 例8 考虑调度: S1: r2(A);r1(B);w2(A); r2(B);r3(A);w1(B);w3(A); w2(B) 该图中显然有环,我们断定S1不是冲突可串行化的。 3.使用锁的可串行性实现 设想以一种不受约束的方式进行其动作的事务的一个集合。这些动作将形成以个调度,但是这一调度不大可能是可串行化的。

- 本文关键词:

