一种查询任务分阶段调度方法及系统与流程
未命名
10-19
阅读:99
评论:0

背景技术:
::2.多节点分布式系统是一种有着多个节点的系统,这些节点之间是松耦合的,相互之间由网络连接,多个处理节点可以合作来完成大规模的计算工作。在分布式数据库系统中,数据的存储通常采用非共享(sharenothing)体系的数据结构,在非共享体系的数据结构下,数据表中的数据分布存储在各个数据节点中。3.基于非共享体系的数据结构的分布式数据库系统,以对两张数据表做连接操作为例,数据库采用的方法为将数据读取到本地节点进行连接。因为数据表的数据分布在不同的数据节点,在执行过程中,计算节点需要从数据节点中将两张表的数据都收集到本地,再在本地进行连接,由于传输的数据量较大,并且要占用大量计算节点的资源,所以在调度任务时,会考虑各节点的负载程度,将任务分配至负载低的节点进行。4.在对查询任务调度时,一般是采用将查询任务调度到机械负载低如cpu占用率的节点执行任务;但是,仅从机械负载的角度考虑,并未对节点之间的数据依赖关系进行规划,同时调度的任务多,极易造成节点负载高以及磁盘i/o波动性大,从而导致数据库运行不稳定。技术实现要素:5.为了减轻节点负载以及磁盘i/o波动,以提高数据的运行稳定性,本技术提供了一种查询任务分阶段调度方法及系统。6.第一方面,本技术提供一种查询任务分阶段调度方法,采用如下的技术方案:根据查询请求生成查询计划,并将所述查询计划拆分为多个查询阶段,每个所述查询阶段均包含有执行计划片段;创建查询任务,查询任务信息包括任务号、执行计划片段和数据源信息;对所述查询任务进行分类,将相同的所述查询任务信息划分至同一查询阶段,将不同的所述查询任务信息划分至不同查询阶段;执行所述查询任务,处于同一查询阶段的查询任务同时调度;处于不同查询阶段的查询任务根据分阶段调度操作分配调度顺序,并按照调度顺序依次被调度;其中,所述分阶段调度操作用于依照查询阶段之间的数据依赖关系以分配调度顺序。7.进一步地,根据查询请求生成查询计划,并将所述查询计划拆分为多个查询阶段,每个所述查询阶段均包含有执行计划片段,具体包括:节点接收到所述查询计划后,对节点储存的数据进行全表扫描并读取;根据数据传输操作将相同的数据汇总到相同的节点上;基于远程扫描对所述数据传输操作产生的数据进行读取并进行连接操作。8.进一步地,创建查询任务,具体包括:将所述查询任务信息划分为任务准备信息和任务驱动信息,其中,所述任务准备信息包括任务号和执行计划片段,所述任务驱动信息包括任务号和数据源信息;当节点接收到所述任务准备信息后,创建所述查询任务并根据执行计划片段作任务执行准备;当节点接收到所述任务驱动信息后,将数据源与已创建好的任务匹配,并驱动查询任务执行。9.进一步地,所述数据源信息包括本地数据源和远程数据源,所述本地数据源的数据片内容为数据存储地址,所述远程数据源的数据片内容为数据传输操作产生数据的任务号。10.进一步地,分阶段调度操作,具体包括:设置一个有向图,将所有拆分后的所述查询阶段作为顶点加入有向图中;并根据对应关系在若干个顶点之间添加有向边;基于tarjan算法,计算有向图中的所有强连通分量,即本地数据源与远程数据源之间的数据依赖关系;根据所述强连通分量设置各个查询阶段的调度顺序。11.进一步地,根据对应关系在若干个顶点之间添加有向边,具体包括:所述有向边设置为由父查询阶段指向子查询阶段;远程连接操作的由probe端到build端添加所述有向边;数据传输操作的若干个数据源之间从左到右依次添加所述有向边。12.进一步地,根据所述强连通分量设置各个查询阶段的调度顺序,具体包括:根据计算出的所述强连通分量,对所述强连通分量里的查询阶段进行分类;同一所述强连通分量中的查询阶段划分至同一调度阶段中;不同所述强连通分量之间的调度阶段基于有向边的方向设置调度顺序。13.第二方面,本技术提供一种查询任务分阶段调度装置,采用如下的技术方案:一种查询任务分阶段调度装置,包括:获取模块,用于获取用户的查询请求,并用于获取查询任务内的查询任务信息;处理模块,用于将用户的查询请求生成为查询计划,并用于将查询任务信息划分,还用于将查询计划切分并设置调度顺序;查询模块,用于执行下发的查询任务,并得到所述查询任务对应的查询数据。14.第三方面,本技术提供一种计算机设备,采用如下的技术方案:一种计算机设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所述的一种查询任务分阶段调度方法。15.第四方面,本技术提供一种计算机可读存储介质,采用如下的技术方案:一种计算机可读存储介质,存储有能够被处理器加载并执行如第一方面中任一种查询任务分阶段调度方法的计算机程序。16.综上所述,本技术包括以下至少一种有益技术效果:在分布式数据库进行查询任务时,首先,分布式数据库根据查询请求生成对应的查询计划,并将查询计划拆分为多个查询阶段,每个查询阶段均包含有执行计划片段,其中,执行计划片段为整个查询计划的一部分;之后,创建包括任务号、执行计划片段和数据源信息在内的查询任务信息,并根据查询任务的类型对查询任务进行分类,将相同的查询任务信息划分至同一查询阶段,不同的查询任务信息划分至对应的查询阶段;最后,通过分阶段任务调度操作根据查询阶段之间的数据依赖关系分配调度顺序,其中数据依赖关系包括本地数据与远程数据之间的数据依赖关系,并按照调度顺序依次对查询阶段进行调度,从而根据不同查询阶段任务依赖数据的关系出发,对节点调度执行的任务进行规划,分批次调度查询任务执行,使调度的查询任务有序进行,减轻了节点的负载尤其是磁盘i/o波动,提高集群运行稳定性以及执行效率。附图说明17.图1是本技术实施例一种查询任务分阶段调度方法的流程图。18.图2是本技术其中一实施例查询计划拆分的流程图。19.图3是本技术其中一实施例创建查询任务的流程图。20.图4是本技术其中一实施例执行查询任务的流程图。21.图5是本技术实施例一种查询任务分阶段调度装置的框图。具体实施方式22.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图1-5及实施例,对本技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本技术,并不用于限定本技术。23.分布式数据库,物理上分散而逻辑上集中的数据库系统,由多个独立实体组成,并且彼此通过网络进行互联的数据库;是数据库技术与计算机网络相结合的产物。24.在分布式数据库系统中,节点按照功能可分为计算节点和数据节点。其中,数据节点用于存储数据表中的数据,计算节点作为客户端和数据节点之间通信的桥梁,用于临时性存储客户端和数据节点所发送的数据,并在客户端和数据节点之间传送数据。25.非共享体系是一种分布式计算架构,在这种架构中,每一个节点都是独立的,在系统中不存在单点竞争,非共享体系的数据结构可以避免单点故障,拥有自我恢复能力,并且在不破坏原有系统的情况下进行升级。26.本技术实施例公开一种查询任务分阶段调度方法。27.包括以下步骤,参照图1,步骤s100:根据查询请求生成查询计划,并将查询计划拆分为多个查询阶段,每个查询阶段均包含有执行计划片段。28.具体地,查询请求可以设置为用户所使用的终端设备输入的查询语句,分布式数据获取查询语句,并根据查询语句即用户的查询请求生成查询计划,之后将查询计划拆分成多个查询阶段,且每个查询阶段中均包含执行计划片段,执行计划片段即整个查询计划内的一部分;之后执行查询阶段以查询相应数据;终端设备可以设置为台式电脑或笔记本电脑等终端设备,也可以设置为服务器等指定设备。29.步骤s200:创建查询任务,查询任务信息包括任务号、执行计划片段和数据源信息。30.具体地,查询任务是一个查询阶段在一个计算节点上的一个实例,其中查询任务用于负责处理一部分数据;且一个查询阶段可以设置有若干个查询任务,并分布在不同计算节点上,通过分布在不同计算节点上的设置,便于实现查询任务并行处理;任务号为一个查询任务的唯一标识,且任务号的信息中包含时间戳、查询序号、查询阶段序号、节点序号以及查询任务序号,数据源信息包括数据源的具体信息。31.步骤s300:对查询任务进行分类,将相同的查询任务信息划分至同一查询阶段,将不同的查询任务信息划分至不同查询阶段。32.具体地,根据查询任务信息内的执行计划片段对查询任务进行分类,即包含相同执行计划片段的查询任务设置在同一个查询阶段内,包含不同的执行计划片段的查询任务设置在其对应的查询阶段内。33.步骤s400:执行查询任务,处于同一查询阶段的任务同时调度;处于不同查询阶段的任务根据分阶段调度操作分配调度顺序,并按照调度顺序依次被调度;其中,分阶段调度操作用于依照查询阶段之间的数据依赖关系以分配调度顺序。34.具体地,分阶段调度操作依据查询阶段之间的数据依赖关系对各个查询阶段分配调度顺序,数据依赖关系设置为本地数据与远程数据之间的数据关系;为了在一个查询阶段中包含少的本地数据源,对不同查询阶段分配好调度顺序后,在执行查询任务时,根据各个查询阶段的调度顺序,依次对各个查询阶段进行调度;在调度完前一个查询阶段后,再对下一个查询阶段进行调度,处于同一查询阶段内的任务同时被调度;调度查询阶段为调度该查询阶段内的所有查询任务。35.上述实施方式中,在分布式数据库进行查询任务时,首先,根据用户所使用的终端设备输入的查询语句即查询请求,生成对应的查询计划,并将查询计划拆分为多个查询阶段,每个查询阶段均包含有执行计划片段;之后,创建包括任务号、执行计划片段和数据源信息在内的查询任务信息,并根据查询任务内的执行计划片段对查询任务进行分类,将相同的查询任务信息划分至同一查询阶段,不同的查询任务信息划分至对应的查询阶段;最后,通过分阶段任务调度操作根据查询阶段之间的数据依赖关系分配调度顺序,其中数据依赖关系包括本地数据与远程数据之间的数据关系,并按照调度顺序依次对查询阶段进行调度,从而根据不同查询阶段任务依赖数据的关系出发,对节点调度执行的任务进行规划,分批次调度查询任务执行,使调度的查询任务有序进行,减轻了节点的负载尤其是磁盘i/o波动,提高集群运行稳定性以及执行效率。36.参照图2,作为步骤s100的一种实施方式,根据查询请求生成查询计划,并将查询计划拆分为多个查询阶段,每个查询阶段均包含有执行计划片段,具体包括:步骤s101:节点接收到查询计划后,对节点储存的数据进行全表扫描并读取。37.具体地,节点为计算节点,全表扫描即tablescan,即直接访问数据页,查询满足查询计划的数据;计算节点在接收到查询计划后,通过全表扫描对节点内的数据进行读取。38.进一步地,各个节点储存的数据实际按照哈希值进行分桶,并存储至对应节点上,即数据与所存储的位置建立一一对应的关系。39.步骤s102:根据数据传输操作将相同的数据汇总到相同的节点上。40.具体地,数据传输操作设置为exchange操作,即进行数据交换,将分表内的具有相同连接键的数据均汇总至相同的节点上。41.步骤s103:基于远程扫描对数据传输操作产生的数据进行读取并进行连接操作。42.具体地,远程扫描设置为remotescan,数据传输操本质为数据交换,数据交换的过程涉及到数据的迁移,从而通过远程扫描对数据传输操作产生的数据进行读取,并将数据传输后的数据进行连接操作,其中,连接操作设置为哈希连接,即将多个表中相同的数据提取出来,组成新的表。43.上述实施方式中,在节点接收到查询计划后,通过全表扫描的操作将节点存储的数据均读取后,通过数据传输操作将查询计划涉及到的相同的数据汇总到同一个节点上,并通过远程扫描对数据传输操作产生的数据进行读取,最后将据传输后的数据进行哈希连接;在进行数据传输操作时,由于数据传输操作涉及到数据迁移,即将整个查询计划拆分成了多个查询阶段,并且每个查询阶段包含整个查询计划的一部分,即执行计划片段。44.参照图3,作为步骤s200的一种实施方式,创建查询任务,具体包括:将查询任务信息划分为任务准备信息和任务驱动信息,其中,任务准备信息包括任务号和执行计划片段,任务驱动信息包括任务号和数据源信息。45.具体地,查询任务信息包括任务号、执行任务计划片段和数据源信息,由于查询任务信息内的执行任务计划片段和数据源信息分包,可以单独下发含有执行任务计划片段不包含数据源信息的任务准备信息,也可单独下发含有数据源信息不包含执行任务计划片段的任务驱动信息。46.其中,任务准备信息包含任务号和执行计划片段,任务驱动信息包含任务号和数据源信息,一个查询任务信息中的任务准备信息中的任务号和任务驱动信息的任务号相同。47.当节点接收到任务准备信息后,创建查询任务并根据执行计划片段作任务执行准备。48.具体地,当节点接收到任务准备信息后,任务准备信息中包含任务号和执行计划片段,先根据任务号创建查询任务,之后根据执行计划片段内的信息做准备;其中,执行计划片段中的信息可以包括对数据进行聚合操作,对数据执行的计算节点进行划分和对数据的类型进行辨别等。49.当节点接收到任务驱动信息后,将数据源与已创建好的任务匹配,并驱动查询任务执行。50.具体地,当节点接收到任务驱动信息后,任务驱动信息中包含任务号和数据源信息,先将任务驱动信息内的任务号与已经创建好的查询任务进行匹配,之后,由于任务驱动信息包括数据源信息,可以驱动此查询任务执行。51.上述实施方式中,通过将查询任务信息划分为任务准备信息和任务驱动信息,实现任务准备和任务驱动解绑,即将准备阶段和执行阶段拆分开,将查询任务中的与数据化无关的部分预实行,以减少任务整体执行时间。52.作为数据源信息的一种实施方式,数据源信息包括本地数据源和远程数据源,本地数据源的数据片内容为数据存储地址,远程数据源的数据片内容为数据传输操作产生数据的任务号。53.具体地,数据源信息划分为本地数据源信息和远程数据源信息,本地数据源信息为执行查询计划节点内的数据,远程数据源信息为除执行查询计划节点外的其他节点内的数据,且需要数据传输操作将数据进行存储至同一节点的数据。54.进一步地,数据源信息中的数据片为数据源中的具体信息,即本地数据源信息中的数据片内容为数据存储地址,远程数据源信息终端中的数据片内容为产生数据的任务号,即在对远程数据进行哈希连接时,远程数据源信息中的数据片内容包括时间戳、查询序号、查询阶段序号、节点序号以及查询任务序号。55.参照图4,作为步骤s400的一种实施方式,分阶段调度操作,具体包括:步骤s401:设置一个有向图,将所有拆分后的查询阶段作为顶点加入有向图中。56.具体地,有向图是一副具有方向性的图,有由一组顶点和一组有方向的边组成的,每条有方向的边都连接着一对有序的顶点;将所有查询阶段作为有向图的顶点加入有向图中,即每个查询阶段均是该有向图的顶点。57.步骤s402:并根据对应关系在若干个顶点之间添加有向边。58.具体地,一条有向边的第一个顶点称为它的头,第二个顶点称为它的尾,即在此有向图中,一条有向边的第一个查询阶段为该有向边的头,第二个查询阶段为该有向边的尾;根据查询阶段之间关系添加有向边,将有向图内的顶点与有向边均填充好后,生成一个关于查询阶段的有向图g《v,u》。59.进一步地,若存在一个有向图g《a,b》,对于有向图g《a,b》中任意两个顶点a,b,都存在从a到b以及从b到a的有向路径,则称g《a,b》为强连通图;而在一个不是强连通图的有向图g《a,b》中,若其中两个顶点a、b在两个方向上都存在有向路径,则称a和b强连通。60.步骤s403:基于tarjan算法,计算有向图中的所有强连通分量,即本地数据源与远程数据源之间的数据依赖关系。61.具体地,对于有向图g的极大强连通子图s,若添加任意顶点都会导致s失去强连通的属性,则称s为g的强连通分量;即用强连通分量计算各个查询阶段之间的本地数据源与远程数据源之间的数据关系,以得到每个查询阶段之间的数据依赖关系。62.进一步地,tarjan算法是基于深度优先搜索的算法,用于求出有向图的强连通分量,其中深度优先搜索即dfs算法,dfs算法的过程为沿着每一个可能的路径向下进行搜索,直到不能再深入为止,并且每一个节点只能访问一次。63.步骤s404:根据强连通分量设置各个查询阶段的调度顺序。64.具体地,根据计算出的强连通分量得到各个查询阶段的调度顺序,并根据该调度顺序对查询阶段进行调度,分批次调度查询任务执行,使调度的查询任务有序进行。65.上述实施方式中,在将查询计划切分后,将包含相同执行计划片段的查询任务设置在同一个查询阶段内,包含不同的执行计划片段的查询任务设置在其对应的查询阶段内;为了在一个查询阶段中包含尽可能少的本地数据,需将同一个查询阶段中的本地数据划分开,但是部分查询阶段需要同时被执行;通过上述的分阶段调度操作中的tarjan算法可以计算出各个查询阶段之间的本地数据源与远程数据源之间的数据关系,并通过强连通分量将计算得到整个查询计划可以被划分为多少个调度任务,亦可查询每个调度任务中包含了哪些查询阶段,以及不同的查询阶段的调度顺序。66.作为添加有向边的一种实施方式,有向边设置为由父查询阶段指向子查询阶段。67.具体地,被调度使用的是父查询阶段,调度使用父查询阶段的是子查询阶段;即有向边的一种连接方法设置为由父查询阶段指向子查询阶段,即该有向边的头为父查询阶段,该有向边的尾为子查询阶段。68.远程连接操作的由probe端到build端添加有向边。69.具体地,远程连接操作为将远程数据源与本地数据源进行哈希连接,probe端为探测端,build端为执行端;即有向边的一种连接方法设置为远程连接操作的由probe端指向build端,即该有向边的头为probe端,该有向边的尾为build端。70.数据传输操作的若干个数据源之间从左到右依次添加有向边。71.具体地,对于数据传输操作的若干个数据源之间,根据排列顺序,从左至右依次添加有向边。72.上述实施方式中,向所有拆分后的查询阶段中添加有向边,即根据查询计划中的查询正常执行,在调度过程中需要先调度有向边的上游节点再调度有向边的下游节点。73.作为步骤s404的一种实施方式,根据计算出的强连通分量,对强连通分量里的阶段进行分类;同一强连通分量中的查询阶段划分至同一调度阶段中;不同强连通分量之间的调度阶段基于有向边的方向设置调度顺序。74.具体地,根据计算出强连通分量,将同一强连通分量中的所有查询阶段划分至同一调度阶段中,每个调度阶段中的所有查询阶段中的查询任务需同时被调度执行;将不同强连通分量进行排序,即根据强连通分量之间的有向边的方向设置调度顺序;可以理解的是,强连通分量之间的有向边均为单向边,从而根据调度阶段的调度顺序对查询阶段进行调度;从而根据不同查询阶段任务依赖数据的关系出发,对节点调度执行的任务进行规划,分批次调度查询任务执行。75.例如,对于用户的查询请求,生成查询计划后,查询计划被切分为第一查询阶段和第二查询阶段,根据有向边的设置方法,若该查询计划的有向边设置为父查询阶段指向子查询阶段以及probe端指向build端,且对于两有向边均是由第一查询阶段指向第二查询阶段,此时对于有向图g《第一查询阶段,第二查询阶段》,其强连通分量为第一查询阶段以及第二查询阶段两个强连通分量,之后第一查询阶段和第二查询阶段被放入两个不同的调度阶段中,并且第一查询阶段所在的调度阶段优先被调度。76.又例如,对于用户的查询请求,生成查询计划后,查询计划被切分为第三查询阶段和第四查询阶段,根据有向边的设置方法,若该查询计划的有向边设置为父查询阶段指向子查询阶段以及probe端指向build端,且对于一有向边是由第三查询阶段指向第四查询阶段,另一有向边是由第四查询阶段指向第三查询阶段,此时对于有向图g《第三查询阶段,第四查询阶段》,其强连通分量为第三查询阶段和第四查询阶段一个强连通分量,之后第三查询阶段和第四查询阶段被放入相同的调度阶段中,并且同时被调度。77.应当理解的是,tarjan算法,包括:从有向图中的任意一个未访问过的节点x开始深度优先搜索,初始化dfn[x]=low[x]=++num;其中num是一个全局变量,表示当前访问的顺序;节点x即为查询阶段所代表的顶点;dfn[x]表示在深度优先搜索算法中节点x被访问的时间点,low[x]表示在深度优先搜索算法中,节点x通过节点之间的有向边可回溯到的最早时间点。[0078]将节点x入栈,并将节点x标记为已访问,即之后不再访问。[0079]遍历节点x的所有出边(x,y),如果节点y未访问过,则递归调用tarjan(y),并更新low[x]=min(low[x],iow[y]);如果节点y已访问过且在栈中,则更新low[x]=min(low[x],dfn[y]),即使low[x]始终保持最小。[0080]如果dfn[x]==low[x],则说明节点x是一个强连通分量的头结点,此时将节点不断出栈,直到遇到节点x为止,出栈的节点都属于同一个强连通分量,未出栈的节点x为一个强连通分量。[0081]重复以上步骤,直到所有节点都被访问过为止。[0082]例如,运用至本技术实施例中,第五查询阶段、第六查询阶段和第七查询阶段作为有向图g的三个顶点,分别为顶点m、顶点n和顶点l,且有向边设置为mn,nl以及ln;首先从第五查询阶段作为节点m开始深度优先搜索,初始化dfn[m]=low[m]=++num,此时dfn[m]=1,low[m]=1。[0083]并将节点m入栈,且将节点m标记为已访问,之后不再访问。[0084]遍历节点m的所有有向边,即mn,此时节点n未被访问,则递归调用tarjan(n),此时节点n的dfn[n]=2,low[n]=2,且将节点n标记为已访问,之后不再访问。[0085]之后遍历节点n的所有有向边,即nl,此时节点l未被访问,则递归调用tarjan(l),此时节点l的dfn[l]=3,low[l]=3;再遍历节点l的所有有向边,即ln,节点n已被访问,则更新low[l]的值,此时节点l的dfn[l]=3,low[l]=2,且将节点l标记为已访问,之后不再访问,此时所有节点均访问。[0086]并依照dfn的值依次入栈,且dfn[m]=low[m],说明节点m是一个强连通分量的头结点,此时不断出栈,直到遇到节点m为止,出栈的节点n和节点l都属于同一个强连通分量;即对于该有向图g包含两个强连通分量,一个是节点m即第五查询阶段,另一个是节点n和节点即第六查询阶段和第七查询阶段;且在调用时,先调用第五查询阶段所在的调度阶段。[0087]本技术实施例还公开一种查询任务分阶段调度装置。[0088]参照图5,一种查询任务分阶段调度装置包括:获取模块,用于获取用户的查询请求,并用于获取查询任务内的查询任务信息;处理模块,用于将用户的查询请求生成为查询计划,并用于将查询任务信息划分,还用于将查询计划切分并设置调度顺序;查询模块,用于执行下发的查询任务,并得到查询任务对应的查询数据。[0089]上述实施方式中,在分布式数据库中,通过获取模块获取用户的查询请求,之后通过处理模块将用户的查询请求生成为查询计划,并将查询计划分为若干个查询阶段;之后通过处理模块创建查询任务并将查询任务信息划分为任务准备信息和任务驱动信息,并通过获取模块获取查询任务内的任务准备信息和/或任务驱动信息,之后通过处理模块对各个查询计划通过分阶段调度操作分配调度顺序,最后通过查询模块执行下发的查询任务,得到查询任务对应的查询数据,对节点调度执行的任务进行规划,分批次调度查询任务执行,使调度的查询任务有序进行,减轻了节点的负载尤其是磁盘i/o波动,提高集群运行稳定性以及执行效率。[0090]本技术实施例的一种查询任务分阶段调度装置能够实现上述一种查询任务分阶段调度方法的任一种方法,且一种查询任务分阶段调度装置中各个模块的具体工作过程可参考上述方法实施例中的对应过程。[0091]在本技术所提供的几个实施例中,应该理解到,所提供的方法和系统,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的;例如,某个模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。[0092]本技术实施例还公开一种计算机设备。[0093]计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现如上述的一种查询任务分阶段调度方法。[0094]本技术实施例还公开一种计算机可读存储介质。[0095]计算机可读存储介质,存储有能够被处理器加载并执行如上述的一种查询任务分阶段调度方法中任一种方法的计算机程序。[0096]其中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用;计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、rf等等,或者上述的任意合适的组合。[0097]需要说明的是,在上述实施例中,对各个实施例的描述各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。[0098]以上均为本技术的较佳实施例,并非依此限制本技术的保护范围,本说明书(包括摘要和附图)中公开的任一特征,除非特别叙述,均可被其他等效或者具有类似目的的替代特征加以替换。即,除非特别叙述,每个特征只是一系列等效或类似特征中的一个例子而已。当前第1页12当前第1页12
技术特征:
1.一种查询任务分阶段调度方法,其特征在于,应用于分布式数据库,包括:根据查询请求生成查询计划,并将所述查询计划拆分为多个查询阶段,每个所述查询阶段均包含有执行计划片段;创建查询任务,查询任务信息包括任务号、执行计划片段和数据源信息;对所述查询任务进行分类,将相同的所述查询任务信息划分至同一查询阶段,将不同的所述查询任务信息划分至不同查询阶段;执行所述查询任务,处于同一查询阶段的查询任务同时调度;处于不同查询阶段的查询任务根据分阶段调度操作分配调度顺序,并按照调度顺序依次被调度;其中,所述分阶段调度操作用于依照查询阶段之间的数据依赖关系以分配调度顺序。2.根据权利要求1所述一种查询任务分阶段调度方法,其特征在于,根据查询请求生成查询计划,并将所述查询计划拆分为多个查询阶段,每个所述查询阶段均包含有执行计划片段,具体包括:节点接收到所述查询计划后,对节点储存的数据进行全表扫描并读取;根据数据传输操作将相同的数据汇总到相同的节点上;基于远程扫描对所述数据传输操作产生的数据进行读取并进行连接操作。3.根据权利要求1所述一种查询任务分阶段调度方法,其特征在于,创建查询任务,具体包括:将所述查询任务信息划分为任务准备信息和任务驱动信息,其中,所述任务准备信息包括任务号和执行计划片段,所述任务驱动信息包括任务号和数据源信息;当节点接收到所述任务准备信息后,创建所述查询任务并根据执行计划片段作任务执行准备;当节点接收到所述任务驱动信息后,将数据源与已创建好的任务匹配,并驱动查询任务执行。4.根据权利要求3所述一种查询任务分阶段调度方法,其特征在于:所述数据源信息包括本地数据源和远程数据源,所述本地数据源的数据片内容为数据存储地址,所述远程数据源的数据片内容为数据传输操作产生数据的任务号。5.根据权利要求1所述一种查询任务分阶段调度方法,其特征在于,分阶段调度操作,具体包括:设置一个有向图,将所有拆分后的所述查询阶段作为顶点加入有向图中;并根据对应关系在若干个顶点之间添加有向边;基于tarjan算法,计算有向图中的所有强连通分量,即本地数据源与远程数据源之间的数据依赖关系;根据所述强连通分量设置各个查询阶段的调度顺序。6.根据权利要求5所述一种查询任务分阶段调度方法,其特征在于,根据对应关系在若干个顶点之间添加有向边,具体包括:所述有向边设置为由父查询阶段指向子查询阶段;远程连接操作的由probe端到build端添加所述有向边;数据传输操作的若干个数据源之间从左到右依次添加所述有向边。7.根据权利要求6所述一种查询任务分阶段调度方法,其特征在于,根据所述强连通分
量设置各个查询阶段的调度顺序,具体包括:根据计算出的所述强连通分量,对所述强连通分量里的查询阶段进行分类;同一所述强连通分量中的查询阶段划分至同一调度阶段中;不同所述强连通分量之间的调度阶段基于有向边的方向设置调度顺序。8.一种查询任务分阶段调度装置,其特征在于,包括:获取模块,用于获取用户的查询请求,并用于获取查询任务内的查询任务信息;处理模块,用于将用户的查询请求生成为查询计划,并用于将查询任务信息划分,还用于将查询计划切分并设置调度顺序;查询模块,用于执行下发的查询任务,并得到所述查询任务对应的查询数据。9.一种计算机设备,其特征在于:包括存储器、处理器以及储存在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行如权利1-7中任一所述的一种查询任务分阶段调度方法。10.一种计算机可读存储介质,其特征在于,包括存储有能够被处理器加载并执行如权利要求1至7中任一种查询任务分阶段调度方法的计算机程序。
技术总结
本申请涉及一种查询任务分阶段调度方法及系统,应用于分布式数据库,包括:根据查询请求生成查询计划,并将查询计划拆分为多个查询阶段,每个查询阶段均包含有执行计划片段;创建查询任务,查询任务信息包括任务号、执行计划片段和数据源信息;对查询任务进行分类,将相同的查询任务信息划分至同一查询阶段,将不同的查询任务信息划分至不同查询阶段;执行查询任务,处于同一查询阶段的任务同时调度;处于不同查询阶段的任务根据分阶段调度操作分配调度顺序,并按照调度顺序依次被调度;其中,所述分阶段调度操作用于依照查询阶段之间的数据依赖关系以分配调度顺序。本申请具有减轻节点负载以及磁盘I/O波动,以提高数据运行稳定性的效果。定性的效果。
技术研发人员:刘长利
受保护的技术使用者:北京傲韦科技有限公司
技术研发日:2023.07.11
技术公布日:2023/10/15
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/
上一篇:一种回转式谷子间苗机的制作方法 下一篇:一种家用新风测漏试压装置及方法与流程