一种基于水平分区分布式数据库的任务调度方法及装置制造方法及图纸

技术编号:10828509 阅读:70 留言:0更新日期:2014-12-26 17:56
本发明专利技术公开了一种基于水平分区分布式数据库的任务调度方法及装置,包括:在接收到待处理任务时,提取待处理任务携带的第一数据库分区ID;根据数据库分区ID与数据库实例的映射关系,确定第一数据库分区ID归属的第一数据库实例;根据数据库实例与线程的映射关系,确定第一数据库实例对应的第一线程,其中,一个数据库实例仅与一个线程对应;将待处理任务分配给第一线程执行实现了避免并行执行任务的相互等待或互锁的目的。

【技术实现步骤摘要】
一种基于水平分区分布式数据库的任务调度方法及装置
本专利技术涉及数据库领域,特别涉及一种基于水平分区分布式数据库的任务调度方法及装置。
技术介绍
水平分区分布式数据库:指的是按水平方式对数据进行拆分以保存在不同的数据库实例(或称SCHEMA,数据库模式)中的一种分布式数据库解决方案,不同数据库实例中的数据不相关。一般,一个数据库实例可以有多个数据库分区,每个数据库分区由唯一的数据库分区ID标识,数据库实例与其包含的数据库分区的ID之间具有一定的映射关系。 目前,基于水平分区分布式数据库的任务调度的方法是,在接收到某一任务时,会从线程池中取出任一空闲线程执行该任务。当然,为了提高数据库处理能力,可能会有很多任务被分配到并行执行的线程中完成。 但是,对于水平分区分布式数据库来说,由于数据库实例中的数据拆分为若干数据库分区,通常一个任务针对一个数据库分区,因此经常发生针对一个数据库实例的多个任务被分别分配给并行执行的线程,进而导致一个数据库实例中并行执行的任务由于事务特性而相互等待或互锁,此时的等待会影响任务的执行效率,从而影响并行任务的吞吐量和处理能力。
技术实现思路
有鉴于此,本专利技术的主要目的在于提供一种基于水平分区分布式数据库的任务调度方法及装置,以避免并行执行任务的相互等待或互锁的目的。 在本专利技术实施例的一个方面,提供了一种基于水平分区分布式数据库的任务调度方法,例如,该方法可以包括: 在接收到待处理任务时,提取待处理任务携带的第一数据库分区ID ; 根据数据库分区ID与数据库实例的映射关系,确定第一数据库分区ID归属的第一数据库实例; 根据数据库实例与线程的映射关系,确定第一数据库实例对应的第一线程,其中,一个数据库实例仅与一个线程对应; 将待处理任务分配给第一线程执行。 在本专利技术实施例的另一个方面,提供了一种基于水平分区分布式数据库的任务调度装置,例如,该装置可以包括: 接收单元:配置用于在接收到待处理任务时,提取待处理任务携带的第一数据库分区ID ; 第一计算单元:配置用于在接收到待处理任务时,提取待处理任务携带的第一数据库分区ID ; 第二计算单元:配置用于根据数据库实例与线程的映射关系,确定第一数据库实例对应的第一线程,其中,一个数据库实例仅与一个线程对应; 分配单元:配置用于将待处理任务分配给第一线程执行。 可见本专利技术具有如下有益效果: 在本专利技术中,由于采取了一个数据库实例仅对应一个线程的任务分配策略,在接收到第一待处理任务时,提取第一待处理任务携带的第一数据库分区ID,根据数据库分区ID与数据库实例的映射关系,确定第一数据库分区ID归属的第一数据库实例,又根据数据库实例与线程的映射关系,将针对同一数据库实例、不同数据库分区的任务分配到该同一与数据库实例对应的线程中执行,从而最大可能让并行执行中的任务所调用的事务操作在不同的数据库实例上,即一个数据库实例并行的任务小于等于1,可以完全避免并行任务之间的互锁及等待。 【附图说明】 为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。 图1是根据本专利技术实施例提供的方法流程示意图之一; 图2是根据本专利技术实施例提供的方法流程示意图之二 ; 图3是根据本专利技术实施例提供的方法流程示意图之三; 图4是根据本专利技术实施例提供的装置结构示意图。 【具体实施方式】 为使本专利技术的上述目的、特征和优点能够更加明显易懂,下面结合附图和【具体实施方式】对本专利技术实施例作进一步详细的说明。 本专利技术实施例的基于水平分区分布式数据库的任务调度方法,适用于水平分区分布式数据库的批量任务的调度。下面,首先对水平分区分布式数据库的应用场景进行简单介绍: 在水平分区分布式数据库中,可以包含很多数据库实例,甚至可能在50个以上。而一个数据库实例中又包含很多数据库分区,因此,在水平分区分布式数据库中有大量的数据库分区,有大量针对数据库分区的处理任务。为了提高任务的执行效率,通常会采用若干线程并行执行这些任务。 而一个数据库实例中并行执行的任务可能会由于事务特性而相互等待或互锁,有鉴于此,本专利技术提供如下基于水平分区分布式数据库的任务调度方法: 参见图1所示,为本专利技术提供的一种连接查询方法的实施例一流程示意图,如图所示,该方法实施例可以包括: S101、在接收到待处理任务时,提取待处理任务携带的第一数据库分区ID ; S102、根据数据库分区ID与数据库实例的映射关系,确定第一数据库分区ID归属的第一数据库实例; 其中,根据数据库分区的策略,数据库分区ID与数据库实例的映射关系可以为:数据库分区ID对数据库实例的数量求余,其所得余数为该数据库分区ID归属的数据库实例的编号。根据该数据库分区的策略,可以将第一数据库分区ID对数据库实例的数量求余,其中,所得余数为第一数据库实例的编号,从而确定待处理任务携带的第一数据库分区ID归属的第一数据库实例。当然,并不局限于这一种数据库分区策略,本专利技术在此方面不受任何限制。 S103、根据数据库实例与线程的映射关系,确定第一数据库实例对应的第一线程,其中,一个数据库实例仅与一个线程对应; 其中,数据库实例与线程的映射关系可以根据实施需要进行映射,例如,可以按照某种算法计算出映射关系,也可以预先将数据库实例的编号与线程的编号的映射关系记载映射关系表中,通过查询映射关系表,确定第一数据库实例的编号对应的第一线程的编号,其中一个数据库实例的编号仅与一个线程的编号由映射关系。 需要说明的是一个数据库实例仅与一个线程对应,S卩,数据库实例与线程的映射关系可以为多对一的关系、一对一的关系。 S104、将待处理任务分配给第一线程执行。 应用本专利技术上述实施例提供的方法,可以将针对同一数据库实例、不同数据库分区的任务分配到同一与数据库实例对应的线程中执行,其中一个数据库实例仅与一个线程对应,从而最大可能让并行执行中的任务所调用的事务操作在不同的数据库实例上,即一个数据库实例并行的任务小于等于1,可以完全避免并行任务之间的互锁及等待。 在本专利技术另一实施例中,为了快速确定数据库分区ID对应的数据库实例,及快速确定数据库实例对应的线程,以进一步提高并行任务的吞吐量和处理能力,本专利技术还提出如下实施例,参见图2,基于水平分区分布式数据库的任务调度方法的实施例二流程示意图,如2图所示,该实施例可以包括: S201、在接收到待处理任务时,提取待处理任务携带的第一数据库分区ID ; S202、将第一数据库分区ID对数据库实例的数量求余,其中,所得余数为第一数据库实例的编号; S203、将第一数据库实例的编号对线程的数量求余,其中,所得余数为第一线程的编号; 需要说明的是,在该实施例中,数据库实例与线程的映射关系通过将数据库实例的编号对线程的数量求余确定,即:数据库实例的编号对线程的数量求余,所得余数为该数据库实例的编号对应的线程的编号。 例如,其中线程的数量可以根据数据本文档来自技高网...
一种基于水平分区分布式数据库的任务调度方法及装置

