一种大事务执行方法及其系统与流程

文档序号:12271074阅读:235来源:国知局
一种大事务执行方法及其系统与流程

本发明涉及业务处理技术领域,特别是涉及一种大事务执行方法及其系统。



背景技术:

事务是业务处理场景中常见的处理单元,一个事务中包括一系列动作,事务开始执行后,会执行这一系列的动作,直到整个事务动作完成时,才会对用户有所响应。而执行过程中用户无法进行与此事务相关的动作,其他事务也无法调用作为该事务执行时的数据来源的数据库。

该种情况下,当事务为大事务时,即一个事务中的动作很多,需要执行很长时间时,会导致大事务锁定的大量的数据库资源均无法调用,且系统不能及时回复用户响应,响应性差,处理时间过长。

因此,如何提供一种响应性好的大事务执行方法及其系统是本领域技术人员目前需要解决的问题。



技术实现要素:

本发明的目的是提供一种大事务执行方法及其系统,能够对大事务进行拆分,并按照子事务之间的依赖关系,选择性地来分别执行各个子事务,然后在子事务执行完毕后回复用户响应,从而提升业务处理时的响应性。

为解决上述技术问题,本发明提供了一种大事务执行方法,所述大事务预先拆分为若干个子事务,且若干个所述子事务之间预先设置有依赖关系,所述方法包括:

分别获取待处理子事务以及与所述待处理子事务具有依赖关系的其他子事务的预设事务码以及当前状态码;

按照预设调度策略对所述待处理子事务和所述其他子事务的预设事务码和当前状态码进行分析,依据分析结果判断所述待处理子事务是否可执行;

若可以,执行所述待处理子事务,并修改所述待处理子事务的当前状态码的状态信息以及回复用户响应。

优选地,还包括:

根据预设的数据库运行压力表,确定所述待处理子事务对应的源数据库的当前压力数据;其中,所述源数据库为对应的子事务执行时的数据来源;

相应的,所述按照预设调度策略对所述待处理子事务和所述其他子事务的预设事务码和当前状态码进行分析具体为:

按照所述预设调度策略对所述待处理子事务对应的当前压力数据、所述待处理子事务和所述其他子事务的预设事务码和当前状态码进行分析。

优选地,每个所述子事务均预设有与自身一一对应的预设事务码以及当前状态码,所述当前状态码用于表征对应的子事务的当前状态。

优选地,所述当前状态为未执行状态、执行中状态以及执行完成状态中的任一种。

优选地,所述预设的数据库运行压力表的获得过程具体为:

分别确定各个所述子事务对应的源数据库;

确定具有依赖关系的各个所述子事务之间的源数据库交集情况;

获取各个所述源数据库的运行压力情况;

将各个所述子事务的预设事务码、对应的源数据库、源数据库交集情况以及源数据库的运行压力情况对应写入表格中,得到所述预设的数据库运行压力表。

优选地,所述依据分析结果判断所述待处理子事务是否可执行的过程具体为:

判断与所述待处理子事务具有依赖关系的其他子事务中是否有子事务处于执行中状态;

若有,判断处于执行中状态的子事务对应的源数据库与所述待处理子事务是否具有交集;

若有,暂缓处理所述待处理子事务;

若无,按照所述预设的数据库运行压力表判断所述待处理子事务对应的源数据库的运行压力情况是否超出预设压力阈值,若是,暂缓处理所述待处理子事务;

若否,所述待处理子事务可执行。

为解决上述技术问题,本发明还提供了一种大事务执行系统,所述大事务预先拆分为若干个子事务,且若干个所述子事务之间预先设置有依赖关系,所述系统包括:

第一获取模块,用于分别获取待处理子事务以及与所述待处理子事务具有依赖关系的其他子事务的预设事务码以及当前状态码;

分析判断模块,用于按照预设调度策略对所述待处理子事务和所述其他子事务的预设事务码和当前状态码进行分析,依据分析结果判断所述待处理子事务是否可执行;若可以,触发执行模块;

所述执行模块,用于执行所述待处理子事务,并修改所述待处理子事务的当前状态码的状态信息以及回复用户响应。

优选地,还包括:

第二获取模块,用于根据预设的数据库运行压力表,确定所述待处理子事务对应的源数据库的当前压力数据;其中,所述源数据库为对应的子事务执行时的数据来源;

相应的,所述分析判断模块具体用于按照所述预设调度策略对所述待处理子事务对应的当前压力数据、所述待处理子事务和所述其他子事务的预设事务码和当前状态码进行分析,依据分析结果判断所述待处理子事务是否可执行;若可以,触发所述执行模块。

本发明提供了一种大事务执行方法及其系统,将大事务预先拆分为若干个子事务,且若干个所述子事务之间预先设置有依赖关系;当需要执行某个子事务时,获取该待处理子事务以及与其具有依赖关系的其他子事务的预设事务码和当前状态码,并按照预设调度策略进行分析判断,来确定该待处理子事务是否可执行。可见,本发明不需要将整个大事务一次性完成,而是可以按照子事务之间的依赖关系,选择性地来分别执行各个子事务,并在子事务执行完毕后回复用户响应。即本发明对大事务进行了拆分,提升了业务处理时的响应性。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对现有技术和实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明提供的一种大事务执行方法的过程的流程图;

图2为本发明提供的一种大事务执行系统的结构示意图。

具体实施方式

本发明的核心是提供一种大事务执行方法及其系统,能够对大事务进行拆分,并按照子事务之间的依赖关系,选择性地来分别执行各个子事务,然后在子事务执行完毕后回复用户响应,从而提升业务处理时的响应性。

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明提供了一种大事务执行方法,大事务预先拆分为若干个子事务,且若干个子事务之间预先设置有依赖关系,参见图1所示,图1为本发明提供的一种大事务执行方法的过程的流程图;该方法包括:

