CN106570027A - 一种事务型任务处理方法及装置 - Google Patents

一种事务型任务处理方法及装置 Download PDF

Info

Publication number
CN106570027A
CN106570027A CN201510654810.3A CN201510654810A CN106570027A CN 106570027 A CN106570027 A CN 106570027A CN 201510654810 A CN201510654810 A CN 201510654810A CN 106570027 A CN106570027 A CN 106570027A
Authority
CN
China
Prior art keywords
task
attribute
current transaction
transaction type
type task
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201510654810.3A
Other languages
English (en)
Other versions
CN106570027B (zh
Inventor
季荣姿
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced New Technologies Co Ltd
Advantageous New Technologies Co Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201510654810.3A priority Critical patent/CN106570027B/zh
Publication of CN106570027A publication Critical patent/CN106570027A/zh
Application granted granted Critical
Publication of CN106570027B publication Critical patent/CN106570027B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请实施例公开了一种事务型任务处理方法和装置。该方法包括:接收当前事务型任务,根据所述当前事务型任务查询当前事务型任务对应的数据库的锁对象的状态属性,如果所述状态属性显示为完成,则执行所述当前事务型任务,并将所述状态属性修改为运行,所述锁对象包含事务型任务执行状态的状态属性,根据当前事务型任务执行情况提交所述当前事务型任务。本申请实施例在处理事务型任务时,通过使用本申请提供的锁对象解决了事务型任务的并发执行的问题,由于锁对象并不依赖数据库中的业务数据,因此解决了现有技术中,数据库锁机制依赖于数据库自身的业务数据的问题。

Description

一种事务型任务处理方法及装置
技术领域
本申请涉及计算机任务处理技术领域,尤其涉及一种事务型任务处理方法及装置。
背景技术
随着计算机信息技术的发展,分布式***中出现了越来越多的事务型任务。事务型任务对数据库进行一系列操作,这些操作作为一个不可分割的整体,要么全部执行,要么全部不执行。当存在多个事务型任务并发执行时,数据库的操作结果可能会出现错误。例如,在事务型任务A对数据库执行十次加1操作并获取运算结果的同时,事务型任务B对数据库执行十次减1操作,这将可能由于事务型任务B的执行,导致事务型任务A获取到错误的结果。
为解决多个事务型任务并发执行的问题,现有技术采用了数据库锁机制。数据库锁机制基于数据库内的数据构建数据库锁,并通过数据库锁来调节多个事务型任务并发执行的机制。也就是在事务型任务开始前,***将数据库中的业务数据作为数据库锁,一个事务型任务到来时,先获取数据库锁再执行,在事务型任务处理结束后释放数据库锁,然后,其它事务型任务才能够重新获取数据库锁并执行。
由此可见,数据库锁机制能够解决多个事务型任务并发执行的问题,确保多个事务型任务并发执行过程中的数据准确。但是,数据库锁机制严重依赖于数据库自身的业务数据,如果数据库中没有适合作为数据库锁的业务数据,则数据库锁机制将难以使用。另外,事务型任务获得数据库锁之后,如果该事务型任务的执行十分缓慢,则会造成其它事务型任务的长时间等待。
发明内容
本申请实施例提供一种事务型任务处理方法和装置,用于处理数据库中的事务型任务。
本申请实施例采用下述技术方案:
一种事务型任务处理方法,其特征在于,包括:
接收当前事务型任务;
根据所述当前事务型任务查询当前事务型任务对应的数据库的锁对象的状态属性,如果所述状态属性显示为完成,则执行所述当前事务型任务,并将所述状态属性修改为运行,所述锁对象包含事务型任务执行状态的状态属性;
根据当前事务型任务执行情况提交所述当前事务型任务。
优选的,所述方法还包括:
在分布式***中构建记录,所述记录至少包含用于确定事务型任务状态属性的字段;
将所述记录映射到所述分布式***的数据库,作为与该数据库对应的锁对象。
优选的,所述锁对象存储在所述分布式***中与所述锁对象对应的数据库中,或者所述分布式***中的与所述锁对象对应的数据库之外的其它数据库中。
优选的,所述锁对象还包含任务标识属性、开始时间属性和超时阈值属性,所述任务标识属性用于记录最近执行任务的任务标识,所述开始时间属性用于记录执行所述当前事务型任务时的时间,所述超时阈值属性指处理任务能用的最长时间,所述方法还包括:
如果所述状态属性显示为运行,则判断所述锁对象的所述任务标识所记录的任务的执行时间是否大于所述超时阈值属性的值,若是,则执行所述当前事务型任务。
优选的,所述方法还包括:
判断所述当前事务型任务的执行时间是否大于超时阈值属性的值,若是,则回滚所述当前事务型任务;若否,则根据执行情况提交所述当前事务型任务。
优选的,所述任务的执行时间具体为当前时间与所述任务开始时所述锁对象的所述开始时间属性所记录的时间之差。
优选的,所述锁对象还包含超时次数属性和超时次数阈值属性,所述超时次数属性用于记录事务型任务执行超时的次数,所述超时次数阈值属性指超时次数属性的最大值,在根据执行情况提交所述当前事务型任务前,所述方法还包括:
判断当前事务型任务的执行时间是否大于超时阈值属性的值,若是,则回滚所述当前事务型任务,并增大超时次数属性的值;若否,则根据执行情况提交所述当前事务型任务。
优选的,所述增大超时次数属性的值具体为将超时次数属性的值加1。
优选的,所述方法还包括:
判断超时次数属性的值是否大于超时次数阈值属性的值,若是,则增大超时阈值属性的值,并将超时次数属性的值调整为0。
优选的,所述增大超时阈值属性的值具体为将超时阈值属性的值乘以2。
优选的,所述方法还包括:判断所述当前事务型任务是否出现错误,若是,则回滚所述当前事务型任务。
一种事务型任务处理装置,其特征在于,包括:
接收单元、判断单元、锁对象单元、执行单元和提交单元,其中:
接收单元,用于接收当前事务型任务对数据库的处理请求,所述当前事务型任务指对数据库进行处理的事务型任务;
判断单元,用于判断锁对象单元以及判断大小;
锁对象单元,用于调节数据库中多任务的并发执行,包含任务标识子单元和状态子单元,所述状态子单元的状态属性包括运行和完成;
执行单元,当所述判断单元判断锁对象单元的状态子单元的状态属性为完成时,用于执行所述当前事务型任务;
提交单元,用于根据执行情况提交所述当前事务型任务。
优选的,所述锁对象单元还包含开始时间子单元和超时阈值子单元,所述开始时间子单元用于记录执行所述当前事务型任务时的时间,所述超时阈值子单元用于设置处理任务能用的最长时间,当所述判断单元判断锁对象单元的状态子单元的状态属性为运行时:则判断单元判断所述锁对象单元的所述任务标识子单元所记录的任务的执行时间是否大于所述超时阈值子单元的值,若是,则执行单元执行所述当前事务型任务。
优选的,所述锁对象单元还包含:
超时次数子单元和超时次数阈值子单元,所述超时次数子单元用于记录任务执行超时的次数,所述超时次数阈值子单元用于设置超时次数属性的最大值,在提交单元提交所述当前事务型任务时:判断单元判断当前事务型任务的执行时间是否大于超时阈值子单元的值,若是,则增大超时次数子单元的值,并且提交单元回滚所述当前事务型任务;若否,则提交单元提交所述当前事务型任务。
本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:
本申请实施例在处理事务型任务时,通过使用本申请提供的锁对象解决了事务型任务的并发执行的问题,由于锁对象并不依赖数据库中的业务数据,因此解决了现有技术中,数据库锁机制依赖于数据库自身的业务数据的问题。另外,本申请至少一个实施例通过在锁对象中设置超时阈值属性的方式,解决了在事务型任务执行缓慢的条件下,造成其它事务型任务的长时间等待的问题。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请实施例1提供的一种事务型任务处理方法的流程示意图;
图2为本申请实施例2提供的一种事务型任务处理方法的流程示意图;
图3为本申请实施例3提供的一种事务型任务处理方法的流程示意图;
图4为本申请实施例4提供的一种事务型任务处理方法的流程示意图;
图5为本申请实施例5提供的一种事务型任务处理方法的流程示意图;
图6为本申请实施例6提供的一种事务型任务处理装置的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
以下结合附图,详细说明本申请各实施例提供的技术方案。
实施例1
实施例1提供了一种在***中进行事务型任务处理的方法。该方法的具体流程示意图如图1所示,包括下述步骤:
步骤101:接收当前事务型任务。
分布式***接收当前事务型任务。在分布式***中,当计算机需要对数据库执行一系列不可分割的操作时,需要向分布式***发送任务。这里,将这种不可分割的一系列操作构成的整体称为当前事务型任务,该当前事务型任务指对数据库进行处理的事务型任务。
在支付宝中有大量的事务型任务,分布式***根据设定的时间规则来定时执行这些任务,根据设定的时间规则,当执行某一项任务的时间点来临时,分布式***会启动该任务的处理流程。
步骤102:在分布式***中构建锁对象,然后存储所述锁对象。
在分布式***中构建记录,所述记录至少包含用于确定事务型任务状态属性的字段;将所述记录映射到所述分布式***的数据库,作为与该数据库对应的锁对象。
在分布式***中构建记录,所述记录至少包含一个字段,所述字段用于定义属性,然后将所述记录映射到所述分布式***的数据库,并作为与该数据库对应的锁对象。
本实施例中,在分布式***中构建一条记录,将所构建的记录作为锁对象,然后在所述锁对象和数据库之间建立映射关系,之后将锁对象进行存储。所构建的记录中至少包含状态字段,状态字段用于定义状态属性。记录中可以包含多个不同字段用于不同属性,使得分布式锁实现不同的功能。
特别的,所构建的记录中可以包含任务标识字段和状态字段,任务标识字段用于定义任务标识属性,状态字段用于定义状态属性。这样,所构建的锁对象包含任务标识属性和状态属性。
由于在锁对象直接通过在分布式***中通过创建记录所构建,因此并不依赖于对应数据库中的业务数据,所以在存储时既可以将锁对象存储在分布式***的对应数据库中,也可以将锁对象存储在分布式***的其它数据库中。
需要说明的是,本实施例的步骤102和步骤101之间的顺序互换时,并不影响本实施例技术效果的实现。也就是说在处理任务的过程中,也可以先在分布式***中构建锁对象,然后接收当前事务型任务。
步骤103:根据所述当前事务型任务查询当前事务型任务对应的数据库的锁对象的状态属性,如果所述状态属性显示为完成,则执行步骤104,所述锁对象包含事务型任务执行状态的状态属性。
分布式***接收当前事务型任务的任务请求后,会查询锁对象的状态属性。锁对象的状态属性可以有两种,一种为完成(FINISH),表示锁对象处于空闲状态;另一种为运行(RUNNING),表示锁对象处于锁定状态。如果查询到锁对象的状态属性为完成,则开始执行步骤104。所述锁对象包含状态属性,所述状态属性用于显示锁对象的执行状态
步骤104:执行所述当前事务型任务,并将所述状态属性修改为运行。
当锁对象的状态属性显示为完成时,执行当前事务型任务,由于当前事务型任务已经占用锁对象,所以将锁对象的状态属性更改为运行。
特别的,在任务执行的过程中通常会出现错误,这种错误可能由于任务自身造成,也有可能由外部因素造成。例如:在处理转账任务时,如果汇款方的账户的金额不够就会造成任务出错,这种任务出错是由任务自身造成;如果转账过程中出现网络中断或者断电等问题,也会引起任务出错,这些任务出错是由外部原因造成。为了防止任务执行过程中出现错误而造成数据库出错,因此,增加在任务执行过程中增加了步骤1041。
步骤1041:执行所述当前事务型任务的过程中判断所述当前事务型任务是否出现错误,若是,则回滚所述当前事务型任务。
当前事务型任务在执行过程中,需要判断是否出现错误,如果是,则将当前事务型任务回滚,也就是使数据库回到当前事务型任务执行前的状态属性,并将锁的状态属性更改为完成。
步骤105:根据当前事务型任务执行情况提交所述当前事务型任务。
如果当前事务型任务完成全部操作都没有出现错误,则提交当前事务型任务,同时将锁对象的状态属性更改为完成。
采用实施例1提供的方法,在分布式***中构建锁对象,并通过锁对象的状态属性来控制事务型任务的并发执行,从而解决了现有技术的数据库锁机制在针对非关系数据库时,由于没有适合作为数据库锁的业务数据,从而难以使用的问题。
实施例2
实施例2提供了一种事务型任务处理方法,用于处理事务型任务。该方法的具体流程示意图如图2所示,包括下述步骤:
步骤201:接收当前事务型任务。
步骤202:根据所述当前事务型任务查询当前事务型任务对应的数据库的锁对象的状态属性,如果所述状态属性显示为完成,则执行步骤2021,如果所述状态属性显示为运行,则执行步骤2022。
所述锁对象可以包含任务标识属性、状态属性、开始时间属性和超时阈值属性,所述状态属性用于显示锁对象的运行状态,所述开始时间属性用于记录执行所述当前事务型任务时的时间,所述超时阈值属性用于设置处理任务能用的最长时间,所述任务标识用于唯一表示任务。根据所述当前事务型任务处理请求查询锁对象的状态属性,锁对象的状态属性可能会出现两种情况,因此会产生两种不同的操作流程。当锁对象的状态属性显示为完成时,执行步骤2021;当锁对象的状态属性显示为运行时,执行步骤2022。
步骤2021:执行所述当前事务型任务,并记录所述当前事务型任务的任务标识和当前时间,同时将所述状态属性修改为运行。
步骤2022:判断前一任务的执行时间是否大于所述超时阈值属性的值,若是,则执行所述当前事务型任务,并记录所述当前事务型任务的任务标识和当前时间,所述前一任务指所述当前事务型任务执行之前,所述锁对象的所述任务标识所记录的事务型任务。
步骤202、步骤2021和步骤2022所提供的锁对象可以包含任务标识属性、状态属性、开始时间属性(startTime)和超时阈值属性(overTimeMinutesThresHold)四个属性,其中任务标识属性用来记录最近执行任务的任务标识,状态属性用于显示锁的执行状态,代表了锁是否空闲,开始时间属性用来记录当前事务型任务开始执行时的时间,超时阈值属性指处理任务能用的最长时间。
分布式***接收当前事务型任务后,会查询锁对象的状态属性,如果查询到锁对象的状态属性为完成,则开始执行当前事务型任务,并将当前事务型任务所携带的任务标识记录在锁对象的任务标识属性中,同时将当前时间记录在开始时间属性中,同时将锁对象的状态属性更改为运行;如果查询到锁对象的状态属性为运行,则需要比较前一任务的执行时间和超时阈值属性的值的大小,如果前一任务的执行时间大于超时阈值属性的值,则直接执行当前事务型任务,并将当前事务型任务所携带的任务标识记录在锁的任务标识属性中,同时将当前时间记录在开始时间属性中。当前时间指***当前所显示的时间,任务的执行时间指该任务已经执行的时间,具体计算方法为:当前时间与该任务开始时锁对象的开始时间属性所记录的开始时间之差。
步骤203:根据执行情况提交所述当前事务型任务。
本实施例提供的方法,在分布式***中构建锁对象,并通过锁对象的状态属性来控制事务型任务的并发执行,从而解决了现有技术的数据库锁机制在针对非关系数据库时,由于没有适合作为数据库锁的业务数据,从而难以使用的问题;另外,本实施例通过在锁对象中设置开始时间属性和超时阈值属性的方式,使得在接收当前事务型任务后,能够判断前一任务是否超时,在前一任务超时的条件下,当前事务型任务直接执行,从而解决了当事务型任务执行缓慢时,造成其它事务型任务的长时间等待的问题。
实施例3
在实施例2中提到根据执行情况提交所述当前事务型任务,其实在提交所述当前事务型任务之前,实施例还可以包括判断当前事务型任务的执行时间是否大于超时阈值属性的值。因此就构成了本申请的实施例3,本申请的实施例3与实施例2相比,除步骤203外,其它步骤均相同。参考附图3,实施例2的步骤203在本实施例中变化为:
步骤3031:判断当前事务型任务的执行时间是否大于超时阈值属性的值,若是,则执行步骤3032,若否则执行步骤3033。
步骤3032:回滚所述当前事务型任务。
步骤3033:提交所述当前事务型任务。
在当前事务型任务执行结束时,无论是回滚还是提交,本实施例还可以包括将锁的状态属性更改为完成。
采用实施例3提供的方法,能够获得以下有益效果:第一,在***中构建锁对象,并通过锁对象的状态属性来控制事务型任务的并发执行,从而解决了现有技术的数据库锁机制在针对非关系数据库时,由于没有适合作为数据库锁的业务数据,从而难以使用的问题;第二,本实施例通过在锁对象中设置开始时间属性和超时阈值属性的方式,使得在接收当前事务型任务后,能够判断前一任务是否超时,在前一任务超时的条件下,当前事务型任务直接执行,从而解决了当事务型任务执行缓慢时,造成其它事务型任务的长时间等待的问题;第三,本实施例在提交当前事务型任务前,通过判断当前事务型任务的执行时间是否大于超时阈值属性的值来决定当前事务型任务是否提交,从而防止了多任务并发执行时对数据库的更新出错的问题。
实施例4
实施例4提供了一种事务型任务处理方法,用于处理事务型任务。该方法的具体流程示意图如图4所示,包括下述步骤:
步骤401:接收当前事务型任务处理请求。
步骤402:根据所述当前事务型任务查询当前事务型任务对应的数据库的锁对象的状态属性,如果所述状态属性显示为完成,则执行步骤4021,如果所述状态属性显示为运行,则执行步骤4022。
步骤4021:执行所述当前事务型任务,并记录所述当前事务型任务的任务标识和当前时间,同时将所述状态属性修改为运行。
步骤4022:判断前一任务的执行时间是否超时,若是,则执行所述当前事务型任务,并记录所述当前事务型任务的任务标识和当前时间。
本实施例在步骤402根据所述当前事务型任务查询当前事务型任务对应的数据库的锁对象的状态属性之前,也可以包括锁对象的构建和存储;
步骤202、步骤2021和步骤2022所提供的锁对象可以包含任务标识属性、状态属性、开始时间属性、超时阈值属性、超时次数属性和超时次数阈值属性,所述状态属性用于显示锁的运行状态,所述开始时间属性用于记录任务开始执行时的时间,所述超时阈值属性用于设置处理任务能用的最长时间,所述超时次数属性用于记录任务执行超时的次数,所述超时次数阈值属性用于设置超时次数属性的最大值,所述任务标识用于唯一表示任务;
如表1锁对象的属性信息所示,本实施例的锁对象的属性信息包含任务标识属性、状态属性、开始时间属性、超时阈值属性、超时次数属性(timeOutTimes)和超时次数阈值属性(timeOutThresHold)六个属性。
表1:锁对象的属性信息
taskName startTime overTimeMinutesThresHold timeOutTimes timeOutThresHold status
本实施例的锁对象的属性中,任务标识属性用来记录最近执行任务的任务标识,状态属性显示锁对象的运行状态,代表了锁对象是否空闲,开始时间属性用来记录当前事务型任务开始执行时的时间,超时阈值属性用于设置处理任务能用的最长时间,超时次数属性用来记录***中的任务执行超时的次数,超时次数阈值属性用于设置超时次数属性的最大值。
步骤4031:判断当前事务型任务的执行时间是否大于超时阈值属性的值。
步骤4032:若是,则回滚所述当前事务型任务,并增大超时次数属性的值。
步骤4033:若否,则提交所述当前事务型任务。
当判断当前事务型任务的执行时间大于超时阈值属性的值时,可以通过多种方式增大超时次数属性的值,特别的,当判断当前事务型任务的执行时间大于超时阈值属性的值时,将任务回滚并将超时次数属性的值加1,使得所述超时次数属性能够用于统计***在一段时间内的,执行任务超时的总次数。
采用实施例4提供的方法,能够获得以下有益效果:第一,在***中构建锁对象,并通过锁对象的状态属性来控制事务型任务的并发执行,从而解决了现有技术的数据库锁机制在针对非关系数据库时,由于没有适合作为数据库锁的业务数据,从而难以使用的问题;第二,本实施例通过在锁对象中设置开始时间属性和超时阈值属性的方式,使得在接收当前事务型任务后,能够判断前一任务是否超时,在前一任务超时的条件下,当前事务型任务直接执行,从而解决了当事务型任务执行缓慢时,造成其它事务型任务的长时间等待的问题;第三,本实施例在提交当前事务型任务前,通过判断当前事务型任务的执行时间是否大于超时阈值属性的值来决定当前事务型任务是否提交,从而防止了多任务并发执行时对数据库的更新出错的问题;第四,本实施提供的锁对象,当所执行的任务超时时,通过将锁的超时次数属性的值得变化,用来统计***运行过程的超时次数。
实施例5
在实施例4中提到增大超时次数属性的值,其实在增大超时次数属性的值之后,实施例还可以包括比较超时次数属性的值和超时次数阈值属性的值的大小,从而调整超时阈值属性的值。因此就构成了本申请的实施例5,本申请的实施例5与实施例4相比,步骤504和505之外,其它步骤均相同。参考附图5:
步骤504:判断超时次数属性的值是否大于超时次数阈值属性的值。
步骤505:若是,则增大超时阈值属性的值,并将超时次数属性的值调整为0。
在一段时间内(例如:一天时间),当超时次数属性大于超时次数阈值属性的值时,说明所设置的超时阈值属性的值过小,导致任务执行频繁超时,影响任务执行的效率,因此需要增大超时阈值属性的值。其中一种优选的增大超时阈值属性的值的方式是,将超时阈值属性的值乘以2。
采用实施例5提供的方法,能够获得以下有益效果:第一,在***中构建锁对象,并通过锁对象的状态属性来控制事务型任务的并发执行,从而解决了现有技术的数据库锁机制在针对非关系数据库时,由于没有适合作为数据库锁的业务数据,从而难以使用的问题;第二,本实施例通过在锁对象中设置开始时间属性和超时阈值属性的方式,使得在接收当前事务型任务后,能够判断前一任务是否超时,在前一任务超时的条件下,当前事务型任务直接执行,从而解决了当事务型任务执行缓慢时,造成其它事务型任务的长时间等待的问题;第三,本实施例在提交当前事务型任务前,通过判断当前事务型任务的执行时间是否大于超时阈值属性的值来决定当前事务型任务是否提交,从而防止了多任务并发执行时对数据库的更新出错的问题;第四,本实施提供的锁对象,当所执行的任务超时时,通过将锁的超时次数属性的值得变化,用来统计***运行过程的超时次数;第四,本实施提供的锁对象,能够判断是否频繁超时,在频繁超时的情况下通过增大超时阈值属性的值,来提高任务执行的效率。
实施例6
基于相同的发明构思,实施例6提供了一种事务型任务处理装置,用于处理事务型任务。如图6所示,该装置600包括:接收单元601、判断单元602、锁对象单元603、执行单元604和提交单元605,其中:
接收单元601,用于接收当前事务型任务对数据库的处理请求;
判断单元602,用于判断锁对象单元以及判断大小;
锁对象单元603,用于调节数据库中多任务的并发执行,包含任务标识子单元6031和状态子单元6032,所述状态子单元的状态属性包括运行和完成;
执行单元604,当所述判断单元判断锁对象单元的状态子单元的状态属性为完成时,用于执行所述当前事务型任务;
提交单元605,用于根据执行情况提交所述当前事务型任务。
接收单元接收当前事务型任务对数据库的处理请求后,判断单元判断锁对象单元的状态子单元的状态属性,如果状态属性显示为完成,则执行单元执行当前事务型任务,最后,提交单元根据执行单元对任务的执行情况提交所述当前事务型任务。
特别的,该装置还可以包括一个监控单元606,在任务执行时用于监控任务是否出错,如果监控到任务出错,则直接由执行单元604将任务回滚。
特别的,所述锁对象单元还可以包含开始时间子单元6033和超时阈值子单元6034,所述开始时间子单元6033用于记录执行所述当前事务型任务时的时间,所述超时阈值子单元6034用于设置处理任务能用的最长时间,当所述判断单元602判断锁对象单元603的状态子单元6032的状态属性为运行时:则判断单元602判断所述锁对象单元603的所述任务标识子单元6031所记录的任务的执行时间是否大于所述超时阈值子单元6034的值,若是,则执行单元执行所述当前事务型任务,并由开始时间子单元6033记录执行所述当前事务型任务时的时间。
特别的,所述锁对象单元还可以包含:开始时间子单元6033、超时阈值子单元6034、超时次数子单元6035和超时次数阈值子单元6036,所述开始时间子单元6033用于记录执行所述当前事务型任务时的时间,所述超时阈值子单元6034用于设置处理任务能用的最长时间,所述超时次数子单元6035用于记录任务执行超时的次数,所述超时次数阈值子单元6036用于设置超时次数属性的最大值,在提交单元605提交所述当前事务型任务时:判断单元602判断当前事务型任务的执行时间是否大于超时阈值子单元6034的值,若是,则增大超时次数子单元6035的值,并且提交单元605回滚所述当前事务型任务;若否,则提交单元605提交所述当前事务型任务。另外,当增大超时次数子单元6035的值之后,判断单元602还可以判断超时次数子单元6035的值是否大于超时次数阈值子单元6036的值,若果是,则增大超时阈值子单元6034的值,并且将超时次数子单元6035的值修改为0。
采用实施例6提供的一种事务型任务处理装置,由于该装置锁单元的使用并不依赖数据库的业务数据,从而克服了现有技术的数据库锁机制对数据库业务数据依赖的问题。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (14)

1.一种事务型任务处理方法,其特征在于,包括:
接收当前事务型任务;
根据所述当前事务型任务查询当前事务型任务对应的数据库的锁对象的状态属性,如果所述状态属性显示为完成,则执行所述当前事务型任务,并将所述状态属性修改为运行,所述锁对象包含事务型任务执行状态的状态属性;
根据当前事务型任务执行情况提交所述当前事务型任务。
2.如权利要求1所述方法,其特征在于,在所述根据所述当前事务型任务查询对应锁对象的状态属性之前,所述方法还包括:
在分布式***中构建记录,所述记录至少包含用于确定事务型任务状态属性的字段;
将所述记录映射到所述分布式***的数据库,作为与该数据库对应的锁对象。
3.如权利要求2所述方法,其特征在于,所述锁对象存储在所述分布式***中与所述锁对象对应的数据库中,或者所述分布式***中的与所述锁对象对应的数据库之外的其它数据库中。
4.如权利要求1至3任意一项所述方法,其特征在于,所述锁对象还包含任务标识属性、开始时间属性和超时阈值属性,所述任务标识属性用于记录最近执行任务的任务标识,所述开始时间属性用于记录执行所述当前事务型任务时的时间,所述超时阈值属性指处理任务能用的最长时间,所述方法还包括:
如果所述状态属性显示为运行,则判断所述锁对象的所述任务标识所记录的任务的执行时间是否大于所述超时阈值属性的值,若是,则执行所述当前事务型任务。
5.如权利要求4所述方法,其特征在于,在所述根据执行情况提交所述当前事务型任务之前,所述方法还包括:
判断所述当前事务型任务的执行时间是否大于超时阈值属性的值,若是,则回滚所述当前事务型任务;若否,则根据执行情况提交所述当前事务型任务。
6.如权利要求4和5任意一项所述方法,其特征在于,所述任务的执行时间具体为当前时间与所述任务开始时所述锁对象的所述开始时间属性所记录的时间之差。
7.如权利要求5所述方法,其特征在于,所述锁对象还包含超时次数属性和超时次数阈值属性,所述超时次数属性用于记录事务型任务执行超时的次数,所述超时次数阈值属性指超时次数属性的最大值,在根据执行情况提交所述当前事务型任务前,所述方法还包括:
判断当前事务型任务的执行时间是否大于超时阈值属性的值,若是,则回滚所述当前事务型任务,并增大超时次数属性的值;若否,则根据执行情况提交所述当前事务型任务。
8.如权利要求7所述方法,其特征在于,所述增大超时次数属性的值具体为将超时次数属性的值加1。
9.如权利要求7所述的方法,其特征在于,在增大超时次数属性的值之后,所述方法还包括:
判断超时次数属性的值是否大于超时次数阈值属性的值,若是,则增大超时阈值属性的值,并将超时次数属性的值调整为0。
10.如权利要求12所述的方法,其特征在于,所述增大超时阈值属性的值具体为将超时阈值属性的值乘以2。
11.如权利要求1所述方法,其特征在于,在所述执行所述当前事务型任务时,所述方法还包括:判断所述当前事务型任务是否出现错误,若是,则回滚所述当前事务型任务。
12.一种事务型任务处理装置,其特征在于,包括:
接收单元、判断单元、锁对象单元、执行单元和提交单元,其中:
接收单元,用于接收当前事务型任务对数据库的处理请求,所述当前事务型任务指对数据库进行处理的事务型任务;
判断单元,用于判断锁对象单元以及判断大小;
锁对象单元,用于调节数据库中多任务的并发执行,包含任务标识子单元和状态子单元,所述状态子单元的状态属性包括运行和完成;
执行单元,当所述判断单元判断锁对象单元的状态子单元的状态属性为完成时,用于执行所述当前事务型任务;
提交单元,用于根据执行情况提交所述当前事务型任务。
13.如权利要求12所述装置,其特征在于,所述锁对象单元还包含开始时间子单元和超时阈值子单元,所述开始时间子单元用于记录执行所述当前事务型任务时的时间,所述超时阈值子单元用于设置处理任务能用的最长时间,当所述判断单元判断锁对象单元的状态子单元的状态属性为运行时:则判断单元判断所述锁对象单元的所述任务标识子单元所记录的任务的执行时间是否大于所述超时阈值子单元的值,若是,则执行单元执行所述当前事务型任务。
14.如权利要求13所述的装置,其特征在于,所述锁对象单元还包含:超时次数子单元和超时次数阈值子单元,所述超时次数子单元用于记录任务执行超时的次数,所述超时次数阈值子单元用于设置超时次数属性的最大值,在提交单元提交所述当前事务型任务时:判断单元判断当前事务型任务的执行时间是否大于超时阈值子单元的值,若是,则增大超时次数子单元的值,并且提交单元回滚所述当前事务型任务;若否,则提交单元提交所述当前事务型任务。
CN201510654810.3A 2015-10-10 2015-10-10 一种事务型任务处理方法及装置 Active CN106570027B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510654810.3A CN106570027B (zh) 2015-10-10 2015-10-10 一种事务型任务处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510654810.3A CN106570027B (zh) 2015-10-10 2015-10-10 一种事务型任务处理方法及装置

Publications (2)

Publication Number Publication Date
CN106570027A true CN106570027A (zh) 2017-04-19
CN106570027B CN106570027B (zh) 2020-08-25

Family

ID=58506247

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510654810.3A Active CN106570027B (zh) 2015-10-10 2015-10-10 一种事务型任务处理方法及装置

Country Status (1)

Country Link
CN (1) CN106570027B (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107316124A (zh) * 2017-05-10 2017-11-03 中国航天***科学与工程研究院 大数据环境下大规模事务型作业调度与处理通用平台
CN109033364A (zh) * 2018-07-26 2018-12-18 郑州云海信息技术有限公司 一种处理分布式事务的方法、配置中心及节点
CN109495452A (zh) * 2018-10-24 2019-03-19 苏宁易购集团股份有限公司 响应超时处理方法、服务器及客户端响应超时处理***
CN109634726A (zh) * 2018-10-25 2019-04-16 平安科技(深圳)有限公司 定时任务的处理方法、装置、设备及存储介质
CN109783203A (zh) * 2018-12-28 2019-05-21 深圳竹云科技有限公司 一种基于过程任务事务处理机制的实现方法
CN110019530A (zh) * 2017-12-29 2019-07-16 百度在线网络技术(北京)有限公司 基于分布式数据库的事务处理方法及装置
CN110609741A (zh) * 2019-09-23 2019-12-24 中国银行股份有限公司 一种任务并发处理方法及装置
CN111026734A (zh) * 2019-12-10 2020-04-17 北京北龙云海网络数据科技有限责任公司 一种数据库管理方法、***、装置及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102156928A (zh) * 2011-04-29 2011-08-17 浪潮通信信息***有限公司 一种通过业务逻辑锁进行***并发控制的方法
CN102651006A (zh) * 2011-02-25 2012-08-29 上海网环信息科技有限公司 一种数据库表单记录加锁方法和装置
CN103514164A (zh) * 2012-06-15 2014-01-15 阿里巴巴集团控股有限公司 数据迁移方法及***
CN104239418A (zh) * 2014-08-19 2014-12-24 天津南大通用数据技术股份有限公司 支持分布式数据库的分布锁方法以及分布式数据库***
CN104793988A (zh) * 2014-01-20 2015-07-22 阿里巴巴集团控股有限公司 跨数据库分布式事务的实现方法和装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102651006A (zh) * 2011-02-25 2012-08-29 上海网环信息科技有限公司 一种数据库表单记录加锁方法和装置
CN102156928A (zh) * 2011-04-29 2011-08-17 浪潮通信信息***有限公司 一种通过业务逻辑锁进行***并发控制的方法
CN103514164A (zh) * 2012-06-15 2014-01-15 阿里巴巴集团控股有限公司 数据迁移方法及***
CN104793988A (zh) * 2014-01-20 2015-07-22 阿里巴巴集团控股有限公司 跨数据库分布式事务的实现方法和装置
CN104239418A (zh) * 2014-08-19 2014-12-24 天津南大通用数据技术股份有限公司 支持分布式数据库的分布锁方法以及分布式数据库***

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107316124A (zh) * 2017-05-10 2017-11-03 中国航天***科学与工程研究院 大数据环境下大规模事务型作业调度与处理通用平台
CN110019530A (zh) * 2017-12-29 2019-07-16 百度在线网络技术(北京)有限公司 基于分布式数据库的事务处理方法及装置
CN109033364A (zh) * 2018-07-26 2018-12-18 郑州云海信息技术有限公司 一种处理分布式事务的方法、配置中心及节点
CN109495452A (zh) * 2018-10-24 2019-03-19 苏宁易购集团股份有限公司 响应超时处理方法、服务器及客户端响应超时处理***
CN109634726A (zh) * 2018-10-25 2019-04-16 平安科技(深圳)有限公司 定时任务的处理方法、装置、设备及存储介质
WO2020082563A1 (zh) * 2018-10-25 2020-04-30 平安科技(深圳)有限公司 定时任务的处理方法、装置、设备及存储介质
CN109783203A (zh) * 2018-12-28 2019-05-21 深圳竹云科技有限公司 一种基于过程任务事务处理机制的实现方法
CN109783203B (zh) * 2018-12-28 2023-05-09 深圳竹云科技股份有限公司 一种基于过程任务事务处理机制的实现方法
CN110609741A (zh) * 2019-09-23 2019-12-24 中国银行股份有限公司 一种任务并发处理方法及装置
CN111026734A (zh) * 2019-12-10 2020-04-17 北京北龙云海网络数据科技有限责任公司 一种数据库管理方法、***、装置及存储介质
CN111026734B (zh) * 2019-12-10 2020-11-13 北京北龙云海网络数据科技有限责任公司 一种数据库管理方法、***、装置及存储介质

Also Published As

Publication number Publication date
CN106570027B (zh) 2020-08-25

Similar Documents

Publication Publication Date Title
CN106570027A (zh) 一种事务型任务处理方法及装置
EP2695086B1 (en) Methods and systems for loading data into a temporal data warehouse
US10678808B2 (en) Eager replication of uncommitted transactions
US8639677B2 (en) Database replication techniques for maintaining original linear request order for asynchronous transactional events
JP6724039B2 (ja) 分散型コンピューティングシステムにおけるデータベーストランザクションの処理
EP2825957B1 (en) Systems and methods for supporting inline delegation of middle-tier transaction logs to database
US6980988B1 (en) Method of applying changes to a standby database system
CN106598992B (zh) 数据库的操作方法及装置
WO2016180164A1 (zh) 一种分布式事务回滚方法及装置
CN103544153B (zh) 一种基于数据库的数据更新方法和***
US20130117307A1 (en) Snapshot isolation support for distributed query processing in a shared disk database cluster
EP2550632A1 (en) System with multiple conditional commit databases
CN101350022B (zh) 基于数据库逻辑锁的变更处理方法
CN111522631A (zh) 分布式事务处理方法、装置、服务器及介质
CN104252501A (zh) 一种执行数据库操作命令的计算设备和方法
US11442934B2 (en) Database calculation engine with dynamic top operator
WO2017128028A1 (zh) 一种事务处理方法及装置
US9170837B2 (en) Transaction concurrent execution control system, method and program for carrying out a control of concurrently executing a transaction, including measuring execution time from starting to ending of transaction execution
US20060149791A1 (en) Database-driven distributed recovery
EP3385867B1 (en) Management of unique identifiers in a database
CN100568245C (zh) 工作流数据的持久化处理方法、装置及工作流***
US20230315718A1 (en) Executing transactions on distributed databases
US20230359494A1 (en) Disabling of memory allocators
US20170308562A1 (en) System and Method for Multi-Master Synchronous Replication Optimization
CN105874435A (zh) 分布式事务中的非阻塞注册

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20200918

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman, British Islands

Patentee after: Innovative advanced technology Co.,Ltd.

Address before: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman, British Islands

Patentee before: Advanced innovation technology Co.,Ltd.

Effective date of registration: 20200918

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman, British Islands

Patentee after: Advanced innovation technology Co.,Ltd.

Address before: A four-storey 847 mailbox in Grand Cayman Capital Building, British Cayman Islands

Patentee before: Alibaba Group Holding Ltd.

TR01 Transfer of patent right