一种查询优化方法、产品、介质与设备与流程

摘要: 本发明涉及数据库,特别是涉及一种查询优化方法、产品、介质与设备。背景技术:1、在数据库管理系统中,分组统计与聚合(groupby+aggregation)是结构...
一种查询优化方法、产品、介质与设备与流程

本发明涉及数据库,特别是涉及一种查询优化方法、产品、介质与设备。

背景技术:

1、在数据库管理系统中,分组统计与聚合(group by + aggregation)是结构化分析型查询中最核心的处理类型之一。主流数据库在执行此类查询时通常采用基于哈希的聚合方法或基于排序的聚合方法,通过对输入数据进行全量扫描,构建完整的分组集合,随后再产生最终结果。这些方法在典型的分析场景中具有良好性能,但在处理高基数(high-cardinality)数据集或者仅需少量输出结果的聚合查询时,例如执行查询语句“group by… limit n”时,仍然存在显著的效率瓶颈。

2、对于仅需少量输出结果的分组聚合查询,现有一类哈希聚合方法提出将limit约束的信息向下传导到分组构建阶段,以减少无意义分组的构建和聚合开销,从而提高分组聚合效率。

3、然而,现有的这类哈希聚合方法对所有具有limit约束的分组聚合查询均直接约束分组构建过程,未考虑查询是否需要全部分组参与运算,在实际应用时存在破坏查询语义正确性的风险,查询结果的正确性无法得到可靠保障。

技术实现思路

1、鉴于上述问题,提出了一种克服上述问题或者至少部分地解决上述问题的查询优化方法、产品、介质与设备。

2、本发明的一个目的是提供一种查询优化方法,以保证查询语义的正确性。

3、本发明一个进一步的目的是要实现对查询语义安全性的多维度检测,从而确保早停优化方案的可靠性。

4、本发明另一个进一步的目的是要在保持语义正确性的前提下显著降低聚合运算的总体复杂度,从而提升查询效率。

5、具体地,根据本发明的一个方面,本发明提供了一种查询优化方法,包括:

6、获取分组聚合查询语句中的行数限制条件,其中,行数限制条件用于限定分组聚合结果的返回数量;

7、判断分组聚合查询语句是否满足预设的哈希早停启用条件,其中,哈希早停启用条件通过分组聚合结果是否依赖于全部分组数据设定;

8、若是,则基于行数限制条件动态控制分组构建过程中的分组数量,以使分组数量不超过返回数量。

9、可选地,哈希早停启用条件包括以下中的一种或多种:

10、分组聚合查询语句不包含排序子句;

11、分组聚合查询语句的条件过滤子句不依赖全部分组数据进行判定;

12、分组聚合查询语句中的聚合函数不需要全部分组数据参与。

13、可选地,判断分组聚合查询语句是否满足预设的哈希早停启用条件的步骤包括:

14、依次判断分组聚合查询语句是否包含排序子句、分组聚合查询语句的条件过滤子句是否依赖全部分组数据进行判定、分组聚合查询语句中的聚合函数是否需要全部分组数据参与;

15、若判断结果均为否,则确定分组聚合查询语句满足预设的哈希早停启用条件;

16、若任一判断结果为是,则确定分组聚合查询语句不满足预设的哈希早停启用条件。

17、可选地,基于行数限制条件动态控制分组构建过程中的分组数量的步骤包括:

18、依次获取与分组聚合查询语句对应的各个输入元组的分组键;

19、判断当前输入元组的分组键是否命中已建分组;

20、若是,则对命中的已建分组执行聚合更新;

21、若否,则根据当前已建分组的数量与行数限制条件的比对结果控制新分组的创建。

22、可选地,根据当前已建分组的数量与行数限制条件的比对结果控制新分组的创建的步骤包括:

23、判断当前已建分组的数量是否小于行数限制条件限定的返回数量;

24、若小于,则创建新分组,并更新当前已建分组的数量;

25、若不小于,则禁止创建新分组,并跳过当前输入元组。

26、可选地,对命中的已建分组执行聚合更新的步骤包括:

27、获取与命中的已建分组对应的哈希条目;

28、基于当前输入元组的数据,对对应的哈希条目执行对应聚合函数的增量更新操作。

29、可选地,依次获取与分组聚合查询语句对应的各个输入元组的分组键的步骤包括:

30、逐行读取与分组聚合查询语句对应的输入数据集中的各个输入元组;

31、获取分组聚合查询语句中的分组子句指定的分组字段;

32、从当前读取的输入元组中提取对应分组字段的取值,作为当前输入元组的分组键。

33、根据本发明的另一个方面,还提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述任一种的查询优化方法的步骤。

34、根据本发明的又一个方面,还提供了一种计算机程序产品,其包括计算机程序,该计算机程序被处理器执行时实现上述任一种的查询优化方法的步骤。

35、根据本发明的再一个方面,还提供了一种计算机设备,包括存储器、处理器及存储在存储器上的计算机程序,处理器执行计算机程序以实现上述任一种的查询优化方法的步骤。

36、本发明的查询优化方法,通过获取分组聚合查询语句中的行数限制条件,并判断该查询语句是否满足预设的哈希早停启用条件,在满足哈希早停启用条件的情况下基于行数限制条件动态控制在分组构建过程中的分组数量,实现了根据分组聚合查询语句的语义特性选择性地启用哈希早停优化,从而保证了查询语义的正确性及系统行为的可预测性,进而保证了查询结果的正确性。另外,本发明的查询优化方法,通过在查询结果不依赖于全部分组数据时基于行数限制条件动态控制分组构建过程中的分组数量,以使分组数量不超过返回数量,减少了不必要的分组构建和聚合开销,从而在保持语义正确性的前提下显著降低了聚合运算的总体复杂度,进而提升了查询效率。

37、进一步地,本发明的查询优化方法,通过将哈希早停启用条件设定为分组聚合查询语句不包含排序子句、条件过滤子句不依赖全部分组数据进行判定、聚合函数不需要全部分组数据参与中的一种或多种,实现了启用条件与安全边界的构建,从而达成对查询语义安全性的多维度检测,保证了仅在分组聚合结果不依赖于全部分组数据时才允许启用哈希早停优化,从而确保了早停优化不会破坏查询结果的正确性,进而确保了早停优化方案的可靠性。

38、更进一步地,本发明的查询优化方法,通过依次获取各个输入元组的分组键并判断是否命中已建分组,在命中时执行聚合更新,在未命中时根据当前已建分组的数量与行数限制条件的比对结果控制新分组的创建,实现了在分组构建过程中对每个输入元组的实时处理与分组数量的动态控制,从而在保持语义正确性的前提下显著降低了聚合运算的总体复杂度,进而提升了查询效率。

39、根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。

1.一种查询优化方法,包括:

2.根据权利要求1所述的查询优化方法,其中,

3.根据权利要求2所述的查询优化方法,其中,

4.根据权利要求1所述的查询优化方法,其中,

5.根据权利要求4所述的查询优化方法,其中,

6.根据权利要求4所述的查询优化方法,其中,

7.根据权利要求4所述的查询优化方法,其中,

8.一种计算机程序产品,包括计算机程序,其中,该计算机程序被处理器执行时实现权利要求1至7中任一项所述的查询优化方法的步骤。

9.一种计算机可读存储介质,其上存储有计算机程序,其中所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的查询优化方法的步骤。

10.一种计算机设备,包括存储器、处理器及存储在存储器上的计算机程序,其中,所述处理器执行所述计算机程序以实现权利要求1至7中任一项所述的查询优化方法的步骤。