一种查询优化方法及装置制造方法及图纸

技术编号:26304028 阅读:20 留言:0更新日期:2020-11-10 19:59
本说明书提供一种查询优化方法及装置,其中方法包括:获取待优化的多个查询任务;其中,每个所述查询任务中包括至少一个子任务,并且当同一查询任务中包括至少两个子任务时,所述至少两个子任务之间存在查询依赖关系;根据所述查询依赖关系,将所述多个查询任务组合得到一个组合任务;基于所述组合任务,对不同查询任务中的至少两个子任务进行合并,得到第一合并子任务;其中,执行所述第一合并子任务可得到所述不同查询任务中的至少两个子任务的查询结果。

【技术实现步骤摘要】
一种查询优化方法及装置
本说明书涉及互联网
,尤其涉及一种查询优化方法及装置。
技术介绍
在线查询场景中,经常会遇到高并发、高吞吐、低延迟的查询需求。例如,在线OLTP(On-LineTransactionProcessing,联机事务处理过程)查询场景中,每秒钟可能有几万次的批量查询请求,其中每次批量查询请求中可能包含几十甚至几百个查询任务,且要求查询耗时响应在10ms之内。在这种大量查询任务的场景中,需要对查询任务进行优化以提高查询效率。相关查询优化的技术中,只能在单个查询任务范围内对该查询任务的查询逻辑进行优化。但是,不同的查询任务中仍然存在大量重复的查询逻辑。所以,单个查询任务范围内的查询优化,查询效率仍然较低。
技术实现思路
本说明书至少一个实施例提供了一种查询优化方法,以提升对查询任务的查询效率。第一方面,提供了一种查询优化方法,所述方法包括:获取待优化的多个查询任务;其中,每个所述查询任务中包括至少一个子任务,并且当同一查询任务中包括至少两个子任务时,所述至少两个子任务之间存在查询依赖关系;根据所述查询依赖关系,将所述多个查询任务组合得到一个组合任务;基于所述组合任务,对不同查询任务中的至少两个子任务进行合并,得到第一合并子任务;其中,执行所述第一合并子任务可得到所述不同查询任务中的至少两个子任务的查询结果。第二方面,提供了一种查询优化装置,所述装置包括:获取模块,用于获取待优化的多个查询任务;其中,每个所述查询任务中包括至少一个子任务,并且当同一查询任务中包括至少两个子任务时,所述至少两个子任务之间存在查询依赖关系;组合模块,用于根据所述查询依赖关系,将所述多个查询任务组合得到一个组合任务;合并模块,用于基于所述组合任务,对不同查询任务中的至少两个子任务进行合并,得到第一合并子任务;其中,执行所述第一合并子任务可得到所述不同查询任务中的至少两个子任务的查询结果。第三方面,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现本说明书任一实施例所述的查询优化方法。第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现本说明书任一实施例所述查询优化方法的步骤。由以上技术方案可以看出,本说明书至少一个实施例中,通过将多个查询任务组合得到一个组合任务,基于完整的组合任务,对不同查询任务中的子任务合并为一个任务。由于基于组合任务进行优化的子任务是属于不同查询任务的,所以该方案实现了在多个不同查询任务范围内的查询优化。相比于对单个查询任务的优化方式,可以对不同查询任务中重复的查询逻辑进行合并优化,从而提升查询效率。进一步的,正是基于能够在多个不同查询任务范围内进行任务合并,使得每秒几万次甚至几十万次批量查询的高吞吐成为可能。应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书。附图说明图1是根据一示例性实施例示出的一种查询优化方法流程图;图2是根据一示例性实施例示出的一种组合任务示意图;图3是根据一示例性实施例示出的一种查询优化装置示意图;图4是根据一示例性实施例示出的又一种查询优化装置示意图;图5是根据一示例性实施例示出的又一种查询优化装置示意图;图6是根据一示例性实施例示出的又一种查询优化装置示意图;图7是根据一示例性实施例示出的又一种查询优化装置示意图。具体实施方式这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的具体方式并不代表与本说明书相一致的所有方案。相反,它们仅是与如所附权利要求书中所详述的、本说明书的一些方面相一致的装置和方法的例子。在本说明书使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书。在本说明书和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。应当理解,尽管在本说明书可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。在线查询场景中,经常会遇到高并发、高吞吐、低延迟的查询需求。例如,在电商大促时的在线OLTP查询场景中,每秒钟可能有几万次的批量查询请求,其中每次批量查询请求中可能包含几十甚至几百个查询任务,且要求查询耗时响应在10ms之内。在这种大量查询任务的场景中,需要对查询任务进行优化以提高查询效率。相关查询优化的技术中,只能在单个查询任务范围内对该查询任务的查询逻辑进行优化。比如,将同一个查询任务中相同的两个查询逻辑合并为一个查询逻辑,从而避免重复执行相同的查询逻辑。但是,不同的查询任务中仍然存在大量重复的查询逻辑。在执行不同查询任务的过程中,会大量重复执行相同的查询逻辑。可见,针对单个查询任务的优化方式,查询效率仍然较低,甚至浪费查询资源。为此,本说明书公开了一种查询优化方法,将多个查询任务合并为一个组合任务,在组合任务包含的不同查询任务范围内,使得属于不同查询任务的查询逻辑之间也可以进行优化。需要说明的是,本说明书提供的查询优化方法,可以应用到各种在线查询中,可以包括但不限制于OLTP在线查询或OLAP(On-LineAnalyticalProcessing,联机分析处理)在线查询。为了使本说明书提供的优化查询方法更加清楚,下面结合附图和具体实施例对本说明书提供的方案执行过程进行详细描述。参见图1,图1是本说明书提供的实施例示出的一种查询优化方法流程图。如图1所示,该流程包括:步骤101,获取待优化的多个查询任务;其中,每个所述查询任务中包括至少一个子任务,并且当同一查询任务中包括至少两个子任务时,所述至少两个子任务之间存在查询依赖关系。本实施例中,查询任务是:根据查询条件,从数据源中获取最终查询结果的过程。比如,在查询条件是“男性的姓名”的情况下,可以依据该查询条件从对应的数据源中,查找到符合条件的“姓名”作为查询结果。这就是一个完整的查询任务。其中,每个查询任务由不同的查询逻辑组成,并且可以通过执行查询任务中的查询逻辑最终得到该查询任务的查询结果。本实施例中,以查询任务中的子任务表示不同的查询逻辑,而每个查询任务可以包括一个或者多个子任务。比如,在查询条件是“男性的姓名”的情况下,该查询任务中可以只包括一个子任务:根据“男性”这一本文档来自技高网...

