[发明专利]一种SQL执行计划的确定方法及装置有效
申请号: | 201610095091.0 | 申请日: | 2016-02-19 |
公开(公告)号: | CN107102995B | 公开(公告)日: | 2020-02-21 |
发明(设计)人: | 刘辉军;任阳;李茂增;韩峰 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | G06F16/2453 | 分类号: | G06F16/2453 |
代理公司: | 北京中博世达专利商标代理有限公司 11274 | 代理人: | 申健 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 sql 执行 计划 确定 方法 装置 | ||
本发明的实施例提供一种SQL执行计划的确定方法及装置,涉及计算机技术领域,可以优化SQL执行计划的确定,提高SQL执行计划的执行效率。其中,所述SQL执行计划对应至少一个关系表,在第N次迭代中,该方法包括:获取在第N‑1次迭代中对所述至少一个关系表执行第一计划树后产生的第一迭代参数,其中N为大于1的自然数;根据所述第一迭代参数建立第二计划树;当所述第二计划树与所述第一计划树的差异不大于第一阈值时,将所述第一计划树或所述第二计划树确定为所述SQL执行计划。
技术领域
本发明涉及计算机技术领域,尤其涉及一种SQL执行计划的确定方法及装置。
背景技术
执行一条SQL(Structured Query Language,结构化查询语言)语句通常需要三个阶段,即词法和语法分析阶段、SQL执行计划确定阶段和SQL执行计划执行阶段。
具体的,一条SQL语句表示用户想要得到的结果,例如,查询所有住在北京市的客户,但SQL语句并不会告知服务器如何去执行,因此,当服务器收到一条Query(查询)命令后,经过词法和语法分析阶段确定这条Query命令没有语法错误后,会形成一个Parse Tree(解析树),服务器搜索自身数据库内相关的已统计的统计信息,结合Parse Tree,确定该SQL语句优选的SQL执行计划。其中,SQL执行计划可以以Plan Tree(计划树)的形式得到,一个Plan Tree上的各个节点由若干基本操作组成,例如,遍历多张表,执行一个嵌套连接或Hash(哈希)连接等基本操作,最终,由服务器按照得到的Plan Tree执行该SQL执行计划,输出的结果即为该SQL语句表示的结果。
可以看出,SQL语句的执行效率高低在一定程度上取决于能否确定高效的SQL执行计划,而现有技术中,数据库内的统计信息通常是基于采样值得到的特征值。例如,一个关系表中的元组数(RelTuples)、一个关系表中一个字段内唯一非空数值的数目(Distinct值)等特征值,这些采样得到的特征值通常存在一定的误差,而且在时间上具有滞后性,因此,服务器基于上述统计信息确定出的SQL执行计划通常不是最优的执行计划。
发明内容
本发明的实施例提供了一种SQL执行计划的确定方法及装置,可以优化SQL执行计划的确定,提高SQL执行计划的执行效率。
为达到上述目的,本发明的实施例采用如下技术方案:
本发明实施例的第一方面提供了一种结构化查询语言SQL执行计划的确定方法,该SQL执行计划对应至少一个关系表,在第N次迭代中,包括:获取在第N-1次迭代中对该至少一个关系表执行第一计划树后产生的第一迭代参数,其中N为大于1的自然数;根据该第一迭代参数建立第二计划树;当该第二计划树与该第一计划树的差异不大于第一阈值时,将该第一计划树或该第二计划树确定为该SQL执行计划。
结合第一方面,在第一方面的第一种可能的实现方式中,该第一阈值为0,对应的,该当该第二计划树与该第一计划树的差异不大于第一阈值时,将该第一计划树或该第二计划树确定为该SQL执行计划,包括,当该第二计划树与该第一计划树相同时,将该第一计划树或该第二计划树确定为该SQL执行计划。
本发明实施例所取得的有益效果是,本发明实施例通过迭代执行的方式获得优化的SQL执行计划。在每一次迭代过程中,需要比较上一次迭代过程中建立的计划树(本发明实施例中统一称为第一计划树)与本次迭代过程中建立的计划树(本发明实施例中统一称为第二计划树),并且,该第二计划树是以上一次迭代过程中更新后的迭代参数(本发明实施例中统一称为第一迭代参数)为依据建立的,也就是说,每次迭代过程中建立的第二计划树,都是基于执行第一计划树后更新的第一迭代参数建立的,那么,经过多次迭代后,最终得到的计划树并不是依赖于数据库内已统计的估算迭代参数,而是以迭代过程中每一次实际执行计划树时记录的迭代参数为依据,建立计划树,从而得到SQL语句较为准确的SQL执行计划,提高SQL执行计划的执行效率。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201610095091.0/2.html,转载请声明来源钻瓜专利网。
- 上一篇:查询维度信息的确定方法及装置
- 下一篇:页面定位方法和装置