一种SQL执行计划的确定方法及装置制造方法及图纸

技术编号:16101849 阅读:129 留言:0更新日期:2017-08-29 22:32
本发明专利技术的实施例提供一种SQL执行计划的确定方法及装置,涉及计算机技术领域,可以优化SQL执行计划的确定,提高SQL执行计划的执行效率。其中,所述SQL执行计划对应至少一个关系表,在第N次迭代中,该方法包括:获取在第N‑1次迭代中对所述至少一个关系表执行第一计划树后产生的第一迭代参数,其中N为大于1的自然数;根据所述第一迭代参数建立第二计划树;当所述第二计划树与所述第一计划树的差异不大于第一阈值时,将所述第一计划树或所述第二计划树确定为所述SQL执行计划。

【技术实现步骤摘要】
一种SQL执行计划的确定方法及装置
本专利技术涉及计算机
,尤其涉及一种SQL执行计划的确定方法及装置。
技术介绍
执行一条SQL(StructuredQueryLanguage,结构化查询语言)语句通常需要三个阶段,即词法和语法分析阶段、SQL执行计划确定阶段和SQL执行计划执行阶段。具体的,一条SQL语句表示用户想要得到的结果,例如,查询所有住在北京市的客户,但SQL语句并不会告知服务器如何去执行,因此,当服务器收到一条Query(查询)命令后,经过词法和语法分析阶段确定这条Query命令没有语法错误后,会形成一个ParseTree(解析树),服务器搜索自身数据库内相关的已统计的统计信息,结合ParseTree,确定该SQL语句优选的SQL执行计划。其中,SQL执行计划可以以PlanTree(计划树)的形式得到,一个PlanTree上的各个节点由若干基本操作组成,例如,遍历多张表,执行一个嵌套连接或Hash(哈希)连接等基本操作,最终,由服务器按照得到的PlanTree执行该SQL执行计划,输出的结果即为该SQL语句表示的结果。可以看出,SQL语句的执行效率高低在一定程度上本文档来自技高网...
一种SQL执行计划的确定方法及装置

【技术保护点】
一种结构化查询语言SQL执行计划的确定方法,所述SQL执行计划对应至少一个关系表,其特征在于,在第N次迭代中,包括:获取在第N‑1次迭代中对所述至少一个关系表执行第一计划树后产生的第一迭代参数,其中N为大于1的自然数;根据所述第一迭代参数建立第二计划树;当所述第二计划树与所述第一计划树的差异不大于第一阈值时,将所述第一计划树或所述第二计划树确定为所述SQL执行计划。

