18143453325 在线咨询 在线咨询
18143453325 在线咨询
所在位置: 首页 > 营销资讯 > 信息时代 > 事务调度(数据库)

事务调度(数据库)

时间: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 事务的状态变迁图


事务的调度包括以下几种状态:
(1)活动状态:在事务开始执行后,立即进入“活动”(active)状态。在活动状态,事务将执行对数据库的读/写操作。但是“写操作”并不立即写到磁盘上,很可能暂时存放在系统缓冲区中。
(2)部分提交状态: 事务的最后一个语句执行后,进入“部分提交”(partially committed)状态。这表明事务执行已经结束,但是对数据库的修改,还在内存的系统缓冲区中,所以还不能说事务真正的结束。
(3)失败状态:处于活动状态的事务还没到达最后一个语句就中止执行,此时称事务进入“失败”(failed)状态。失败状态还可以从部分提交状态转来。在部分提交状态,虽然事务的语句执行结束,但是数据库的修改可能未写到数据库。如果此时系统出故障,事务也进入“失败”状态。
(4)异常中止状态:处于失败状态的事务,很可能已对磁盘中的数据进行了一部分的修改,为了保证事务的原子性,应该撤销(undo)该事务对数据库已作的修改。对事务的撤销操作称为事务的回退(rollback)。事务的回退由数据库管理系统的恢复子系统执行。回退后事务进入“异常中止”(aborted)状态。
在事务进入异常中止状态时,系统有两种选择:一是重新启动事务。由硬件或软件错误造成的、而不是事务内部逻辑造成的异常中止时,可以重新启动事务。重新启动的事务是一个新的事务。二是取消事务。如果发现事务的内部逻辑有错误,那么应该取消原事务,提示用户重新改写应用程序。
(5)提交状态:事务进入部分提交状态后,系统将检查该事务与并发事务是否发生干扰现象(即是否发生错误)。在检查通过后,系统执行提交(commit)操作,把对数据库的修改全部写到磁盘上,并通知系统,事务成功地结束,事务进入“提交”(committed)状态。
事务的提交状态和异常中止状态都是事务的结束状态。

74
73
25
news

版权所有© 亿企邦 1997-2022 保留一切法律许可权利。

为了最佳展示效果,本站不支持IE9及以下版本的浏览器,建议您使用谷歌Chrome浏览器。 点击下载Chrome浏览器
关闭