一种查询处理方法、装置、设备以及可读存储介质与流程

文档序号:39433500发布日期:2024-09-20 22:33阅读:12来源:国知局
一种查询处理方法、装置、设备以及可读存储介质与流程

本技术涉及计算机,尤其涉及一种查询处理方法、装置、设备以及可读存储介质。


背景技术:

1、在数据库执行结构查询语言(structured query language,sql)中的语句的过程中,计划树是数据库执行查询的详细说明。其中,计划树是由多个节点组成的树状结构,每个节点代表一个执行操作。树的根节点(root节点)表示为整个查询的执行计划,而叶子节点表示最底层的操作,如表扫描、索引扫描等。

2、在实际应用中,数据库执行查询的计划树会生成多个等价计划树,各个等价计划树可依赖统计信息(提供代价计算的原料信息)与代价模型计算出运行代价,数据库的查询优化器可在搜索空间中选择代价最低的计划树作为最优计划树,然后通过相应的计算引擎执行此最优计划树以实现查询。然而,上述依赖统计信息计算运行代价的方式,一旦出现统计信息缺失、统计信息采样计算错误和自动更新机制之后等情况,则会降低收集到的统计信息的准确性,从而导致计算得到的运行代价不够准确;此外,在计算运行代价时收集相应的统计信息,这需要触发额外的计算任务,会为数据库带来额外的计算开销。


技术实现思路

1、本技术实施例提供一种查询处理方法、装置、设备以及可读存储介质,可以在查询业务中,提升计划树的代价计算的准确性,降低计算资源消耗。

2、本技术实施例一方面提供了一种查询处理方法,包括:

3、对接收到的查询语句进行语句解析,生成查询语句的n个候选计划树;n为正整数;

4、对每个候选计划树进行特征签名计算处理,得到每个候选计划树对应的特征签名;一个候选计划树对应的特征签名用于反映候选计划树的查询逻辑;

5、获取代价详情表;代价详情表中包含历史特征签名集合与历史运行代价集合之间的对应关系,历史特征签名集合中的一个历史特征签名与历史运行代价集合中的一个历史运行代价之间存在对应关系,一个历史特征签名是指一个历史查询语句的历史计划树所对应的特征签名;

6、通过每个候选计划树对应的特征签名、代价详情表中历史特征签名集合与历史运行代价集合之间的对应关系,计算每个候选计划树的运行代价;

7、基于每个候选计划树的运行代价从n个候选计划树中选择最优计划树,并将最优计划树提交到计算引擎执行。

8、本技术实施例一方面提供了一种查询处理装置,包括:

9、计划树生成模块,用于对接收到的查询语句进行语句解析,生成查询语句的n个候选计划树;n为正整数;

10、签名获取模块,用于对每个候选计划树进行特征签名计算处理,得到每个候选计划树对应的特征签名;一个候选计划树对应的特征签名用于反映候选计划树的查询逻辑;

11、表获取模块,用于获取代价详情表;代价详情表中包含历史特征签名集合与历史运行代价集合之间的对应关系,历史特征签名集合中的一个历史特征签名与历史运行代价集合中的一个历史运行代价之间存在对应关系,一个历史特征签名是指一个历史查询语句的历史计划树所对应的特征签名;

12、代价计算模块,用于通过每个候选计划树对应的特征签名、代价详情表中历史特征签名集合与历史运行代价集合之间的对应关系,计算每个候选计划树的运行代价;

13、计划树选择模块,用于基于每个候选计划树的运行代价从n个候选计划树中选择最优计划树,并将最优计划树提交到计算引擎执行。

14、在一个实施例中,每个候选计划树由一个或多个算子组成;

15、签名获取模块对每个候选计划树进行特征签名计算处理,得到每个候选计划树对应的特征签名的具体实现方式,包括:

16、将n个候选计划树中的任意一个候选计划树确定为目标候选计划树;

17、获取目标候选计划树中每个算子在目标候选计划树中的树层级,按照每个算子的树层级对目标候选计划树中的一个或多个算子进行排序,得到第一算子序列;