步骤s101:分别获取待处理子事务以及与待处理子事务具有依赖关系的其他子事务的预设事务码以及当前状态码;

步骤s102:按照预设调度策略对待处理子事务和其他子事务的预设事务码和当前状态码进行分析,依据分析结果判断待处理子事务是否可执行;

步骤s103:若可以,执行待处理子事务,并修改待处理子事务的当前状态码的状态信息以及回复用户响应。

作为优选地,该方法还包括:

根据预设的数据库运行压力表,确定待处理子事务对应的源数据库的当前压力数据;其中,源数据库为对应的子事务执行时的数据来源;

相应的,按照预设调度策略对待处理子事务和其他子事务的预设事务码和当前状态码进行分析具体为:

按照预设调度策略对待处理子事务对应的当前压力数据、待处理子事务和其他子事务的预设事务码和当前状态码进行分析。

其中,上述增加的步骤与步骤s101之间没有先后顺序之分,也可同时进行,本发明对此不作限定。

具体的,每个子事务均预设有与自身一一对应的预设事务码以及当前状态码,当前状态码用于表征对应的子事务的当前状态。

可以理解的是,这里的预设事务码是用于进行子事务触发使用的,并且预设事务码中还包括有该子事务对应的源数据库的信息。当前状态码能够表征子事务当前的状态,进而据此判断子事务对应的源数据库是否处于锁定状态。

进一步可知,当前状态为未执行状态、执行中状态以及执行完成状态中的任一种。当然,这里还可包括其他状态,本发明对此不做限定,可根据实际需要自行设定。

具体的,预设的数据库运行压力表的获得过程具体为:

分别确定各个子事务对应的源数据库;

确定具有依赖关系的各个子事务之间的源数据库交集情况;

获取各个源数据库的运行压力情况;

将各个子事务的预设事务码、对应的源数据库、源数据库交集情况以及源数据库的运行压力情况对应写入表格中,得到预设的数据库运行压力表。

其中,这里的运行压力情况为源数据库所处的服务器的运行压力情况,具体包括内存的存储利用率、服务器对应的硬件利用率以及锁机制中的锁利用率等。这里的数据库运行压力表采用表格形式,同一个子事务的预设事务码、对应的源数据库以及源数据库的运行压力情况写于同一行。当然,以上仅为优选实施例,这里的数据库运行压力表的文件类型以及子事务的数据排列方式本发明并不做限定。

具体的,依据分析结果判断待处理子事务是否可执行的过程具体为:

步骤s301:判断与待处理子事务具有依赖关系的其他子事务中是否有子事务处于执行中状态;

步骤s302:若有,判断处于执行中状态的子事务对应的源数据库与待处理子事务是否具有交集;若有,进入步骤s305;若无,进入步骤s303;

步骤s303:按照预设的数据库运行压力表判断待处理子事务对应的源数据库的运行压力情况是否超出预设压力阈值,若是,进入步骤s305;若否,进入步骤s304;

步骤s304:待处理子事务可执行;

步骤s305:暂缓处理待处理子事务。

当然,以上步骤仅为一种优选方案,工作人员也可采用其他判断顺序或其他判断内容,本发明对此不做限定。

本发明提供了一种大事务执行方法,将大事务预先拆分为若干个子事务,且若干个子事务之间预先设置有依赖关系;当需要执行某个子事务时,获取该待处理子事务以及与其具有依赖关系的其他子事务的预设事务码和当前状态码,并按照预设调度策略进行分析判断,来确定该待处理子事务是否可执行。可见,本发明不需要将整个大事务一次性完成,而是可以按照子事务之间的依赖关系,选择性地来分别执行各个子事务,并在子事务执行完毕后回复用户响应。即本发明对大事务进行了拆分,提升了业务处理时的响应性。

本发明还提供了一种大事务执行系统,大事务预先拆分为若干个子事务,且若干个子事务之间预先设置有依赖关系,参见图2所示,图2为本发明提供的一种大事务执行系统的结构示意图。该系统包括:

第一获取模块11,用于分别获取待处理子事务以及与待处理子事务具有依赖关系的其他子事务的预设事务码以及当前状态码;

分析判断模块12,用于按照预设调度策略对待处理子事务和其他子事务的预设事务码和当前状态码进行分析,依据分析结果判断待处理子事务是否可执行;若可以,触发执行模块13;

执行模块13,用于执行待处理子事务,并修改待处理子事务的当前状态码的状态信息以及回复用户响应。

作为优选地,该系统还包括:

第二获取模块14,用于根据预设的数据库运行压力表,确定待处理子事务对应的源数据库的当前压力数据;其中,源数据库为对应的子事务执行时的数据来源;

相应的,分析判断模块12具体用于按照预设调度策略对待处理子事务对应的当前压力数据、待处理子事务和其他子事务的预设事务码和当前状态码进行分析,依据分析结果判断待处理子事务是否可执行;若可以,触发执行模块13。

本发明提供了一种大事务执行系统,将大事务预先拆分为若干个子事务,且若干个子事务之间预先设置有依赖关系;当需要执行某个子事务时,获取该待处理子事务以及与其具有依赖关系的其他子事务的预设事务码和当前状态码,并按照预设调度策略进行分析判断,来确定该待处理子事务是否可执行。可见,本发明不需要将整个大事务一次性完成,而是可以按照子事务之间的依赖关系,选择性地来分别执行各个子事务,并在子事务执行完毕后回复用户响应。即本发明对大事务进行了拆分,提升了业务处理时的响应性。

需要说明的是,在本说明书中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1