[发明专利]一种SQL语句处理方法及装置在审
申请号: | 202110649927.8 | 申请日: | 2021-06-10 |
公开(公告)号: | CN113392123A | 公开(公告)日: | 2021-09-14 |
发明(设计)人: | 王莉莉;史晨阳;丁永建;向小佳;彭晓;史黎;王志刚;吴海洋;赵振海;王忠璐;高孝鑫;龙禹 | 申请(专利权)人: | 中国光大银行股份有限公司;光大科技有限公司;北京万里开源软件有限公司 |
主分类号: | G06F16/242 | 分类号: | G06F16/242;G06F16/27 |
代理公司: | 北京康信知识产权代理有限责任公司 11240 | 代理人: | 张秀英 |
地址: | 100033 北京市西城区*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 sql 语句 处理 方法 装置 | ||
本发明提供了一种SQL语句处理方法及装置,其中,该方法包括:解析SQL语句语义,得到多个子句;采用有向无环图的方式构建该多个子句的子句依赖关系;基于该子句依赖关系构建该多个子句的逻辑执行计划;通过本地数据节点执行该逻辑执行计划,得到执行结果,可以解决相关技术中从数据库节点抽取大量数据通过单一计算节点进行计算,计算节点的配置成为数据库集群的性能瓶颈,容易导致严重的网络流量拥塞,同样可能影响数据库集群生产运行的稳定性的问题,通过尽可能利用本地数据节点进行join运算,确保分布式数据库高效地执行join运算的同时避免单计算节点资源瓶颈和巨量数据的网络抽取,实现了数据库集群运行的高效与稳定。
技术领域
本发明涉及数据处理领域,具体而言,涉及一种SQL语句处理方法及装置。
背景技术
集中式join,需要将结构化查询语句(Structured Quevy Language,简称为SQL)语句join相关的数据从数据存储层都抽取到数据库的计算节点/计算层的内存中,而后采用传统数据库的内存join算法,例如常规nest-loop join,进行join运算。这样做的好处是join的实现方式简单,可以直接复用传统内存join算法,各类复杂join的支持比较容易。但这种方法的实现方式通常有如下弊端:
负责join的计算节点/协调节点需要缓存所有或大部分数据,容易限制join计算的规模,让单个计算节点的配置成为数据库集群的性能瓶颈,同时也大幅限制了该SQL语句可以进行的并发计算规模,并且存在出现OOM影响数据库集群稳定性的风险。
从数据库节点抽取大量数据进行单一计算节点,容易导致严重的网络流量拥塞,同样可能影响数据库集群生产运行的稳定性。
针对相关技术中从数据库节点抽取大量数据通过单一计算节点进行计算,计算节点的配置成为数据库集群的性能瓶颈,容易导致严重的网络流量拥塞,同样可能影响数据库集群生产运行的稳定性的问题,尚未提出解决方案。
发明内容
本发明实施例提供了一种SQL语句处理方法及装置,以至少解决相关技术中从数据库节点抽取大量数据通过单一计算节点进行计算,计算节点的配置成为数据库集群的性能瓶颈,容易导致严重的网络流量拥塞,同样可能影响数据库集群生产运行的稳定性的问题。
根据本发明的一个实施例,提供了一种SQL语句处理方法,包括:
解析SQL语句语义,得到多个子句;
采用有向无环图的方式构建所述多个子句的子句依赖关系;
基于所述子句依赖关系构建所述多个子句的逻辑执行计划;
通过本地数据节点执行所述逻辑执行计划,得到执行结果。
可选地,基于所述子句依赖关系构建所述多个子句的逻辑执行计划包括:
基于所述子句依赖关系,分别将所述多个子句所涉及的表进行分组,得到所述多个子句的分组;
分别根据所述多个子句的分组生成所述本地数据节点sep node,得到多个sepnode,以构建所述多个子句的逻辑执行计划,其中,一个分组对应一个sep node,所述多个sep node中的每个sep node用于完成本地join运算任务并将用于下一个sep node的join运算任务所需的驱动表数据通过临时表的方式发送给所述下一个sep node。
可选地,基于所述子句依赖关系,分别将所述多个子句所涉及的表进行分组,得到所述多个子句的分组包括:
基于所述子句依赖关系,根据数据分布方式相同的原则将子句所涉及的表进行分组,并将所述多个子句中的表join关系转换为分组的join关系,得到所述多个子句的分组,其中,同一组的所有表在数据存储上数据分布方式相同,所述数据分布方式相同包括数据节点相同、数据分片sharding算法相同、存在属于AND的分片列的查询条件均为分片列。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国光大银行股份有限公司;光大科技有限公司;北京万里开源软件有限公司,未经中国光大银行股份有限公司;光大科技有限公司;北京万里开源软件有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110649927.8/2.html,转载请声明来源钻瓜专利网。