数据处理方法、装置、电子设备、存储介质及产品与流程

摘要: 本公开涉及数据处理、数据库领域,具体而言,本公开涉及一种数据处理方法、装置、电子设备、计算机可读存储介质及计算机程序产品。背景技术:1、随着信息技术的飞速发展,...
数据处理方法、装置、电子设备、存储介质及产品与流程

本公开涉及数据处理、数据库领域,具体而言,本公开涉及一种数据处理方法、装置、电子设备、计算机可读存储介质及计算机程序产品。

背景技术:

1、随着信息技术的飞速发展,数据库系统在众多领域得到了广泛且深入的应用,其性能和效率对于各类业务系统的稳定运行至关重要。对于用户输入的一个数据库操作指令,可能有多种不同的执行计划。现有技术采用在数据库操作指令中添加提示(hint)的方式,从多个执行计划中确定出最终执行数据库操作指令的执行计划。但这种确定执行计划的方式用户使用门槛高,限制了其在实际应用中的推广和使用,并且根据这种方式确定出的执行数据库操作指令的效果也不理想,因此确定最优执行计划的方式有待改善。

技术实现思路

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、对于每个选择策略集,在所述选择策略集相匹配的操作算子序列包括多个的情况下,若所述两个执行计划对应的操作算子序列包括与所述选择策略集相匹配的操作算子序列,则将所述选择策略集作为目标策略集。

40、根据本公开实施例的另一个方面,提供了一种数据处理装置,该装置包括:

41、接收操作指令模块,用于接收针对目标数据表的数据库操作指令,生成所述数据库操作指令的多个执行计划,其中,每一所述执行计划包括一个操作算子序列,所述操作算子序列中包括至少一个数据库操作算子;

42、获取策略模块,用于获取用于选择执行计划的多个选择策略集,以及与每一选择策略集相匹配的至少一个操作算子序列,每个选择策略集包括至少一个选择策略,每个所述选择策略为计划确定策略或计划的执行代价调整策略;

43、确定策略模块,用于从所述多个选择策略集中,确定与所述多个执行计划中至少一个执行计划相匹配的目标策略集;根据所述目标策略集中的选择策略,从所述多个执行计划中确定出目标执行计划;

44、执行操作指令模块,用于基于所述目标执行计划,对所述目标数据表执行所述数据库操作指令。

45、根据本公开实施例的另一个方面,提供了一种电子设备,该电子设备包括存储器、处理器及存储在存储器上的计算机程序,所述处理器执行所述计算机程序以实现上述的数据处理方法。

46、根据本公开实施例的另一方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述的数据处理方法。

47、根据本公开实施例的另一方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现上述的数据处理方法。

48、本公开实施例提供的技术方案带来的有益效果是:

49、本公开实施例的方法,在执行数据库操作指令的过程中,会为该指令生成多个执行计划,并从用于选择执行计划的多个选择策略集中确定与多个执行计划中的至少一个执行计划相匹配的目标策略集,其中,每个选择策略集中包括计划确定策略或执行代价调整策略。基于选择策略集与执行计划之间的匹配机制,基于目标策略集中的选择策略从多个执行计划中确定出最优的执行计划,执行数据库操作指令。该方法是一种自动化确定最优执行计划的方式,对于用户的技术水平要求低,用户的使用门槛低,且基于本公开实施例确定出的目标执行计划执行数据库操作指令的执行效果较好。