APP下载

浅析并发事务的调度

2020-10-14徐爱芸

青年生活 2020年19期

徐爱芸

摘要:事务是并发控制的基本单位,多个事务的并发操作可能会破坏事务的ACID特性,为了保证事务的隔离性和一致性,DBMS必须对并发操作进行正确调度,多个事务并发执行时,对并发操作的调度是随机的,只有可串行化调度才能保证并发执行的正确性。

关键词:事务;并发执行;调度策略;可串行化调度

1 前言

调度(Schedule)是对若干事务的操作按照它们的执行时间安排的一个操作序列(顺序),同一个事务中的操作在调度中的执行顺序是固定不变的。

2 串行调度

若调度S中的多个事务依次执行,每个事务T中的操作都是连续执行的,这种调度是串行调度。将所有事务串行起来的调度策略一定是正确的调度策略。

现在有两个事务,分别包含下列操作:

事务T1:读B;A=B+1;写回A;        事务T2:读A;B=A+1;写回B;

假设:A,B的初值均为2。

则:若T1->T2,A=3   B=4;          若T2->T1,A=4   B=3;

无论哪种串行调度,结果都是正确的。

串行执行由于每个时刻只有一个事务运行,其它事务必须等到这个事务结束以后方能运行,因此不能充分利用系统资源,发挥数据库共享资源的特点。

3 并发调度

若多个事务按一定调度策略同时执行,这种交叉执行称为并发执行。由于计算机系统对并发操作的调度是随机的,而且不同的调度可能会产生不同的结果,事务的并发执行并不能保证事务的正确性。什么样的并发操作调度是正确的?

3.1 可串行化(Serializable)调度

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

登录APP查看全文