【技术保护点】
1.一种查询优化方法,所述方法包括:/n获取待优化的多个查询任务;其中,每个所述查询任务中包括至少一个子任务,并且当同一查询任务中包括至少两个子任务时,所述至少两个子任务之间存在查询依赖关系;/n根据所述查询依赖关系,将所述多个查询任务组合得到一个组合任务;/n基于所述组合任务,对不同查询任务中的至少两个子任务进行合并,得到第一合并子任务;其中,执行所述第一合并子任务可得到所述不同查询任务中的至少两个子任务的查询结果。/n

【技术特征摘要】
1.一种查询优化方法,所述方法包括:
获取待优化的多个查询任务;其中,每个所述查询任务中包括至少一个子任务,并且当同一查询任务中包括至少两个子任务时,所述至少两个子任务之间存在查询依赖关系;
根据所述查询依赖关系,将所述多个查询任务组合得到一个组合任务;
基于所述组合任务,对不同查询任务中的至少两个子任务进行合并,得到第一合并子任务;其中,执行所述第一合并子任务可得到所述不同查询任务中的至少两个子任务的查询结果。


2.根据权利要求1所述的方法,所述对不同查询任务中的至少两个子任务进行合并,得到第一合并子任务,包括:
基于所述查询依赖关系,确定每个所述查询任务中无依赖的子任务,组成所述组合任务的第一任务集合;
将所述第一任务集合中的至少两个子任务进行合并,得到所述第一合并子任务。


3.根据权利要求2所述的方法,每个所述子任务包括:查询条件和查询数据源;
所述将所述第一任务集合中的至少两个子任务进行合并,得到所述第一合并子任务,包括:
在所述第一任务集合中,将查询条件和查询数据源相同的至少两个子任务进行合并,得到所述第一合并子任务。


4.根据权利要求2所述的方法,每个所述子任务包括查询数据源;
所述将所述第一任务集合中的至少两个子任务进行合并,得到所述第一合并子任务,包括:
从所述第一任务集合中,确定所述查询数据源相同的多个子任务;
在所述查询数据源相同的多个子任务中,将查询路径存在相同部分的至少两个子任务进行合并,得到所述第一合并子任务。


5.根据权利要求2所述的方法,在所述组成所述组合任务的第一任务集合之后,还包括:
基于所述查询依赖关系,在所述组合任务中,确定依赖所述第一任务集合中每个子任务的子任务,组成所述组合任务的第二任务集合;
执行所述第一任务集合中的子任务,并存储查询结果;
若所述第二任务集合和第一任务集合中,存在查询条件和查询数据源相同的相同子任务,则将所述第一任务集合中的相同子任务的查询结果作为所述第二任务集合中的相同子任务的查询结果。


6.根据权利要求1或2所述的方法,每个所述子任务包括查询数据源,且所述查询数据源包括至少两种不同物理架构的数据源。


7.根据权利要求2所述的方法,在所述组成所述组合任务的第一任务集合之后,还包括:
并发执行所述第一任务集合中的子任务;
将查询时长满足预设条件的子任务的查询结果放置在缓存中。


8.根据权利要求1所述的方法,在所述将所述多个查询任务组合得到一个组合任务之前,还包括:
根据预设的判定条件,从所述查询任务中确定第一查询逻辑;所述第一查询逻辑包括:同一所述查询任务中的至少一个子任务;
存储所述第一查询逻辑的查询结果;
在所述将所述多个查询任务组合得到一个组合任务之后,还包括:
判断所述组合任务中存在与所述第一查询逻辑相同的查询逻辑,则将所述第一查询逻辑的查询结果作为所述与所述第一查询逻辑相同的查询逻辑的查询结果。


9.一种查询优化装置,所述装置包括:
获取模块,用于获取待优化的多个查询任务;其中,每个所述查询任务中包括至少一个子任务,并且当同一查询任务中包括至少两个子任务时,所述至少两个子...

【专利技术属性】
技术研发人员:牛建
申请(专利权)人:支付宝杭州信息技术有限公司
类型:发明
国别省市:浙江;33

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

1