当前位置: 首页 > 专利查询>苏州大学专利>正文

一种并发事务的调度方法和相关装置制造方法及图纸

技术编号:7123667 阅读:218 留言:0更新日期:2012-04-11 18:40
本发明专利技术实施例公开了一种并发事务的调度方法和相关装置,用于对事务进行可串行化预判定。本发明专利技术实施例方法包括:获取提交队列中每个事务的资源集合;将提交队列中的事务送入等待队列;根据等待队列中每个事务的资源集合,逐一判断等待队列中每个的事务与执行队列中的任一事务是否存在依赖关系,若否,则将与执行队列中的任一事务无依赖关系的等待队列中的事务送入准执行队列;将准执行队列分成可执行队列和不可执行队列,并将不可执行队列中的事务送入等待队列,将可执行队列中的事务发送至CPU。通过实行本发明专利技术的技术方案,能够避免死锁现象的出现,从而提高了系统整体运行的效率和性能。

【技术实现步骤摘要】

本专利技术涉及数据库
,尤其涉及一种并发事务的调度方法和相关装置
技术介绍
数据库管理系统是为适应数据处理的需要而发展起来的一种较为理想的数据处理核心机构。数据库管理系统中访问并可能更新数据库中各种数据的一个程序执行单元称为事务,系统中事务的执行靠中央处理器(Central Processing Unit,CPU)来完成。衡量数据库管理系统性能的一个重要指标就是该系统能否为多用户维持高事务吞吐量和低响应时间。另外,数据库管理系统的高事务吞吐量带来数据一致性问题,所谓数据一致性问题就是指多个事务并发执行时,如果对同一项数据进行操作,那么操作结果可能与该多个事务非并发执行时产生的操作结果不一致。所有引起数据一致性问题的原因归结为并发事务之间存在依赖关系,当一个事务或一条结构化查询语言(Structured Query Language, SQL) 语句与另一个事务或另一条SQL语句之间存在共享数据对象,且两个事务或两条SQL语句对共享数据对象有写操作,则可判定两个事务或两条SQL语句之间存在依赖关系。目前,解决数据一致性问题关键在于对并发事务进行可串行化处理,最常用于处理并发事务可串行化的方法是加锁。所谓加锁,即事务对某个数据库中的资源存取前,先向系统提出请求并锁定该资源,该事务获得锁后,即取得对该资源中数据的控制权,在该事务释放锁之前,其他事务不能更新此数据,该事务结束时,即释放被该锁定的资源。但是,加锁机制实现的是强制性可串行化处理,若加锁机制失效,就会会导致事务执行出现死锁现象,死锁出现后,需要等待一段时间系统才能检测出来,并且至少需要有一个事务放弃执行并回滚到执行前的状态才能解开死锁,降低了系统整体运行的效率和性能。
技术实现思路
本专利技术实施例提供了一种并发事务的调度方法和相关装置,用于在事务执行前对所述事务进行可串行化预判定,并将判定后可串行化的事务送入CPU中执行,避免死锁现象的出现,从而提高了系统整体运行的效率和性能。一种并发事务的调度方法,包括获取提交队列中每个事务的资源集合;将所述提交队列中的事务送入等待队列;根据所述等待队列中每个事务的资源集合,逐一判断所述等待队列中每个的事务与执行队列中的任一事务是否存在依赖关系,若否,则将与执行队列中的任一事务无依赖关系的等待队列中的事务送入准执行队列;将所述准执行队列分成可执行队列和不可执行队列,并将所述不可执行队列中的事务送入所述等待队列,将所述可执行队列中的事务发送至中央处理器CPU,所述可执行队列中的两两事务之间不存在依赖关系,所述不可执行队列中的事务与所述可执行队列中的至少一个事务存在依赖关系。一种用于并发事务调度的装置,包括资源集合获取模块,用于获取提交队列中每个事务的资源集合;等待队列管理模块,用于将所述提交队列中的事务送入等待队列;依赖关系判断模块,用于根据所述等待队列中每个事务的资源集合,逐一判断所述等待队列中每个的事务与执行队列中的任一事务是否存在依赖关系,若否,则将与执行队列中的任一事务无依赖关系的等待队列中的事务送入准执行队列;事务分离模块,用于将所述准执行队列分成可执行队列和不可执行队列,并将所述不可执行队列中的事务送入所述等待队列,将所述可执行队列中的事务发送至中央处理器CPU,所述可执行队列中的两两事务之间不存在依赖关系,所述不可执行队列中的事务与所述可执行队列中的至少一个事务存在依赖关系。从以上技术方案可以看出,本专利技术实施例具有以下优点将提交队列中的事务送入等待队列中,通过获取等待队列中每个事务的资源集合,逐一判断所述等待队列中的每个事务与执行队列中的任一事务是否存在依赖关系,若否,则将所述等待队列中的事务送入准执行队列,再根据对依赖关系的判断,将所述准执行队列中的事务分成可执行队列和不可执行队列。如此处理后的可执行队列中的事务就是可串行化的,所以将可执行队列中的事务送入CPU中执行就不会出现数据一致性问题,因此不须使用加锁机制,也就不会出现死锁现象,从而提高了系统整体运行的效率和性能。附图说明图1为本专利技术第一实施例并发事务调度方法基本流程图;图2为本专利技术第一实施例事务流向图;图3为本专利技术第二实施例并发事务调度方法详细流程图;图4为本专利技术第三实施例并发事务调度方法详细流程图;图5为本专利技术第四实施例并发事务调度方法详细流程图;图6为本专利技术第四实施例举例事务的资源前趋图;图7为本专利技术第五实施例用于并发事务调度的装置基本结构图;图8为本专利技术第六实施例用于并发事务调度的装置详细结构图。具体实施例方式本专利技术提供了一种并发事务的调度方法,用于在事务执行前对所述事务进行可串行化预判定,并将判定后可串行化的事务送入CPU中执行,避免死锁现象的出现。本方法在数据库管理系统中执行队列中有事务完成或有事务被送入提交队列或两者同时发生时, 结束本轮调度,进行下一轮调度。另外,本专利技术还提供与所述并发事务的调度方法相关的装置。以下分别进行详细的说明。本专利技术第一实施例的并发事务的调度方法基本流程请参见图1,调度过程中事务的流向请参见图2,进行本轮调度,必须为数据库管理系统中执行队列中有事务完成或有事务被送入提交队列或两者同时发生,该调度方法主要包括步骤101、获取提交队列中每个事务的资源集合。数据库管理系统获取提交队列中每个事务的资源集合。其中,资源集合即事务中操作关键字的操作对象的集合,此步骤中获取的提交队列中每个事务的资源集合将于后续步骤中作为判断所述事务与其它队列中事务是否存在依赖关系的依据。在本实施例中,所有事务都必定先被提交到数据库管理系统中的提交队列,再经由提交队列被送入其它队列中,而获取事务资源集合的操作在是在本步骤中完成,因此在每一轮调度中,其它队列中的事务的资源集合是已知的,因为在本轮调度之前的调度中,其它队列中的事务都曾经作为提交队列中的事务被系统获取过资源集合。102、将提交队列中的事务送入等待队列。数据库管理系统将所述提交队列中的事务送入等待队列中,形成新的等待队列, 所述事务的流向如图2示,等待队列中的事务等待系统的调度。103、判断等待队列中每个的事务与执行队列中的任一事务是否存在依赖关系,若否,则将与执行队列中的任一事务无依赖关系的等待队列中的事务送入准执行队列,若是, 则将等待队列中的事务停留在等待队列中,事务的流向如图2示。其中,根据步骤101所述,等待队列中的事务的资源集合无须重新获取,因为等待队列中的事务都曾经作为提交队列中的事务被系统获取过资源集合。104、将准执行队列分成可执行队列和不可执行队列,并将不可执行队列中的事务送入等待队列,将可执行队列中的事务发送至CPU。其中,所述事务的流向如图2示,所述可执行队列中的两两事务之间不存在依赖关系,所述不可执行队列中的事务与所述可执行队列中的至少一个事务存在依赖关系。本实施例方法通过获取等待队列中每个事务的资源集合,逐一判断所述等待队列中的每个事务与执行队列中的任一事务是否存在依赖关系,若否,则将所述等待队列中的事务送入准执行队列,再根据对准执行队列中事务的依赖关系的判断,将所述准执行队列分成可执行队列和不可执行队列。如此处理后的可执行队列中的事务就是可串行化的,所以将可执行队列中的事务送入CPU中执行就不会出现数据一致性问题,因此不须使用加锁本文档来自技高网
...

【技术保护点】
1.一种并发事务的调度方法,其特征在于,包括:获取提交队列中每个事务的资源集合;将所述提交队列中的事务送入等待队列;根据所述等待队列中每个事务的资源集合,逐一判断所述等待队列中每个的事务与执行队列中的任一事务是否存在依赖关系,若否,则将与执行队列中的任一事务无依赖关系的等待队列中的事务送入准执行队列;将所述准执行队列分成可执行队列和不可执行队列,并将所述不可执行队列中的事务送入所述等待队列,将所述可执行队列中的事务发送至中央处理器CPU,所述可执行队列中的两两事务之间不存在依赖关系,所述不可执行队列中的事务与所述可执行队列中的至少一个事务存在依赖关系。

【技术特征摘要】

【专利技术属性】
技术研发人员:赵雷
申请(专利权)人:苏州大学
类型:发明
国别省市:32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1