数据库冲突可串行化前趋图画法

1.概念

为了描述一个程序的各部分(程序段或语句)间的依赖关系,或者是一个大的计算的各个子任务间的因果关系,我们常常采用前趋图方式。前趋图中的每个结点可以表示一条语句、一个程序段或一个进程,结点间的有向边表示两个结点之间存在的偏序(Partial Order)或前趋关系(Precedence Relation)“→”。


2.冲突可串行化简介

a.可串行化调度

多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行执行这些事务时的结果相同,称这种调度策略为可串行化调度。
可串行性是并发事务正确调度的准则。

b.冲突可串行化调度

一个调度S在保证冲突操作的次序不变的情况下,通过交换两个事物不冲突操作的次序得到另一个调度S',如果S'是串行的,称调度S为冲突可串行化的调度。

c.冲突操作

不同的事务对同一数据的读写操作和写写操作。

同一事务的两个动作冲突: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)


3.前趋图画法

节点:  S中的事务

弧:  Ti ->Tj whenever

- pi(A),qj(A) 涉及同一数据库元素

- pi(A)<qj(A)

- pi, qj 至少一个是写动作


4.判断是否冲突可串行化

如果存在环,   S 不是冲突可串行的, 否则, S 是冲突可串行的


5.举个栗子

例如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

无环,故S是可串行调度


6.再举一个

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 不是冲突可串行化的


  • 13
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值