并发控制(三)-- 并发调度的可串行性

并发调度的可串行性

数据库管理系统对并发事务的不同调度会产生不同的结果。那么什么样的并发调度才是正确的?
答:结果和串行调度是一样的是正确的,称为可串行化调度

可串行化调度

概念:多个事务并发执行是正确的,当且仅当其结果与按某一次序的串行地执行这些事务的结果是相同的。

可串行性 是并发事务正确调度的准则,按照这个准则一个给定的并发调度,当且仅当它是可串行化的,才认为它是正确调度。

例子: 现在两个事务
事务T1 B := A - 1 写回A
事务T2 A := B - 1 写回B

冲突可串行化调度

冲突操作: 不同事务对同一数据的读写和写写操作。
R i ( A ) R_i(A) Ri(A) W j ( A ) W_j(A) Wj(A)
W i ( A ) W_i(A) Wi(A) W j ( A ) W_j(A) Wj(A)

  1. 除读写和写写操作,其他操作都是不冲突调度
  2. 不同事务的冲突操作和同一事务的不同操作是不能交换的
    R i ( A ) R_i(A) Ri(A) W j ( A ) W_j(A) Wj(A) T i T_i Ti读A的数据会变化

一个调度在保证冲突操作次序不变的情况下通过交换两个不冲突的操作得到另一个Sc‘,如果Sc’是串行的,我们叫Sc冲突可串行化调度。
如果一个调度是冲突可串行化的,那么它一定是可串行的

例题:
现有调度
S c 1 = r 1 ( A ) w 1 ( A ) r 2 ( A ) w 2 ( A ) r 1 ( B ) w 1 ( B ) r 2 ( B ) w 2 ( B ) Sc_1 = r_1(A)w_1(A)r_2(A)w_2(A)r_1(B)w_1(B)r_2(B)w_2(B) Sc1=r1(A)w1(A)r2(A)w2(A)r1(B)w1(B)r2(B)w2(B)

总结一些规则:

  1. 不同事务,同一数据,读写,写读,写写不可交换
  2. 同一事务,不同数据,都不可交换
  3. 不同事务,不同数据,随意交换

冲突可串行化是可串行化的充分条件。不是必要条件。也就是说存在可串行化的调度不是冲突可串行化调度。

例:
T 1 = w 1 ( Y ) w 1 ( X ) T 2 = w 2 ( Y ) w 2 ( X ) T 3 = w 3 ( X ) T_1 = w_1(Y)w_1(X)\quad T_2=w_2(Y)w_2(X)\quad T_3=w_3(X) T1=w1(Y)w1(X)T2=w2(Y)w2(X)T3=w3(X)

调度 L 1 = w 1 ( Y ) w 1 ( X ) w 2 ( Y ) w 2 ( X ) w 3 ( X ) L_1 = w_1(Y)w_1(X)w_2(Y)w_2(X)w_3(X) L1=w1(Y)w1(X)w2(Y)w2(X)w3(X)是一个串行调度
调度 L 2 = w 1 ( Y ) w 2 ( Y ) w 1 ( X ) w 2 ( X ) w 3 ( X ) L_2 = w_1(Y)w_2(Y)w_1(X)w_2(X)w_3(X) L2=w1(Y)w2(Y)w1(X)w2(X)w3(X)不是以冲突可串行化调度。但它是可串行化调度,因为它的执行结果和 L 1 L_1 L1一样。

以上内容基于圣才教育数据库系统概论ppt 修改整理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

红豆怪怪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值