[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

CN107608773B - 任务并发处理方法、装置及计算设备 - Google Patents

任务并发处理方法、装置及计算设备 Download PDF

Info

Publication number
CN107608773B
CN107608773B CN201710734931.8A CN201710734931A CN107608773B CN 107608773 B CN107608773 B CN 107608773B CN 201710734931 A CN201710734931 A CN 201710734931A CN 107608773 B CN107608773 B CN 107608773B
Authority
CN
China
Prior art keywords
processing
task
tasks
subtasks
data
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.)
Active
Application number
CN201710734931.8A
Other languages
English (en)
Other versions
CN107608773A (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 CN201710734931.8A priority Critical patent/CN107608773B/zh
Publication of CN107608773A publication Critical patent/CN107608773A/zh
Application granted granted Critical
Publication of CN107608773B publication Critical patent/CN107608773B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本说明书提供一种任务并发处理方法、装置及计算设备,可以将任务以数据块为维度进行区分,将对应不同数据块的任务分配至任务集合中,使同一任务集合中的任务对应不同的数据块,在并发处理时,将同一任务集合中任务进行并发处理,从而在一次并发处理过程中,各个任务都是针对不同的数据块进行处理,因此可以防止事务槽被占满而导致的行锁冲突,减少任务处理失败的情况,提高任务处理效率。

Description

任务并发处理方法、装置及计算设备
技术领域
本说明书涉及计算机技术领域,尤其涉及任务并发处理方法、装置及计算设备。
背景技术
数据块是数据库管理系统读写数据的最小单位或者最基本的单位。当一个任务需要更新数据块中的数据时,该任务需要占用数据块中的事务槽,并将当前任务的相关信息写到事务槽里。在并发执行多个任务的场景下,数据块可能面临多个并发任务的处理,数据块提供有多个事务槽,针对同一数据块的多个并发任务将会占据该数据块的事务槽,之后按照占据的先后顺序执行该多个并发任务。若数据块中的多个事务槽都被占用,其他需更新数据的任务将被拒绝处理。
发明内容
为克服相关技术中存在的问题,本说明书提供了任务并发处理方法、装置及计算设备。
一种任务并发处理方法,所述方法包括:
确定待进行并发处理的多个任务,所述任务对应有该任务被执行时所要处理的数据块;
将所述多个任务分配至一个或多个任务集合中,其中,同一任务集合中的任务对应的数据块不同;
将同一任务集合中的任务进行并发处理。
可选的,所述将所述多个任务分配至一个或多个任务集合中,其中,同一任务集合中的任务对应的数据块不同,包括:
确定所述任务对应的数据块的数据块标识,利用所述数据块标识将所述多个任务分配至一个或多个任务集合中,其中,对应有相同数据块标识的任务分配至不同的任务集合中。
可选的,所述确定所述任务对应的数据块的数据块标识,包括:
读取所述数据块中行目录区存储的行地址,以行地址中的数据对象编号、数据文件编号和数据块编号确定所述数据块标识。
可选的,所述待并发处理的多个任务的处理状态记录在一状态数据表中;
所述方法还包括:
在将同一任务集合中的任务进行并发处理后,获取所述任务的处理状态;
删除所述状态数据表中所记录的所述任务在进行并发处理前的处理状态;
在所述状态数据表中新增所述任务在进行并发处理后的处理状态。
可选的,所述数据块包括Oracle数据库管理系统中的数据块。
一种任务并发处理方法,所述方法包括:
捞取待处理的一个或多个处理任务,所述处理任务对应有需进行数据处理的数据表;
将所述处理任务拆分为多个子任务,确定待进行并发处理的多个子任务,所述子任务对应有该子任务执行时所要处理的数据表中的数据块;
将所述多个子任务分配至一个或多个任务集合中,其中,同一任务集合中的子任务对应的数据块不同;
将所述一个或多个任务集合提交至线程池中,将同一任务集合中的子任务进行并发处理。
一种任务并发处理装置,所述方法包括:
任务确定模块,用于:确定待进行并发处理的多个任务,所述任务对应有该任务被执行时所要处理的数据块;
任务分配模块,用于:将所述多个任务分配至一个或多个任务集合中,其中,同一任务集合中的任务对应的数据块不同;
并发处理模块,用于:将同一任务集合中的任务进行并发处理。
可选的,所述任务分配模块,还用于:
确定所述任务对应的数据块的数据块标识,利用所述数据块标识将所述多个任务分配至一个或多个任务集合中,其中,对应有相同数据块标识的任务分配至不同的任务集合中。
可选的,所述任务分配模块,还用于:
读取所述数据块中行目录区存储的行地址,以行地址中的数据对象编号、数据文件编号和数据块编号确定所述数据块标识。
可选的,所述待并发处理的多个任务的处理状态记录在一状态数据表中;
所述装置还包括状态数据表更新模块,用于:
在将同一任务集合中的任务进行并发处理后,获取所述任务的处理状态;
删除所述状态数据表中所记录的所述任务在进行并发处理前的处理状态;
在所述状态数据表中新增所述任务在进行并发处理后的处理状态。
可选的,所述数据块包括Oracle数据库管理系统中的数据块。
一种任务并发处理装置,所述装置包括:
任务捞取模块,用于:捞取待处理的一个或多个处理任务,所述处理任务对应有需进行数据处理的数据表;
任务拆分模块,用于:将所述处理任务拆分为多个子任务,确定待进行并发处理的多个子任务,所述子任务对应有该子任务执行时所要处理的数据表中的数据块;
任务分配模块,用于:将所述多个子任务分配至一个或多个任务集合中,其中,同一任务集合中的子任务对应的数据块不同;
并发处理模块,用于:将所述一个或多个任务集合提交至线程池中,以将同一任务集合中的子任务进行并发处理。
一种计算设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
确定待进行并发处理的多个任务,所述任务对应有该任务被执行时所要处理的数据块;
将所述多个任务分配至一个或多个任务集合中,其中,同一任务集合中的任务对应的数据块不同;
将同一任务集合中的任务进行并发处理。
一种计算设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
捞取待处理的一个或多个处理任务,所述处理任务对应有需进行数据处理的数据表;
将所述处理任务拆分为多个子任务,确定待进行并发处理的多个子任务,所述子任务对应有该子任务执行时所要处理的数据表中的数据块;
将所述多个子任务分配至一个或多个任务集合中,其中,同一任务集合中的子任务对应的数据块不同;
将所述一个或多个任务集合提交至线程池中,将同一任务集合中的子任务进行并发处理。
本说明书的实施例提供的技术方案可以包括以下有益效果:
本说明书实施例中,可以将任务以数据块为维度进行区分,将对应不同数据块的任务分配至任务集合中,使同一任务集合中的任务对应不同的数据块,在并发处理时,将同一任务集合中任务进行并发处理,从而在一次并发处理过程中,各个任务都是针对不同的数据块进行处理,因此可以防止事务槽被占满而导致的行锁冲突,减少任务处理失败的情况,提高任务处理效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本说明书的实施例,并与说明书一起用于解释本说明书的原理。
图1是本说明书根据一示例性实施例示出的一种数据块的示意图。
图2A是本说明书根据一示例性实施例示出的一种任务并发处理方法的流程图。
图2B是本说明书根据一示例性实施例示出的任务并发处理方法的应用场景图。
图3A是本说明书根据一示例性实施例示出的一种任务并发处理方法的流程图。
图3B是本说明书根据一示例性实施例示出的另一种任务并发处理方法的流程图。
图4是本说明书任务并发处理装置所在计算设备的一种硬件结构图。
图5是本说明书根据一示例性实施例示出的一种任务并发处理装置的框图。
图6是本说明书根据一示例性实施例示出的一种任务并发处理装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书的一些方面相一致的装置和方法的例子。
在本说明书使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书。在本说明书和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
首先对本说明书实施例中的所涉及的一些术语进行解释。
数据块(Data Blocks),是数据库管理系统(例如,Oracle数据库)最小的存储单位,数据存放在“块”中。一个数据块占用一定的磁盘空间。数据块管理系统每次请求数据的时候,都是以数据块为单位。也就是说,数据块管理系统每次请求的数据是块的整数倍。如果数据块管理系统请求的数据量小于一个数据块的数据量,数据块管理系统仍会读取整个块。也即是,“数据块”是数据块管理系统读写数据的最小单位或者最基本的单位。
数据块中存放数据表的数据和索引的数据,无论存放哪种类型的数据,数据块的格式(Data Block Format)都是相同的,如图1所示,是数据块的一种示意图,数据块包括块头(header/Common and Variable),表目录区(table directory),行目录区(rowdirectory),可用空间区(free space),行数据区(row data)。
块头(header/Common and Variable):存放块的基本信息,包括标准内容和可变内容,例如:数据块的物理地址,数据块所属的段的类型(是数据段还是索引段)。
表目录区(Table Directory):存放数据表的信息,即:如果数据表中数据被存放在这个数据块中,则该表的相关信息将被存放在“表目录”中。
行目录区(Row Directory):如果数据块中有行数据存在,则这些行的信息将被记录在行目录中,这些信息包括行的地址等。
行数据区(Row Data):是真正存放表数据和索引数据的地方,这部分空间是已被数据行占用的空间。
可用空间区(Free Space):可用空间是一个数据块中未使用的区域,这片区域用于新行的插入和已经存在的行的更新。
其中,数据块头中可以包括一个或多个ITL(Interested Transaction List)事务槽,ITL是数据块内部的一个组成部分,用来记录该数据块所有发生的事务,一个ITL可以对应一条任务(也可称为事务)记录,如果这个事务已经提交,那么这个ITL的位置就可以被反复使用,如果一个任务一直没有提交,那么这个事务将一直占用一个ITL槽位。如果数据块内的事务槽都被占用了,数据块还可以使用数据块内的Free Space构建ITL供任务使用,如果Free Space也占用完了,后续的任务请求就会等待。也就是说,假设有一个待处理任务需要涉及对数据块的处理,该待处理事务需要占据数据块的一个ITL,只有在该待处理任务完成后,该ITL事务槽才会被释放,才可以被其他待处理任务占据。通常,需要占用事务槽的任务包括对数据块中数据的更新,删除数据和新增数据可以不占用事务槽。
行锁:Oracle等数据库的锁机制是一种轻量级的锁定机制,该机制不是通过构建锁列表来进行数据的锁定管理,而是直接将锁作为数据块的属性,存储在数据块的块头。每当一个事务要更新数据块里的数据时,必须先得到一个ITL槽,然后将当前事务ID,事务所用的数据块地址、SCN号、当前事务是否提交等信息写到ITL槽里。ITL槽的事务提交或回滚后,才可以被其他事务覆盖,当新事务发现不够ITL槽时,会动态创建一个新的ITL槽。
在并发执行多个任务的场景下,数据块可能面临多个并发任务的处理,数据块提供有多个事务槽,针对同一数据块的多个并发任务将会占据该数据块的事务槽,之后按照占据的先后顺序执行该多个并发任务。若数据块中的多个事务槽都被占用,其他需更新数据、需占据事务槽的任务将会被拒绝处理。另一方面,由于占据事务槽的任务在处理完成后该事务槽才被释放,然后其他新处理任务可以占据该事务槽,当任务并发量巨大时,频繁对数据块加行锁、释放事务槽、占据事务槽等操作,将非常容易导致ITL槽满而引起行锁冲突。
以处理一包含有多个用户信息的数据表任务为例进行说明,该数据表中的用户信息达到千万级别,某个任务涉及对该表中部分用户的某个属性的修改。由于该修改任务涉及的数据量巨大,可以采用将该任务拆分为多个子任务的方式进行并发处理,以提高数据处理的效率。并发处理的过程可以是:根据并发处理维度(可以用户账号,业务单据号等等)拆分为不同的子任务,这些拆分好的子任务将会导入到线程池中,处理的时候,从线程池中捞取多个子任务并发处理。针对线程池中的任务,还可以生成一任务数据表,该任务数据表记录各个待处理子任务的处理状态。每次并发处理时,可以先以悲观锁方式加锁子任务数据表,然后判断子任务处理状态,如果是未处理,则处理该任务,处理完成以后,更新子任务状态为已完成。
当并发强度较大时,多个拆分好的子任务数据针对同一数据块进行处理,并发过大可能导致ITL槽占用增多,且ITL槽来不及释放,最后引起行锁冲突。实际应用中,可以采用调整ITL参数来增加数据块中的事务槽,扩大事务槽容量,同时优化应用,减少事务槽占用时间的方式。
而本说明书实施例中,可以将任务以数据块为维度进行区分,将对应不同数据块的任务分配至任务集合中,使同一任务集合中的任务对应不同的数据块,在并发处理时,将同一任务集合中任务进行并发处理,从而在一次并发处理过程中,各个任务都是针对不同的数据块进行处理,因此可以防止ITL槽被占满而导致的行锁冲突,减少任务处理失败的情况,提高任务处理效率。
如图2A所示,是本说明书根据一示例性实施例示出的任务并发处理方法的流程图,所述方法包括:
在步骤202中,确定待进行并发处理的多个任务,所述任务对应有该任务被执行时所要处理的数据块。
在步骤204中,将所述多个任务分配至一个或多个任务集合中,其中,同一任务集合中的任务对应的数据块不同。
在步骤206中,将同一任务集合中的任务进行并发处理。
如图2B所示,是本说明书根据一示例性实施例示出的任务并发处理方法的应用场景图,图2B中包括多个任务提供方、包括多个计算设备组成的计算集群以及数据库,本说明书实施例的方案可应用于需要进行任务并发处理的计算集群中。任务提供方向计算集群提交针对数据库中某些数据表进行操作的处理任务,计算集群根据处理任务的处理对象,从数据库中确定处理任务所针对的数据表中数据。
在一些例子中,计算设备可能面临海量的处理任务,某些任务可能需要操作一个或多个数据表中巨量的数据,因此计算集群可能将多个处理任务并发执行,也有可能将某些处理量巨大的任务分解成多个子任务,将子任务并发执行。可选择的,计算集群可以配置有专用于获取任务的计算设备、配置管理待并发处理任务的线程池、配置专用于处理任务的计算设备等等,需要并发处理的任务放置在线程池中,计算集群可以根据实际的处理能力,从线程池中批次捞取多个任务进行并发处理。
本说明书实施例中对于待进行并发处理的任务,可以获取到任务的相关信息(例如任务标识、产生该任务的对象、任务产生时间或任务的处理对象等等)。由前述描述可知,任务处理的对象涉及数据库中数据,而数据块是数据块管理系统读写数据的基本单位,本实施例可以根据任务的相关信息,确定每个任务所对应要处理的数据块,之后以数据块为维度将任务分配至一个或多个任务集合中,其中,同一个任务集合中任务对应不同的数据块。在并发处理时,可以将同一任务集合中的任务进行并发处理,由于每个并发处理时每个任务对应不同的数据块,因此能防止数据块中ITL事务槽被沾满而导致的行锁冲突,防止任务处理失败。
其中,所述多个任务分配至一个或多个任务集合中,其中,同一任务集合中的任务对应的数据块不同,包括:
确定所述任务对应的数据块的数据块标识,利用所述数据块标识将所述多个任务分配至一个或多个任务集合中,其中,对应有相同数据块标识的任务分配至不同的任务集合中。
本实施例中,可以获取数据块标识,数据块标识的具体获取方式可以根据实际场景中所使用的数据库管理系统而灵活确定。以Oralce数据库为例,可以是读取所述数据块中行目录区存储的行地址,以行地址中的数据对象编号、数据文件编号和数据块编号确定所述数据块标识。
在Oralce数据库中,数据块中行目录区中记录有rowid,rowid是Oralce数据库中行的全局唯一地址,对于数据中的每一行,rowid伪列返回行的地址。rowid值主要包括该行数据的对象编号、该行所在的数据文件中的数据块、该行中数据块的位置、数据行所在的数据文件。
rowid中通常包括18位,以rowid:OOOOOOFFFBBBBBBRRR为例,其中:
OOOOOO:表示数据对象编号(占据6位)
FFF:表示相关数据文件编号(占据3位)
BBBBBB:表示数据块编号(占据6位)
RRR:表示数据块中行编号(占据3位)
因此,从rowid的格式可以看出每个rowid的前15位可用于区分不同的数据块,因此可以以行地址中的数据对象编号、数据文件编号和数据块编号确定所述数据块标识,从而能精确地对数据块进行区分。
实际应用中,计算集群可以配置一状态数据表,用于记录待并发处理的多个任务的处理状态,处理状态包括有未处理、处理完成或处理失败等等。计算集群可以根据状态数据表中记录的各任务的处理状态,若有未处理的任务,则捞取一部分任务出来进行并发处理,在处理过程中,状态数据表将以悲观锁的方式进行加锁,待本次并发处理结束后,根据各任务是否成功完成的处理状态,在状态数据表中对任务的处理状态进行更新。
可以理解,在对状态数据表在任务的处理状态进行更新时,也将涉及对状态数据表的处理操作,由于涉及了对数据表中的数据更新,由前述分析可知,对数据块进行更新时需要占据数据块的ITL事务槽,本实施例为了减少可能发生的行锁冲突,可以在将同一任务集合中的任务进行并发处理后,获取所述任务的处理状态,删除所述状态数据表中所记录的所述任务在进行并发处理前的处理状态,在所述状态数据表中新增所述任务在进行并发处理后的处理状态。由于在数据表中新增一条数据的方式,不需要占据数据块中ITL事务槽,而新增数据将插入至其他的数据块,原有记录任务处理状态的数据块的ITL事务槽则可以被清空,以供其他任务使用。
接下来结合图3A和图3B对本说明书实施例再次进行说明,图3A和图3B都是本说明书根据一示例性实施例示出的另一种任务并发处理方法。实际应用中,可能存在如下场景:服务方维护了千万级甚至亿级的用户数据,服务方可能在一些时间段需要对部分或全部用户的一些数据进行更新。此种场景中,用户数据存储于一些数据表中,对于本次更新任务,由于涉及的数据量巨大,服务方可以将本次任务拆分为多个子任务,以实现快速地数据更新。其中,服务方可以配置有如图2B所示的计算集群,并应用图3A所示方法,包括:
在步骤302中,捞取待处理的一个或多个处理任务,所述处理任务对应有需进行数据处理的数据表;
在步骤304中,将所述处理任务拆分为多个子任务,确定待进行并发处理的多个子任务,所述子任务对应有该子任务执行时所要处理的数据表中的数据块;
在步骤306中,将所述多个子任务分配至一个或多个任务集合中,其中,同一任务集合中的子任务对应的数据块不同;
在步骤308中,将所述一个或多个任务集合提交至线程池中,以将同一任务集合中的子任务进行并发处理。
本实施例中,对于数据量巨大的处理任务,可以根据实际设备的处理性能、数据量大小或相关应用场景的需要等等因素而将处理任务拆分为多个子任务。举例来说,可以将涉及一万用户的处理任务拆分为一百个子任务,每个子任务涉及一百个用户的数据更新,在拆分后,相对应地可以确定每个子任务所需要处理的数据表中的数据块。
对于拆分好的所有子任务,可以遍历各个子任务,获取每个子任务所对应数据块的rowid。以每个rowid的前15位(行地址中的数据对象编号、数据文件编号和数据块编号)作为数据块标识,以数据块为维度对拆分好的子任务进行分组,以将子任务分配至多个任务集合中,为了防止行锁冲突,同一任务集合中的子任务对应的数据块不同,具体的任务集合的个数可以根据实际需要和设备处理能力等等而确定。最后,将任务集合派发到线程池中,由计算集群从线程池中捞取任务集合,对任务集中的子任务进行并发处理。
实际应用中,计算集群可以配置一状态数据表,用于记录待并发处理的多个子任务的处理状态,处理状态包括有未处理、处理完成或处理失败等等。在并发处理每个子任务后,若子任务成功处理或处理失败,需要在状态数据表中更新子任务的状态为完成或处理失败。假设在状态数据表中进行数据更新,则更新过程涉及对数据块的ITL事务槽的占据。而本实施例可以是先删除状态数据表中该子任务的状态数据,之后再新增一条针对该子任务的状态数据,由于删除与新增都不涉及对数据块的ITL事务槽的占据,从而可以减少行锁冲突。
由上述实施例可见,本实施例中,并发处理的子任务按照数据块的维度进行分组,保证同一时间并发处理的业务不会针对同一数据块,从而降低ITL事务槽占用。另一方面,子任务处理完成以后,没有采用直接更新状态数据表的方式,而是采用删除再新增业务单据的方式,新增数据将写入至新的数据块,而原有数据块的ITL槽将空出来供其他业务使用,从而有效地减少了行锁冲突。
与前述任务并发处理方法的实施例相对应,本说明书还提供了任务并发处理装置及其所应用的计算设备的实施例。
本说明书任务并发处理装置的实施例可以应用在计算设备上,例如服务器或终端设备。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在文件处理的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图4所示,为本说明书任务并发处理装置所在计算设备的一种硬件结构图,除了图4所示的处理器410、内存430、网络接口420、以及非易失性存储器440之外,实施例中装置431所在的计算设备,通常根据该计算设备的实际功能,还可以包括其他硬件,对此不再赘述。
如图5所示,图5是本说明书根据一示例性实施例示出的一种任务并发处理装置的框图,所述装置包括:
任务确定模块51,用于:确定待进行并发处理的多个任务,所述任务对应有该任务被执行时所要处理的数据块;
任务分配模块52,用于:将所述多个任务分配至一个或多个任务集合中,其中,同一任务集合中的任务对应的数据块不同;
并发处理模块53,用于:将同一任务集合中的任务进行并发处理。
可选的,所述任务分配模块,还用于:
确定所述任务对应的数据块的数据块标识,利用所述数据块标识将所述多个任务分配至一个或多个任务集合中,其中,对应有相同数据块标识的任务分配至不同的任务集合中。
可选的,所述任务分配模块,还用于:
读取所述数据块中行目录区存储的行地址,以行地址中的数据对象编号、数据文件编号和数据块编号确定所述数据块标识。
可选的,所述待并发处理的多个任务的处理状态记录在一状态数据表中;
所述装置还包括状态数据表更新模块,用于:
在将同一任务集合中的任务进行并发处理后,获取所述任务的处理状态;
删除所述状态数据表中所记录的所述任务在进行并发处理前的处理状态;
在所述状态数据表中新增所述任务在进行并发处理后的处理状态。
可选的,所述数据块为Oracle数据库管理系统的数据块。
如图6所示,图6是本说明书根据一示例性实施例示出的另一种任务并发处理装置的框图,所述装置包括:
任务捞取模块61,用于:捞取待处理的一个或多个处理任务,所述处理任务对应有需进行数据处理的数据表;
任务拆分模块62,用于:将所述处理任务拆分为多个子任务,确定待进行并发处理的多个子任务,所述子任务对应有该子任务执行时所要处理的数据表中的数据块;
任务分配模块63,用于:将所述多个子任务分配至一个或多个任务集合中,其中,同一任务集合中的子任务对应的数据块不同;
并发处理模块64,用于:将所述一个或多个任务集合提交至线程池中,以将同一任务集合中的子任务进行并发处理。
相应的,本说明书还提供一种计算设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
确定待进行并发处理的多个任务,所述任务对应有该任务被执行时所要处理的数据块;
将所述多个任务分配至一个或多个任务集合中,其中,同一任务集合中的任务对应的数据块不同;
将同一任务集合中的任务进行并发处理。
相应的,本说明书还提供一种计算设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
捞取待处理的一个或多个处理任务,所述处理任务对应有需进行数据处理的数据表;
将所述处理任务拆分为多个子任务,确定待进行并发处理的多个子任务,所述子任务对应有该子任务执行时所要处理的数据表中的数据块;
将所述多个子任务分配至一个或多个任务集合中,其中,同一任务集合中的子任务对应的数据块不同;
将所述一个或多个任务集合提交至线程池中,将同一任务集合中的子任务进行并发处理。
上述装置中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本领域技术人员在考虑说明书及实践这里申请的发明后,将容易想到本说明书的其它实施方案。本说明书旨在涵盖本说明书的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本说明书的一般性原理并包括本说明书未申请的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本说明书的真正范围和精神由下面的权利要求指出。
应当理解的是,本说明书并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本说明书的范围仅由所附的权利要求来限制。
以上所述仅为本说明书的较佳实施例而已,并不用以限制本说明书,凡在本说明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书保护的范围之内。

Claims (12)

1.一种任务并发处理方法,所述方法包括:
确定待进行并发处理的多个任务,所述任务对应有该任务被执行时所要处理的数据块;
将所述多个任务分配至一个或多个任务集合中,其中,同一任务集合中的任务对应的数据块不同;
将同一任务集合中的任务进行并发处理;
其中,所述待进行并发处理的多个任务的处理状态记录在一状态数据表中;
所述方法还包括:
在将同一任务集合中的任务进行并发处理后,获取所述任务的处理状态;
删除所述状态数据表中所记录的所述任务在进行并发处理前的处理状态;
在所述状态数据表中新增所述任务在进行并发处理后的处理状态。
2.根据权利要求1所述的方法,所述将所述多个任务分配至一个或多个任务集合中,其中,同一任务集合中的任务对应的数据块不同,包括:
确定所述任务对应的数据块的数据块标识,利用所述数据块标识将所述多个任务分配至一个或多个任务集合中,其中,对应有相同数据块标识的任务分配至不同的任务集合中。
3.根据权利要求2所述的方法,所述确定所述任务对应的数据块的数据块标识,包括:
读取所述数据块中行目录区存储的行地址,以行地址中的数据对象编号、数据文件编号和数据块编号确定所述数据块标识。
4.根据权利要求1至3任一所述的方法,所述数据块包括Oracle数据库管理系统中的数据块。
5.一种任务并发处理方法,所述方法包括:
捞取待处理的一个或多个处理任务,所述处理任务对应有需进行数据处理的数据表;
将所述处理任务拆分为多个子任务,确定待进行并发处理的多个子任务,所述子任务对应有该子任务执行时所要处理的数据表中的数据块;
将所述多个子任务分配至一个或多个任务集合中,其中,同一任务集合中的子任务对应的数据块不同;
将所述一个或多个任务集合提交至线程池中,将同一任务集合中的子任务进行并发处理;
所述待进行并发处理的多个子任务的处理状态记录在一状态数据表中;
所述方法还包括:
在将同一任务集合中的子任务进行并发处理后,获取所述子任务的处理状态;
删除所述状态数据表中所记录的所述子任务在进行并发处理前的处理状态;
在所述状态数据表中新增所述子任务在进行并发处理后的处理状态。
6.一种任务并发处理装置,所述装置包括:
任务确定模块,用于:确定待进行并发处理的多个任务,所述任务对应有该任务被执行时所要处理的数据块;
任务分配模块,用于:将所述多个任务分配至一个或多个任务集合中,其中,同一任务集合中的任务对应的数据块不同;
并发处理模块,用于:将同一任务集合中的任务进行并发处理;
其中,所述待进行并发处理的多个任务的处理状态记录在一状态数据表中;
所述装置还包括状态数据表更新模块,用于:
在将同一任务集合中的任务进行并发处理后,获取所述任务的处理状态;
删除所述状态数据表中所记录的所述任务在进行并发处理前的处理状态;
在所述状态数据表中新增所述任务在进行并发处理后的处理状态。
7.根据权利要求6所述的装置,所述任务分配模块,还用于:
确定所述任务对应的数据块的数据块标识,利用所述数据块标识将所述多个任务分配至一个或多个任务集合中,其中,对应有相同数据块标识的任务分配至不同的任务集合中。
8.根据权利要求7所述的装置,所述任务分配模块,还用于:
读取所述数据块中行目录区存储的行地址,以行地址中的数据对象编号、数据文件编号和数据块编号确定所述数据块标识。
9.根据权利要求6至8任一所述的装置,所述数据块包括Oracle数据库管理系统中的数据块。
10.一种任务并发处理装置,所述装置包括:
任务捞取模块,用于:捞取待处理的一个或多个处理任务,所述处理任务对应有需进行数据处理的数据表;
任务拆分模块,用于:将所述处理任务拆分为多个子任务,确定待进行并发处理的多个子任务,所述子任务对应有该子任务执行时所要处理的数据表中的数据块;
任务分配模块,用于:将所述多个子任务分配至一个或多个任务集合中,其中,同一任务集合中的子任务对应的数据块不同;
并发处理模块,用于:将所述一个或多个任务集合提交至线程池中,以将同一任务集合中的子任务进行并发处理;
其中,所述待进行并发处理的多个子任务的处理状态记录在一状态数据表中;
所述装置还包括状态数据表更新模块,用于:
在将同一任务集合中的子任务进行并发处理后,获取所述子任务的处理状态;
删除所述状态数据表中所记录的所述子任务在进行并发处理前的处理状态;
在所述状态数据表中新增所述子任务在进行并发处理后的处理状态。
11.一种计算设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
确定待进行并发处理的多个任务,所述任务对应有该任务被执行时所要处理的数据块;
将所述多个任务分配至一个或多个任务集合中,其中,同一任务集合中的任务对应的数据块不同;
将同一任务集合中的任务进行并发处理;
其中,所述待进行并发处理的多个任务的处理状态记录在一状态数据表中;
所述处理器还被配置为:
在将同一任务集合中的任务进行并发处理后,获取所述任务的处理状态;
删除所述状态数据表中所记录的所述任务在进行并发处理前的处理状态;
在所述状态数据表中新增所述任务在进行并发处理后的处理状态。
12.一种计算设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
捞取待处理的一个或多个处理任务,所述处理任务对应有需进行数据处理的数据表;
将所述处理任务拆分为多个子任务,确定待进行并发处理的多个子任务,所述子任务对应有该子任务执行时所要处理的数据表中的数据块;
将所述多个子任务分配至一个或多个任务集合中,其中,同一任务集合中的子任务对应的数据块不同;
将所述一个或多个任务集合提交至线程池中,将同一任务集合中的子任务进行并发处理;
其中,所述待进行并发处理的多个子任务的处理状态记录在一状态数据表中;
所述处理器还被配置为:
在将同一任务集合中的子任务进行并发处理后,获取所述子任务的处理状态;
删除所述状态数据表中所记录的所述子任务在进行并发处理前的处理状态;
在所述状态数据表中新增所述子任务在进行并发处理后的处理状态。
CN201710734931.8A 2017-08-24 2017-08-24 任务并发处理方法、装置及计算设备 Active CN107608773B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710734931.8A CN107608773B (zh) 2017-08-24 2017-08-24 任务并发处理方法、装置及计算设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710734931.8A CN107608773B (zh) 2017-08-24 2017-08-24 任务并发处理方法、装置及计算设备

Publications (2)

Publication Number Publication Date
CN107608773A CN107608773A (zh) 2018-01-19
CN107608773B true CN107608773B (zh) 2020-08-04

Family

ID=61065784

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710734931.8A Active CN107608773B (zh) 2017-08-24 2017-08-24 任务并发处理方法、装置及计算设备

Country Status (1)

Country Link
CN (1) CN107608773B (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110162531B (zh) * 2018-02-28 2021-04-16 山东衡昊信息技术有限公司 一种分布式并发数据处理任务决策方法
CN108595251B (zh) * 2018-05-10 2022-11-22 腾讯科技(深圳)有限公司 动态图更新方法、装置、存储引擎接口和程序介质
CN109492000A (zh) * 2018-10-09 2019-03-19 郑州云海信息技术有限公司 一种数据库表的复制方法及系统
CN109800063A (zh) * 2019-01-25 2019-05-24 深圳乐信软件技术有限公司 业务并行处理方法、装置、服务器、存储介质
CN110011832B (zh) * 2019-03-04 2022-01-25 杭州迪普科技股份有限公司 一种计划任务的配置下发方法及装置
CN109933606B (zh) * 2019-03-19 2021-04-27 上海达梦数据库有限公司 一种数据库修改方法、装置、设备及存储介质
CN110222018A (zh) * 2019-05-14 2019-09-10 联动优势科技有限公司 数据汇总执行方法及装置
WO2019228568A2 (en) * 2019-09-12 2019-12-05 Alibaba Group Holding Limited Log-structured storage systems
CN110865977A (zh) * 2019-11-05 2020-03-06 中盈优创资讯科技有限公司 多程序操作hdfs目录的方法及装置
CN111124697B (zh) * 2020-01-02 2023-09-08 中国航空工业集团公司西安航空计算技术研究所 面向分布式平台的任务同步和执行方法
CN111414362B (zh) * 2020-02-28 2023-11-10 平安科技(深圳)有限公司 数据读取方法、装置、设备及存储介质
CN112181981A (zh) * 2020-09-21 2021-01-05 苏州浪潮智能科技有限公司 数据库表块数据的拆分方法、装置及存储介质
CN113485809B (zh) * 2021-07-14 2022-10-18 上海通联金融服务有限公司 一种解决业务过程耗时高的方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6691166B1 (en) * 1999-01-07 2004-02-10 Sun Microsystems, Inc. System and method for transferring partitioned data sets over multiple threads
CN100459574C (zh) * 2005-09-19 2009-02-04 北京大学 对网络流进行分类、状态跟踪和报文处理的装置和方法
CN101556534A (zh) * 2009-04-21 2009-10-14 浪潮电子信息产业股份有限公司 一种众核结构的大规模数据并行计算方法
CN102073546B (zh) * 2010-12-13 2013-07-10 北京航空航天大学 一种云计算环境中分布式计算模式下的任务动态调度方法
US9348883B2 (en) * 2011-06-01 2016-05-24 Clustrix, Inc. Systems and methods for replication replay in a relational database
CN105022662B (zh) * 2014-04-22 2019-04-09 中国银联股份有限公司 一种分布式任务分配方法
CN104021145B (zh) * 2014-05-16 2018-03-06 华为技术有限公司 一种混合业务并发访问的方法和装置
US9983901B2 (en) * 2014-07-09 2018-05-29 Google Llc Dynamic shard allocation adjustment
CN106547701B (zh) * 2015-09-17 2020-01-10 慧荣科技股份有限公司 记忆装置及数据读取方法
CN106844018A (zh) * 2015-12-07 2017-06-13 阿里巴巴集团控股有限公司 一种任务处理方法、装置及系统
CN105677903A (zh) * 2016-02-05 2016-06-15 华为技术有限公司 获取数据的方法和装置、计算机设备
CN105893126B (zh) * 2016-03-29 2019-06-11 华为技术有限公司 一种任务调度方法及装置

Also Published As

Publication number Publication date
CN107608773A (zh) 2018-01-19

Similar Documents

Publication Publication Date Title
CN107608773B (zh) 任务并发处理方法、装置及计算设备
CN110287044B (zh) 无锁共享内存处理方法、装置、电子设备及可读存储介质
EP3238421B1 (en) System for high-throughput handling of transactions in data-partitioned, distributed, relational database management system
CN110188110B (zh) 一种构建分布式锁的方法及装置
KR102024005B1 (ko) 블록체인을 이용한 트랜잭션 처리 방법 및 이를 이용한 트랜잭션 서버
US7673105B2 (en) Managing memory pages
CN107408132B (zh) 跨越多个类型的存储器移动分层数据对象的方法和系统
CN111125040A (zh) 管理重做日志的方法、装置及存储介质
CN108694230B (zh) 数据库中的唯一标识符的管理
CN109298888B (zh) 队列的数据存取方法及装置
CN107391539B (zh) 事务处理方法、服务器和存储介质
CN112688799A (zh) 基于Redis集群的客户号分配方法以及分配装置
CN112750027A (zh) 批量业务处理方法、装置、计算机设备和存储介质
US20240314021A1 (en) Method, apparatus, electronic device and storage medium for resource operation
JP2001229058A (ja) データベースサーバ処理方法
CN116881003A (zh) 资源分配方法、装置、服务设备及存储介质
CN111475277A (zh) 一种资源分配方法、系统、设备及机器可读存储介质
CN113836238A (zh) 数据命令的批量处理方法及装置
US10956385B2 (en) Management of unique identifiers in a database
CN114020434A (zh) 一种任务处理方法、装置、电子设备及存储介质
CN113590273A (zh) 事务处理方法、系统、设备及存储介质
CN113824806A (zh) 设备识别方法、装置及电子设备
EP3418914A1 (en) Data management apparatuses, methods, and non-transitory tangible machine-readable media thereof
US20050289094A1 (en) Method and system for parallel update of database
CN111158605B (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
TR01 Transfer of patent right

Effective date of registration: 20200923

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

Patentee after: Innovative advanced technology Co.,Ltd.

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

Patentee before: Advanced innovation technology Co.,Ltd.

Effective date of registration: 20200923

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman 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.