并发调度的可串行化

本文探讨了数据库系统的并发调度可串行化概念,强调了冲突可串行化是可串行化调度的充分条件。通过举例说明了事务并发执行的正确性,并解释了不同调度策略对结果的影响。冲突可串行化调度确保了事务执行结果与串行执行的一致性,而满足冲突可串行化并不保证是唯一可串行化调度方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

并发调度的可串行化

(本文只是来自数据库系统概述,自己总结,如果看过这本书的同学可以不用看这篇文章。)

可串行化调度

定义:多个事务的并发执行是正确的,当且仅当其结果与按某一次序的串行化调度的结果是一样的,成这种调度为可串行化调度

现在有两个事务,分别包含以下操作:
事务T1:读B:A=B+1;写回A;
事务T2:读A:B=A+1;写回B。

假设A、B的初值均为2,按T1-T2次序的执行结果为:A=3,B=4;按T2-T1的执行结果为:B=3,A=4.

下图给出了不同的调度策略。(图片来源于数据库)
从下图可以看出,C不是可串行化调度,因为它的执行结果与串行化(此处有2中串行化执行方案)的执行结果不相同。但是D是可串行化调度的。理由和C正好相反。

在这里插入图片描述

冲突操作

冲突操作主要指的是不同的事务对同一个数据的读写操作以及写写操作。其他操作都是不冲突的。

冲突可串行化调度

一个调度Sc0在保证冲突操作的次序不变的情况下,通过交换两个事务不冲突操作次序得到另一个调度Sc1,如果Sc1是串行的,称调度Sc为冲突可串行化的调度。**若一个调度室冲突可串行化,则一定是可串行化调度。**因此可以使用这种方法来判断一个调度是否是冲突可串行化的。

通过例题来学习什么是冲突可串行化以及不是冲突可串行化的。

在这里插入图片描述

在这里插入图片描述

注意:冲突可串行化调度是可串行化调度的充分条件,不是必要条件。还有不满足冲突可串行化条件的可串行调度。(如上面的例子L2)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值