【技术特征摘要】
1.一种结构化查询语言SQL执行计划的确定方法,所述SQL执行计划对应至少一个关系表,其特征在于,在第N次迭代中,包括:获取在第N-1次迭代中对所述至少一个关系表执行第一计划树后产生的第一迭代参数,其中N为大于1的自然数;根据所述第一迭代参数建立第二计划树;当所述第二计划树与所述第一计划树的差异不大于第一阈值时,将所述第一计划树或所述第二计划树确定为所述SQL执行计划。2.根据权利要求1所述的方法,其特征在于,所述第一阈值为0,对应的,所述当所述第二计划树与所述第一计划树的差异不大于第一阈值时,将所述第一计划树或所述第二计划树确定为所述SQL执行计划,包括:当所述第二计划树与所述第一计划树相同时,将所述第一计划树或所述第二计划树确定为所述SQL执行计划。3.根据权利要求1或2所述的方法,其特征在于,所述第一迭代参数包括所述SQL执行计划对应的任意一个或多个关系表的元组数。4.根据权利要求1-3任一项所述的方法,其特征在于,所述SQL执行计划对应至少两个关系表时,所述第一迭代参数还包括所述至少两个关系表中任意一个或多个至少两个关系表经过连接操作后得到的结果集合中的元组数。5.根据权利要求1-4任一项所述的方法,其特征在于,在所述将所述第一计划树或所述第二计划树确定为所述SQL执行计划之后,还包括:记录所述SQL执行计划为确定状态。6.根据权利要求1-5任一项所述的方法,其特征在于,在所述根据所述第一迭代参数建立第二计划树之后,还包括:执行所述第二计划树;记录执行所述第二计划树时产生的第二迭代参数。7.根据权利要求6所述的方法,其特征在于,所述第二迭代参数包括所述SQL执行计划对应的任意一个或多个关系表的元组数。8.根据权利要求6或7所述的方法,其特征在于,所述SQL执行计划对应至少两个关系表时,所述第二迭代参数还包括所述至少两个关系表中任意一个或多个至少两个关系表经过连接操作后得到的结果集合中的元组数。9.根据权利要求6-8任一项所述的方法,其特征在于,所述方法还包括:当所述第二计划树与所述第一计划树的差异大于第一阈值时,根据所述第二迭代参数更新所述第一迭代参数;将所述第N次迭代中的第二计划树作为第N+1次迭代中的第一计划树。10.根据权利要求9所述的方法,其特征在于,在所述根据所述第二迭代参数更新所述第一迭代参数之前,还包括:当所述第二迭代参数与所述第一迭代参数相同时,根据所述第一迭代参数建立与所述第一计划树不相同的第二计划树。11.根据权利要求10所述的方法,其特征在于,在所述根据所述第一迭代参数建立与所述第一计划树不相同的第二计划树之后,还包括:记录执行所述第二计划树的执行时间;当所述N大于第二阈值时,将全部N次迭代中所述执行时间最短的第二计划树作为所述SQL执行计划。12.根据权利要求11所述的方法,其特征在于,在所述将全部N次迭代中所述执行时间最短的第二计划树作为所述SQL执行计划之后,还包括:记录所述SQL执行计划为确定状态。13.根据权利要求9所述的方法,其特征在于,在所述根据所述第二迭代参数更新所述第一迭代参数之前,还包括:记录执行所述第二计划树的执行时间;当所述N大于第三阈值时,将全部N次迭代中所述执行时间最短的第二计划树作为所述SQL执行计划。14.根据权利要求13所述的方法,其特征在于,在所述将全部N次迭代中所述执行时间最短的第二计划树作为所述SQL执行计划之后,还包括:记录所述SQL执行计划为确定状态。15.根据权利要求8-14任一项所述的方法,其特征在于,所述根据所述第二迭代参数更新所述第一迭代参数,包括:将所述第二迭代参数和所述第一迭代参数取并集,将所述并集的结果作为所述第一迭代参数。16.根据权利要求1-15中任一项所述的方法,其特征在于,所述方法还包括:在初始迭代执行时,根据预先存储的估算迭代参数建立初始计划树;执行所述初始计划树得到初始迭代参数;根据所述初始迭代参数更新所述估算迭代参数,得到所述第一迭代参数。17.根据权利要求16所述的方法,其特征在于,所述估算迭代参数包括所述SQL执行计划对应的任意一个或多个关系表的元组数。18.根据权利要求16或17所述的方法,其特征在于,所述初始迭代参数包括所述SQL执行计划对应的任意一个或多个关系表的元组数。19.根据权利要求16-18任一项所述的方法,其特征在于,所述SQL执行计划对应至少两个关系表时,所述初始迭代参数还包括所述至少两个关系表中任意一个或多个至少两个关系表经过连接操作后得到的结果集合中的元组数。20.根据权利要求16-19任一项所述的方法,其特征在于,所述根据所述初始迭代参数更新所述估算迭代参数,得到所述第一迭代参数,包括:将所述初始迭代参数和所述估算迭代参数取并集,将所述并集的结果作为所述第一迭代参数。21.根据权利要求16-20任一项所述的方法,其特征在于,在所述初始迭代执行之前,还包括:查询所述SQL执行计划的状态是否为所述确定状态;当所述SQL执行计划的状态为所述确定状态时,执行所述SQL执行计划。22.一种结构化查询语言SQL执行计划的确定装置,所述SQL执行计划对应至少一个关系表,其特征在于,所述装置包括:存储器和耦合于存储器的处理器,在第N次迭代中:所述处理器用于获取在第N-1次迭代中对所述至少一个关系表执行第一计...

【专利技术属性】
技术研发人员:刘辉军任阳李茂增韩峰
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1