18、对第一算子序列中的每个算子进行算子签名计算,得到每个算子对应的算子签名;

19、按照第一算子序列中一个或多个算子的排列顺序,将一个或多个算子分别对应的算子签名进行排序,得到算子签名序列;

20、将算子签名序列确定为目标候选计划树对应的特征签名。

21、在一个实施例中,签名获取模块对第一算子序列中的每个算子进行算子签名计算,得到每个算子对应的算子签名的具体实现方式,包括:

22、将第一算子序列中的任意一个算子确定为目标算子;

23、对目标算子进行特征释义处理,得到目标算子的释义特征字段;

24、对目标算子的释义特征字段进行特征加工处理,得到目标算子的算子签名。

25、在一个实施例中,签名获取模块对目标算子的释义特征字段进行特征加工处理,得到目标算子的算子特征签名的具体实现方式,包括:

26、按照目标算子的算子逻辑,对目标算子的释义特征字段进行逻辑归类处理,得到目标算子的逻辑归类字段;

27、基于字段标准格式,对目标算子的逻辑归类字段进行标准化处理,得到目标算子的标准释义字段;

28、将目标算子的标准释义字段确定为目标算子的算子签名。

29、在一个实施例中,签名获取模块按照目标算子的算子逻辑,对目标算子的释义特征字段进行逻辑归类处理,得到目标算子的逻辑归类字段的具体实现方式,包括:

30、按照目标算子的算子逻辑对目标算子进行归类处理,得到目标算子所属的目标逻辑类别;

31、将目标算子的释义特征字段中的第一方法字段,替换为用于表征目标逻辑类别所指示的逻辑方法的第二方法字段,得到目标算子的逻辑归类字段。

32、在一个实施例中,签名获取模块基于字段标准格式,对目标算子的逻辑归类释义字段进行标准化处理,得到目标算子的标准释义字段的具体实现方式,包括:

33、从目标算子的逻辑归类字段中获取字段格式不符合字段标准格式的非标准字段;

34、按照字段标准格式将非标准字段进行字段转换处理,得到标准字段;标准字段的字段格式符合字段标准格式;

35、将标准字段与剩余字段所组成的字段确定为目标算子的标准释义字段;剩余字段是指目标算子的逻辑归类字段中除非标准字段以外的字段。

36、在一个实施例中,计划树生成模块对接收到的查询语句进行语句解析,生成查询语句的n个候选计划树的具体实现方式,包括:

37、接收待处理的查询语句;

38、对查询语句进行语法解析处理,得到查询语句的语法解析树;

39、将语法解析树进行逻辑转换,生成查询语句的n个候选计划树。

40、在一个实施例中,代价计算模块通过每个候选计划树对应的特征签名、代价详情表中历史特征签名集合与历史运行代价集合之间的对应关系,计算每个候选计划树的运行代价的具体实现方式,包括:

41、将n个候选计划树中的任意一个候选计划树确定为目标候选计划树;

42、基于目标候选计划树对应的特征签名,遍历代价详情表中的历史特征签名集合;

43、若历史特征签名集合中存在与目标候选计划树对应的特征签名相同的目标历史特征签名,则将目标历史特征签名对应的历史运行代价确定为目标候选计划树的运行代价;

44、若历史特征签名集合中不存在与目标候选计划树对应的特征签名相同的目标历史特征签名,则将目标候选计划树进行拆分得到q个计划子树,并根据q个计划子树、代价详情表中历史特征签名集合与历史运行代价集合之间的对应关系,计算目标候选计划树的运行代价;q为正整数。

45、在一个实施例中,代价计算模块根据q个计划子树、代价详情表中历史特征签名集合与历史运行代价集合之间的对应关系,计算目标候选计划树的运行代价的具体实现方式,包括:

46、获取每个计划子树对应的子特征签名;

47、基于每个计划子树对应的子特征签名遍历历史特征签名集合;

48、根据历史特征签名集合的遍历结果,确定目标候选计划树的运行代价。

