浅析并发事务的调度
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)调度
多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行地执行它们时的结果相同,称这种调度为可串行化的调度,可串行化调度是并行事务正确性的唯一准则。……p>
登录APP查看全文
