[发明专利]SQL语句的处理方法及装置有效
申请号: | 201910171270.1 | 申请日: | 2019-03-07 |
公开(公告)号: | CN110032574B | 公开(公告)日: | 2021-02-02 |
发明(设计)人: | 刘垚;何献青;田俊 | 申请(专利权)人: | 北京东方国信科技股份有限公司 |
主分类号: | G06F16/242 | 分类号: | G06F16/242;G06F16/2455 |
代理公司: | 北京路浩知识产权代理有限公司 11002 | 代理人: | 王庆龙;苗晓静 |
地址: | 100102 北京市朝阳区*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | sql 语句 处理 方法 装置 | ||
本发明实施例提供一种SQL语句的处理方法及装置,其中方法包括生成SQL语句的执行计划,从第一执行顺位的计算组件开始,根据执行计划中是否存在Agg Node计算组件,查询当前计算组件与后续执行顺位的其他计算组件之间存在的重复表达式;若所述执行计划中不存在Agg Node计算组件,则将所述重复表达式填入当前计算组件中的表达式列表中,将其他计算组件中的重复表达式修改为column列形式,将所述重复表达式的计算结果和column列形式的数据位置信息映射至Scan Node计算组件输出的预设位置。本发明实施例减少冗余计算,数据量越大,效果越明显,特别是PB级别的海量计算。
技术领域
本发明实施例涉及数据库技术领域,更具体地,涉及一种SQL语句的处理方法及装置。
背景技术
结构化查询语言(Structured Query Language)简称SQL,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。
SQL语句中会包含表达式,并且会存在重复的表达式,在SQL语句的解析过程中,首先计算表达式,再做后续计算,但是并没有缓存表达式计算的结果。例如SQL语句:group bya+b,算完了a+b之后,接着做分组计算(group by),不管后面是否会用到a+b,都不会缓存a+b的结果。
对于重复的表达式,如果数据分析引擎每次都做计算,数据分析引擎会做大量的冗余计算,数据分析引擎处理的数据量越大,冗余计算就越多。
发明内容
本发明实施例提供一种克服上述问题或者至少部分地解决上述问题的SQL语句的处理方法及装置。
第一个方面,本发明实施例提供一种SQL语句的处理方法,包括:
利用Planner计算组件生成SQL语句的执行计划,所述执行计划用于表征各计算组件的执行顺序,同一类型的计算组件属于同一执行顺位;
从第一执行顺位的计算组件开始,根据执行计划中是否存在Agg Node计算组件,查询当前计算组件与后续执行顺位的其他计算组件之间存在的重复表达式;
若所述执行计划中不存在Agg Node计算组件,则将所述重复表达式填入当前计算组件中的表达式列表中,将其他计算组件中的重复表达式修改为column列形式,将所述重复表达式的计算结果和column列形式的数据位置信息映射至Scan Node计算组件输出的预设位置。
第二个方面,本发明实施例提供一种SQL语句的处理装置,包括:
执行计划生成模块,用于利用Planner计算组件生成SQL语句的执行计划,所述执行计划用于表征各计算组件的执行顺序,同一类型的计算组件属于同一执行顺位;
重复表达式查询模块,用于从第一执行顺位的计算组件开始,根据执行计划中是否存在Agg Node计算组件,查询当前计算组件与后续执行顺位的其他计算组件之间存在的重复表达式;
预留模块,用于若所述执行计划中不存在Agg Node计算组件,则将所述重复表达式填入当前计算组件中的表达式列表中,将其他计算组件中的重复表达式修改为column列形式,将所述重复表达式的计算结果和column列形式的数据位置信息映射至Scan Node计算组件输出的预设位置。
第三方面,本发明实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所提供的方法的步骤。
第四方面,本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面所提供的方法的步骤。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京东方国信科技股份有限公司,未经北京东方国信科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910171270.1/2.html,转载请声明来源钻瓜专利网。