49、在一个实施例中,目标候选计划树由一个或多个算子组成;历史特征签名集合的遍历结果为历史特征签名集合中包含目标子特征签名的结果,目标子特征签名是指q个子特征签名中的任意一个子特征签名;

50、代价计算模块根据历史特征签名集合的遍历结果,确定目标候选计划树的运行代价的具体实现方式,包括:

51、将目标子特征签名对应的计划子树确定为目标计划子树,并将目标计划子树包含的算子确定为代价已知算子;

52、将目标候选计划树中除代价已知算子以外的算子确定为剩余算子,并获取剩余算子对应的代价原料信息;代价原料信息包含目标子特征签名对应的历史运行代价;

53、基于剩余算子对应的代价原料信息计算剩余算子对应的算子运行代价;

54、根据剩余算子对应的算子运行代价确定目标候选计划树的运行代价。

55、在一个实施例中,目标候选计划树由一个或多个算子组成;历史特征签名集合的遍历结果为历史特征签名集合中未包含任一子特征签名的结果;

56、代价计算模块根据历史特征签名集合的遍历结果,确定目标候选计划树的运行代价的具体实现方式,包括:

57、获取目标候选计划树中每个算子在目标候选计划树中的树层级,并按照每个算子的树层级对目标候选计划树中的一个或多个算子进行排序,得到目标候选计划树对应的第二算子序列;

58、按照第二算子序列中一个或多个算子的排列顺序,依次计算每个算子对应的算子运行代价;

59、将序列结束算子对应的算子运行代价确定为目标候选计划树的运行代价;序列结束算子是指第二算子序列中处于序列结束位置的算子。

60、在一个实施例中,计划树选择模块基于每个候选计划树的运行代价从n个候选计划树中选择最优计划树的具体实现方式,包括:

61、从n个候选计划树的运行代价中获取最小运行代价;

62、将最小运行代价所指示的候选计划树确定为查询语句的最优计划树。

63、本技术实施例一方面提供了一种计算机设备,包括:处理器和存储器;

64、存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行本技术实施例中的方法。

65、本技术实施例一方面提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序包括程序指令,程序指令当被处理器执行时,执行本技术实施例中的方法。

66、本技术的一个方面,提供了一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机程序,处理器执行该计算机程序,使得该计算机设备执行本技术实施例中一方面提供的方法。

67、在本技术实施例中,提供一种计划树的运行代价的计算方法,能够提升计算得到的运行代价的准确性,同时降低计算运行代价的资源消耗。具体的,在接收到查询语句之后,可以对该查询语句进行语句解析,以得到该查询语句的n个候选计划树;对于任意一个候选计划树而言,可对其进行特征签名计算处理,以得到能够用于反映该候选计划树的查询逻辑的特征签名,然后,通过代价详情表各个历史特征签名与历史运行代价之间的对应关系,可以计算匹配出每个候选计划树对应的特征签名的运行代价,由此即可得到各个候选计划树的运行代价;根据各个候选计划树的运行代价,即可找到最优计划树并将其提交到计算引擎进行执行。应当理解,本技术通过为各个历史计划树确定历史特征签名,并计算及记录各个历史特征签名对应的历史运行代价,可以使得在想要计算某个查询语句的候选计划树的运行代价时,能够基于该候选计划树对应的特征签名,通过各个历史特征签名的历史运行代价,直接计算匹配得到该候选计划树的运行代价,相比于基于传统的基于代价模型来进行估算,无需额外获取统计信息,得到的运行代价更加完善且精准;此外,由于实际应用中,不同的查询语句可以对应同样的计划树或者计划子树,因此,以特征签名作为运行代价计算的基础的方式,可以实现历史运行代价的共享,这样,在计算某个计划树的运行代价时,可以基于共享的已有的历史运行代价,实现快速高效的代价计算,这样不仅可以提升代价计算效率,还可以减少代价计算时所付出的额外计算消耗,从而降低计算时的资源消耗。综上,本技术可以在查询业务中,提升查询语句的计划树的代价计算准确性,并降低计算资源消耗。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1