时间:2022-11-13 00:30:02 | 来源:信息时代
时间:2022-11-13 00:30:02 来源:信息时代
事务调度 : 对事务中所有操作的执行次序进行合理的安排,使得在保证事务ACID性质的前提下,最大程度地提高系统事务处理的效率。这里有两个基本的要求,一是调度必须是正确的,一是调度必须是高效的。如何在保证事务正确执行的前提下,最大限度地提高事务处理系统的效率是事务调度的主要课题。
事务调度不考虑一个事务内部操作之间的次序的调整,这属于程序优化的范畴。在事务调度中,假定一个事务内部的操作顺序是不可变更的,主要考虑的是事务之间操作顺序的调整。
如果多个事务依次顺序执行,即一个事务完全结束后,另一个事务才开始执行,则称这种调度方式为串行调度(serial schedule)。如果DBMS可以同时处理多个事务,交叉执行不同事务的操作,则称这样的调度为并发调度(concurrent schedule)。在单CPU系统中,某一时刻只能有一个事务占用CPU,多个事务利用分时的方法交叉地使用CPU,称为交叉并发。在多CPU系统中,可以允许多个事务同时占用CPU,称为同时并发。
对一个事务而言,在不同的执行阶段需要不同的资源,有时需要CPU,有时需要访问磁盘,有时需要通信。如果多个事务顺序执行,有些资源可能会空闲,造成系统整体效率低下。如果多个事务并发执行,可以交叉地利用这些资源,有利于提高效率。因此,商用数据库系统都采用并发调度。
对于并发调度,满足事务ACID性质(即事务的正确性)是基本的要求。由此可以推导出可串行性或者更加严格的冲突可串行性及可恢复性的要求。商用数据库系统通过引入一些特定机制和协议(例如,封锁和两阶段封锁协议),让全部事务在运行中遵循既定的协议,来保证事务调度的正确性,这种机制称为并发控制机制。
除了正确性,性能也是事务调度器要考虑的另一个重要因素。例如,避免级联回退就是提高系统整体性能的一个重要方面。通常可以用每分钟完成的有效事务数TPM(transactions per minute)来衡量。最广泛使用的测量数据库系统事务处理能力的标准是由事务处理委员会提出的TPC-C测试标准,它通过一个模拟的仓储应用来度量系统的事务处理能力。
事务调度需要对事务状态的变迁进行记录,可以用图1所示的状态变迁图来表示。
图1 事务的状态变迁图