一种查询处理方法、装置、设备以及可读存储介质与流程
本技术涉及计算机,尤其涉及一种查询处理方法、装置、设备以及可读存储介质。
背景技术:
1、在数据库执行结构查询语言(structured query language,sql)中的语句的过程中,计划树是数据库执行查询的详细说明。其中,计划树是由多个节点组成的树状结构,每个节点代表一个执行操作。树的根节点(root节点)表示为整个查询的执行计划,而叶子节点表示最底层的操作,如表扫描、索引扫描等。
2、在实际应用中,数据库执行查询的过程中会生成多个等价计划树,各个等价计划树可依赖统计信息(提供代价计算的原料信息)与代价模型计算出运行代价,数据库的查询优化器可在搜索空间中选择代价最低的计划树作为最优计划树,然后通过相应的计算引擎执行此最优计划树以实现查询。
3、然而,在具体实现中,某些相似的查询语句的最优计划树很可能是相同的,采用上述方式来为查询语句预测最优计划树的方式无疑会浪费掉大量的计算资源,因为上述方式会在接收到任一查询语句时,均会执行一次完整的最优计划树的确定流程;而且,由于每个查询语句均需执行完整的最优计划树的确定流程才能够确定出其对应的最优计划树,这还会影响查询语句的最优计划树的确定效率,从而降低整体的查询效率。
技术实现思路
1、本技术实施例提供一种查询处理方法、装置、设备以及可读存储介质,可以在查询业务中,提升查询效率,降低计算资源消耗。
2、本技术实施例一方面提供了一种查询处理方法,包括:
3、对接收到的查询语句进行结构化分析,得到查询语句的语句结构信息;
4、获取预配置的至少一个计划模板;一个计划模板是对一个历史计划树的计划结构信息进行模板化处理后所得到的,一个历史计划树是指一个历史查询语句的最优计划树;
5、获取查询语句的语句结构信息与每个计划模板之间的兼容度,并按照兼容度从至少一个计划模板中确定查询语句的n个兼容模板,n为整数;
6、基于查询语句对每个兼容模板进行实例化,得到每个兼容模板对应的候选计划树;
7、根据每个候选计划树的计划特征,从n个候选计划树中确定查询语句的最优计划树。
8、本技术实施例一方面提供了一种查询处理装置,包括:
9、语句分析模块,用于对接收到的查询语句进行结构化分析,得到查询语句的语句结构信息;
10、模板获取模块,用于获取预配置的至少一个计划模板;一个计划模板是对一个历史计划树的计划结构信息进行模板化处理后所得到的,一个历史计划树是指一个历史查询语句的最优计划树;
11、模板确定模块,用于获取查询语句的语句结构信息与每个计划模板之间的兼容度,并按照兼容度从至少一个计划模板中确定查询语句的n个兼容模板,n为整数;
12、实例化模块,用于基于查询语句对每个兼容模板进行实例化,得到每个兼容模板对应的候选计划树;
13、计划树确定模块,用于根据每个候选计划树的计划特征,从n个候选计划树中确定查询语句的最优计划树。
14、在一个实施例中,至少一个计划模板包括计划模板si,i为正整数;
15、模板获取模块对计划模板si的预配置过程,包括:
16、通过历史计划树pi对应的历史查询语句,确定历史计划树pi的计划结构信息;历史计划树pi的计划结构信息包含历史计划树pi对应的语句结构信息及树结构信息;
17、获取预设的模板处理规则,模板处理规则中包含针对语句类型的第一模板化方式及针对树类型的第二模板化方式;
18、按照第一模板化方式,对历史计划树pi对应的语句结构信息进行模板化处理,并按照第二模板化方式,对历史计划树pi对应的树结构信息进行模板化处理,得到计划模板si。
19、在一个实施例中,历史计划树pi由一个或多个算子所组成;
20、模板获取模块通过历史计划树pi对应的历史查询语句,确定历史计划树pi的计划结构信息的具体实现方式,包括:
21、将历史计划树pi对应的历史查询语句确定为第一目标历史查询语句;
22、获取第一目标历史查询语句中涉及的数据表及谓词;
23、获取第一目标历史查询语句中所涉及的数据表之间的表连接关系,将第一目标历史查询语句对应的表连接关系及涉及的谓词确定为历史计划树pi对应的语句结构信息;
24、按照预设的算子排序规则将历史计划树pi中的一个或多个算子进行排序,并将排序得到的算子序列确定为历史计划树pi对应的树结构信息;
25、将历史计划树pi对应的语句结构信息及对应的树结构信息进行融合,得到历史计划树pi的计划结构信息。
26、在一个实施例中,模板确定模块获取查询语句的语句结构信息与每个计划模板之间的兼容度的具体实现方式,包括:
27、将至少一个计划模板中的任意一个计划模板确定为目标计划模板;
28、获取查询语句的语句结构信息中所包含的表连接关系,以及目标计划模板中所包含的模板化的表连接关系;
29、将查询语句的语句结构信息中所包含的表连接关系确定为第一连接关系,并将目标计划模板中所包含的模板化的表连接关系确定为第二连接关系;
30、将第一连接关系与第二连接关系进行关系兼容检测;
31、若关系兼容检测结果指示第一连接关系与第二连接关系之间具备兼容性,则确定查询语句的语句结构信息与目标计划模板之间的兼容度大于兼容度阈值;
32、若兼容检测结果指示第一连接关系与第二连接关系之间不具备兼容性,则确定查询语句的语句结构信息与目标计划模板之间的兼容度小于兼容度阈值。
33、在一个实施例中,模板确定模块按照兼容度从至少一个计划模板中确定查询语句的n个兼容模板的具体实现方式,包括:
34、在查询语句的语句结构信息与各个计划模板的兼容度中,获取大于兼容度阈值的n个兼容度;
35、将大于兼容度阈值的n个兼容度分别对应的计划模板,确定为查询语句的兼容模板。
36、在一个实施例中,每个计划模板包含模板化的算子序列;
37、实例化模块基于查询语句对每个兼容模板进行实例化,得到每个兼容模板对应的候选计划树的具体实现方式,包括:
38、将兼容模板中的任意一个兼容模板确定为目标兼容模板,并将目标兼容模板中包含的模板化的算子序列确定为目标算子序列;
39、在查询语句中获取目标算子序列中每个算子对应的实例化参数;
40、将查询语句中的各个实例化参数填充至目标算子序列的对应算子中,得到目标兼容模板对应的实例化算子序列;
41、按照预设的计划树转换规则,将实例化算子序列进行计划树转换处理,得到目标兼容模板对应的候选计划树。
42、在一个实施例中,计划树确定模块根据每个候选计划树的计划特征,从n个候选计划树中确定查询语句的最优计划树的具体实现方式,包括:
43、获取每个候选计划树的计划特征,并基于每个候选计划树的计划特征调用计划评估模型进行计划评估处理,得到每个候选计划树的计划评估值;
44、从n个计划评估值中获取最大计划评估值;
45、将最大计划评估值对应的候选计划树确定为查询语句的最优计划树。
46、在一个实施例中,计划树确定模块获取每个候选计划树的计划特征的具体实现方式,包括:
47、将n个候选计划树中的任意一个候选计划树确定为目标候选计划树,并将目标候选计划树对应的历史查询语句确定为第二目标历史查询语句;
48、对第二目标历史查询语句进行语义分析处理,得到第二目标历史查询语句对应的语义特征;
49、对目标候选计划树进行树结构分析处理,得到目标候选计划树对应的树结构特征;
50、将第二目标历史查询语句对应的语义特征与目标候选计划树对应的树结构特征进行融合,得到目标候选计划树的计划特征。
51、在一个实施例中,计划树确定模块对第二目标历史查询语句进行语义分析处理,得到第二目标历史查询语句对应的语义特征的具体实现方式,包括:
52、对第二目标历史查询语句进行谓词约束分析处理,得到第二目标历史查询语句的谓词约束特征;
53、对第二目标历史查询语句进行谓词选择性的量化处理,得到第二目标历史查询语句的谓词量化特征;
54、对第二目标历史查询语句进行跨表语义分析处理,得到第二目标历史查询语句的跨表语义特征;
55、将第二目标历史查询语句的谓词约束特征、谓词量化特征及跨表语义特征进行融合,得到第二目标历史查询语句对应的语义特征。
56、在一个实施例中,计划树确定模块对目标候选计划树进行树结构分析处理,得到目标候选计划树对应的树结构特征的具体实现方式,包括:
57、基于目标候选计划树,调用树分析模型进行树结构卷积计算,得到目标候选计划树的全局特征;
58、按照指定向量长度将全局特征进行向量映射处理,得到目标候选计划树对应的树结构特征。
59、在一个实施例中,计划树确定模块对计划评估模型的预训练过程,包括:
60、获取训练数据,训练数据包含历史查询语句、历史查询语句对应的最优计划树及历史查询语句对应的低效计划树;
61、获取历史查询语句的最优计划树的第一计划特征及低效计划树的第二计划特征,并分别基于第一计划特征与第二计划特征调用初始计划评估模型进行计划评估处理,得到历史查询语句的最优计划树的第一计划评估值及低效计划树的第二计划评估值;
62、统计历史查询语句的最优计划树的实际执行时长及低效计划树的实际执行时长;
63、根据历史查询语句的最优计划树的实际执行时长、低效计划树的实际执行时长、第一计划评估值以及第二计划评估值进行损失计算,得到历史查询语句对应的预测损失;
64、基于历史查询语句对应的预测损失对初始计划评估模型进行预训练,得到计划评估模型。
65、在一个实施例中,计划树确定模块获取训练数据的具体实现方式,包括:
66、获取历史查询语句及历史查询语句的最优计划树;
67、基于预设的语句改写方式对历史查询语句进行改写,得到改写查询语句;
68、采用查询优化器对改写查询语句进行语句解析,得到改写查询语句的最优计划树,并将改写查询语句的最优计划树作为历史查询语句对应的低效计划树;
69、将历史查询语句、历史查询语句对应的最优计划树及对应的低效计划树整合为训练数据。
70、本技术实施例一方面提供了一种计算机设备,包括:处理器和存储器;
71、存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行本技术实施例中的方法。
72、本技术实施例一方面提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序包括程序指令,程序指令当被处理器执行时,执行本技术实施例中的方法。
73、本技术的一个方面,提供了一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机程序,处理器执行该计算机程序,使得该计算机设备执行本技术实施例中一方面提供的方法。
74、在本技术实施例中,提供一种数据库的查询方案,能够更为高效地为查询语句确定出准确的最优计划树,从而提升查询效率,并降低计算资源的消耗。具体的,本技术会预先获取到各个已经执行过的历史查询语句的最优计划树,然后将这些最优计划树的计划结构信息进行模板化处理,以形成多个计划模板并缓存;这样,后续在接收到任一查询语句时,可跳过传统的优化流程,直接获取到当前查询语句的语句结构信息,再获取到该语句结构信息与各个计划模板之间的兼容度,该兼容度可判断该语句结构信息与某个计划模板之间是否兼容,若语句结构信息与某个计划模板之间是兼容的,则可反映出该查询语句与该计划模板对应的历史查询语句之间是具备结构相似性的,这样,按照各个兼容度即可在各个计划模板中找出该查询语句的多个(例如,n个)兼容模板;基于该查询语句对该兼容模板进行实例化,即可得到该查询语句对应的候选计划树,最后可以根据各个候选计划树的计划特征,从n个候选计划树中确定出该查询语句的最优计划树。可见,本技术通过历史查询语句预配置不同的计划模板,可以实现结构相似的两个查询语句的最优计划树的高效复用,对于任一查询语句而言,无需从头计算该查询语句的候选计划树,只需从各个计划模板中找出兼容的即可,由此可以极大地缩短确定最优计划树的时间,降低系统对计算候选计划树的资源消耗。综上,本技术可以在查询业务中,提升查询效率,并降低计算资源的消耗。
版权声明:本站专利文献数据主要来源于国家知识产权局等公开渠道,由 技术新讯 进行整理汇编。页面设计及数据汇编的著作权归本站所有。全部内容仅供个人学习、科研评估与技术交流参考,严禁用于任何商业用途(包括但不限于直接生产制造、技术转让、倒卖数据等)。
免责条款:专利技术具有时效性,本站不对资料的绝对准确性、完整性和可实施性提供任何明示或暗示的担保。因参考本站内容造成的直接或间接损失,本站不承担相关法律责任。若您认为本站内容有侵权问题,请及时提供权属证明与我们联系,本站将在核实后依法处理。反馈意见:yyfuon@163.com