数据库如何找冲突可串行化等价的串行化方案???看不懂书上的内容,怎么画优先图啊??求详解或视频 谢谢
1个回答
展开全部
首先确定冲突操作:
同一事务的两个动作冲突:ri(X);wi(X),
不同事务对同一数据库元素的写冲突:wj(X);wi(X),
不同事务对同一数据库元素的读和写冲突:ri(X);wj(X),
这些都是冲突操作:r1(A) w1(A) , r1(A) w2(A) , w2(A) r1(A) , w1(A) w2(A),
优先图的画法如下:
节点: S中的事务
弧: Ti ->Tj whenever
- pi(A), qj(A) 涉及同一数据库元素
- pi(A) <S qj(A)
- pi, qj 至少一个是写动作
如果存在环, S 不是冲突可串行的, 否则, S 是冲突可串行的
例如S=r1(A)w1(A)r2(A)w2(A)r1(B)w1(B)r2(B)w2(B)
其中w1(A)r2(A)得出T1 ->T2 ,w1(B)r2(B)得出T1 ->T2
无环,所以是可串行调度
再如:S1=r2(A);r1(B);w2(A);r2(B);r3(A);w1(B);w3(A);W2(B)
r2(A);w3(A);得出T2->T3
r1(B); W2(B)得出T1 ->T2
r2(B);w1(B);得出T2 ->T1
有环,S1 不是冲突可串行化的
同一事务的两个动作冲突:ri(X);wi(X),
不同事务对同一数据库元素的写冲突:wj(X);wi(X),
不同事务对同一数据库元素的读和写冲突:ri(X);wj(X),
这些都是冲突操作:r1(A) w1(A) , r1(A) w2(A) , w2(A) r1(A) , w1(A) w2(A),
优先图的画法如下:
节点: S中的事务
弧: Ti ->Tj whenever
- pi(A), qj(A) 涉及同一数据库元素
- pi(A) <S qj(A)
- pi, qj 至少一个是写动作
如果存在环, S 不是冲突可串行的, 否则, S 是冲突可串行的
例如S=r1(A)w1(A)r2(A)w2(A)r1(B)w1(B)r2(B)w2(B)
其中w1(A)r2(A)得出T1 ->T2 ,w1(B)r2(B)得出T1 ->T2
无环,所以是可串行调度
再如:S1=r2(A);r1(B);w2(A);r2(B);r3(A);w1(B);w3(A);W2(B)
r2(A);w3(A);得出T2->T3
r1(B); W2(B)得出T1 ->T2
r2(B);w1(B);得出T2 ->T1
有环,S1 不是冲突可串行化的
来自:求助得到的回答
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询