【技术保护点】
一种基于水平分区分布式数据库的任务调度方法,其特征在于,包括:在接收到待处理任务时,提取待处理任务携带的第一数据库分区ID;根据数据库分区ID与数据库实例的映射关系,确定第一数据库分区ID归属的第一数据库实例;根据数据库实例与线程的映射关系,确定第一数据库实例对应的第一线程,其中,一个数据库实例仅与一个线程对应;将待处理任务分配给第一线程执行。

【技术特征摘要】
1.一种基于水平分区分布式数据库的任务调度方法,其特征在于,包括: 在接收到待处理任务时,提取待处理任务携带的第一数据库分区ID ; 根据数据库分区ID与数据库实例的映射关系,确定第一数据库分区ID归属的第一数据库实例; 根据数据库实例与线程的映射关系,确定第一数据库实例对应的第一线程,其中,一个数据库实例仅与一个线程对应; 将待处理任务分配给第一线程执行。2.根据权利要求1所述的方法,其特征在于,所述根据数据库分区ID与数据库实例的映射关系,确定第一数据库分区ID对应的第一数据库实例包括: 将第一数据库分区ID对数据库实例的数量求余,其中,所得余数为第一数据库实例的编号。3.根据权利要求2所述的方法,其特征在于,所述根据数据库实例与线程的映射关系,确定第一数据库实例对应的第一线程包括: 将第一数据库实例的编号对线程的数量求余,其中,所得余数为第一线程的编号。4.根据权利要求2所述的方法,其特征在于,所述根据数据库实例与线程的映射关系,确定第一数据库实例对应的第一线程包括: 查询映射关系表,确定第一数据库实例的编号对应的第一线程的编号,其中所述映射关系表中记录了数据库实例的编号与线程的编号的映射关系,其中,一个数据库实例的编号仅与一个线程的编号有映射关系。5.根据权利要求1-4任一项所述的方法,其特征在于,在接收到待处理任务时,还提取待处理任务携带的第一任务类型; 所述根据数据库实例与线程的映射关系,确定第一数据库实例对应的第一线程包括: 根据任务类型与线程的映射关系,确定第一任务类型对应的线程; 根据数据库实例与第一任务类型对应的线程的映射关系,确定第一数据库实例对应的第一线程,其中,一个数据库实例仅与该任务类型中的一个线程对应。6.根据权利要求5所述的方法,其特征在于,所述根据数据库实例与线程的映射关系,确定第一数据库实例对应的第一线程包括: 根据任务类型与线程的映射关系,确定第一任务类型对应的线程的数量; 将第一数据库实例的编号对第一任务类型对应的线程的数量求余,其中,所得余数为第一线程的编号; 将待处理任务分配给第一线程执行包括: 从线程池中查询出与第一任务类型...

【专利技术属性】
技术研发人员:李彦超
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛;KY

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

1