CN113392123A - 一种sql语句处理方法及装置 - Google Patents
一种sql语句处理方法及装置 Download PDFInfo
- Publication number
- CN113392123A CN113392123A CN202110649927.8A CN202110649927A CN113392123A CN 113392123 A CN113392123 A CN 113392123A CN 202110649927 A CN202110649927 A CN 202110649927A CN 113392123 A CN113392123 A CN 113392123A
- Authority
- CN
- China
- Prior art keywords
- clauses
- clause
- sep
- node
- execution plan
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000003672 processing method Methods 0.000 title claims description 8
- 238000000034 method Methods 0.000 claims abstract description 24
- 238000012545 processing Methods 0.000 claims abstract description 14
- 238000009826 distribution Methods 0.000 claims description 22
- 238000004590 computer program Methods 0.000 claims description 18
- 238000010276 construction Methods 0.000 claims description 12
- 239000012634 fragment Substances 0.000 claims description 12
- 238000004422 calculation algorithm Methods 0.000 claims description 9
- 238000013500 data storage Methods 0.000 claims description 7
- 238000003860 storage Methods 0.000 claims description 7
- 238000004458 analytical method Methods 0.000 claims description 2
- 238000004519 manufacturing process Methods 0.000 abstract description 6
- 238000005516 engineering process Methods 0.000 abstract description 3
- 238000004364 calculation method Methods 0.000 description 17
- 238000010586 diagram Methods 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 6
- 238000013467 fragmentation Methods 0.000 description 4
- 238000006062 fragmentation reaction Methods 0.000 description 4
- 238000005457 optimization Methods 0.000 description 3
- 238000012216 screening Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种SQL语句处理方法及装置,其中,该方法包括:解析SQL语句语义,得到多个子句;采用有向无环图的方式构建该多个子句的子句依赖关系;基于该子句依赖关系构建该多个子句的逻辑执行计划;通过本地数据节点执行该逻辑执行计划,得到执行结果,可以解决相关技术中从数据库节点抽取大量数据通过单一计算节点进行计算,计算节点的配置成为数据库集群的性能瓶颈,容易导致严重的网络流量拥塞,同样可能影响数据库集群生产运行的稳定性的问题,通过尽可能利用本地数据节点进行join运算,确保分布式数据库高效地执行join运算的同时避免单计算节点资源瓶颈和巨量数据的网络抽取,实现了数据库集群运行的高效与稳定。
Description
技术领域
本发明涉及数据处理领域,具体而言,涉及一种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的分片列的查询条件均为分片列。
可选地,所述通过本地数据节点执行所述逻辑执行计划,得到执行结果包括:
对所述多个sep node执行调度,得到子句输出结果;
基于所述子句输出结果,触发对所述逻辑执行计划进行实例化构建,以执行所述逻辑执行计划,得到所述执行结果。
可选地,对所述多个sep node执行调度,得到所述子句输出结果包括:
对所述每个sep node完成本地join运算任务并将用于所述下一个sep node的join运算任务所需的驱动表数据通过临时表的方式发送给所述下一个sep node;
基于临时表池创建所述临时表的执行任务;
对所述下一个sep node结合所述临时表完成本地join运算任务,得到所述子句输出结果。
可选地,基于所述子句输出结果,触发对所述逻辑执行计划进行实例化构建,以执行所述逻辑执行计划,得到所述执行结果包括:
将所述子句输出结果作为一个常量值或一个分组用于驱动下一个子句的执行计划;
对无依赖关系的子句进行并行执行计划,得到所述执行结果。
根据本发明的另一个实施例,还提供了一种SQL语句处理装置,包括:
解析模块,用于解析SQL语句语义,得到多个子句;
第一构建模块,用于采用有向无环图的方式构建所述多个子句的子句依赖关系;
第二构建模块,用于基于所述子句依赖关系构建所述多个子句的逻辑执行计划;
执行模块,用于通过本地数据节点执行所述逻辑执行计划,得到执行结果。
可选地,所述第二构建模块包括:
分组子模块,用于基于所述子句依赖关系,分别将所述多个子句所涉及的表进行分组,得到所述多个子句的分组;
生成子模块,用于分别根据所述多个子句的分组生成本地数据节点sep node,得到多个sep node,以构建所述多个子句的逻辑执行计划,其中,一个分组对应一个sepnode,所述多个sep node中的每个sep node用于完成本地join运算任务并将用于下一个sep node的join运算任务所需的驱动表数据通过临时表的方式发送给所述下一个sepnode。
可选地,所述分组子模块,还用于
基于所述子句依赖关系,根据数据分布方式相同的原则将子句所涉及的表进行分组,并将所述多个子句中的表join关系转换为分组的join关系,得到所述多个子句的分组,其中,同一组的所有表在数据存储上数据分布方式相同,所述数据分布方式相同包括数据节点相同、数据分片sharding算法相同、存在属于AND的分片列的查询条件均为分片列。
可选地,所述执行模块包括:
调度子模块,用于对所述多个sep node执行调度,得到子句输出结果;
执行子模块,用于基于所述子句输出结果,触发对所述逻辑执行计划进行实例化构建,以执行所述逻辑执行计划,得到所述执行结果。
可选地,所述调度子模块,还用于
对所述每个sep node完成本地join运算任务并将用于所述下一个sep node的join运算任务所需的驱动表数据通过临时表的方式发送给所述下一个sep node;
基于临时表池创建所述临时表的执行任务;
对所述下一个sep node结合所述临时表完成本地join运算任务,得到所述子句输出结果。
可选地,所述执行子模块,还用于
将所述子句输出结果作为一个常量值或一个分组用于驱动下一个子句的执行计划;
对无依赖关系的子句进行并行执行计划,得到所述执行结果。
根据本发明的又一个实施例,还提供了一种计算机可读的存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
根据本发明的又一个实施例,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。
通过本发明,解析SQL语句语义,得到多个子句;采用有向无环图的方式构建所述多个子句的子句依赖关系;基于所述子句依赖关系构建所述多个子句的逻辑执行计划;通过本地数据节点执行所述逻辑执行计划,得到执行结果,可以解决相关技术中从数据库节点抽取大量数据通过单一计算节点进行计算,计算节点的配置成为数据库集群的性能瓶颈,容易导致严重的网络流量拥塞,同样可能影响数据库集群生产运行的稳定性的问题,通过尽可能利用本地数据节点进行join运算,确保分布式数据库高效地执行join运算的同时避免单计算节点资源瓶颈和巨量数据的网络抽取,实现了数据库集群运行的高效与稳定。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是本发明实施例的SQL语句处理方法的移动终端的硬件结构框图;
图2是根据本发明实施例的SQL语句处理方法的流程图;
图3是根据本实施例的数据库基于表级别分布式nest-loop的跨节点join的示意图;
图4是根据本发明实施例的SQL语句处理装置的框图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
实施例1
本申请实施例一所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在移动终端上为例,图1是本发明实施例的SQL语句处理方法的移动终端的硬件结构框图,如图1所示,移动终端可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器104,可选地,上述移动终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述移动终端的结构造成限定。例如,移动终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的SQL语句处理方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至移动终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括移动终端的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
在本实施例中提供了一种运行于上述移动终端或网络架构的SQL语句处理方法,图2是根据本发明实施例的SQL语句处理方法的流程图,如图2所示,该流程包括如下步骤:
步骤S202,解析SQL语句语义,得到多个子句;
步骤S204,采用有向无环图的方式构建所述多个子句的子句依赖关系;
步骤S206,基于所述子句依赖关系构建所述多个子句的逻辑执行计划;
步骤S208,通过本地数据节点执行所述逻辑执行计划,得到执行结果。
通过上述步骤S202至S208,解析SQL语句语义,得到多个子句;采用有向无环图的方式构建所述多个子句的子句依赖关系;基于所述子句依赖关系构建所述多个子句的逻辑执行计划;通过本地数据节点执行所述逻辑执行计划,得到执行结果,可以解决相关技术中从数据库节点抽取大量数据通过单一计算节点进行计算,计算节点的配置成为数据库集群的性能瓶颈,容易导致严重的网络流量拥塞,同样可能影响数据库集群生产运行的稳定性的问题,通过尽可能利用本地数据节点进行join运算,确保分布式数据库高效地执行join运算的同时避免单计算节点资源瓶颈和巨量数据的网络抽取,实现了数据库集群运行的高效与稳定。
本实施例中,上述步骤S206包括:
基于所述子句依赖关系,分别将所述多个子句所涉及的表进行分组,得到所述多个子句的分组;进一步的,基于所述子句依赖关系,根据数据分布方式相同的原则将子句所涉及的表进行分组,并将所述多个子句中的表join关系转换为分组的join关系,得到所述多个子句的分组,其中,同一组的所有表在数据存储上数据分布方式相同,所述数据分布方式相同包括数据节点相同、数据分片sharding算法相同、存在属于AND的分片列的查询条件均为分片列;
分别根据所述多个子句的分组生成所述本地数据节点sep node,得到多个sepnode,以构建所述多个子句的逻辑执行计划,其中,一个分组对应一个sep node,所述多个sep node中的每个sep node用于完成本地join运算任务并将用于下一个sep node的join运算任务所需的驱动表数据通过临时表的方式发送给所述下一个sep node。
本实施例中,上述步骤S208具体可以包括:
对所述多个sep node执行调度,得到子句输出结果,进一步的,对所述每个sepnode完成本地join运算任务并将用于所述下一个sep node的join运算任务所需的驱动表数据通过临时表的方式发送给所述下一个sep node;基于临时表池创建所述临时表的执行任务;对所述下一个sep node结合所述临时表完成本地join运算任务,得到所述子句输出结果;
基于所述子句输出结果,触发对所述逻辑执行计划进行实例化构建,以执行所述逻辑执行计划,得到所述执行结果,进一步的,将所述子句输出结果作为一个常量值或一个分组用于驱动下一个子句的执行计划;对无依赖关系的子句进行并行执行计划,得到所述执行结果。
本实施例中,数据库基于表级别分布式nest-loop的跨节点join,确保充分的计算下推和最小化数据挪动,通过尽可能利用数据节点本地join运算,确保分布式数据库高效地执行join运算的同时避免单计算节点资源瓶颈和巨量数据的网络抽取,实现了数据库集群运行的高效与稳定。
充分计算条件下推,数据库集群基于SQL语义,将where条件筛选、select列投影、尽可能下推到数据节点进行计算,计算节点层/协调节点层只进行分布式执行计划的调度、流式的中间结果分发、以及流失的最终结果汇聚处理,不进行具体join运算,避免成为性能瓶颈点。
基于表实现批量计算中间结果的分布式高效挪动,面向分布式网络环境进行数据批量操作优化,将数据节点本地计算与临时表级数据批量挪动相结合,实现更加面向网络优化的分布式数据join方案。
分布式并行nest-loop方式迭代执行多个表组之间的join执行计划,在数据库Join过程中,执行计划重复考虑分布式系统资源,将数据的抽取、计算、临时结果的re-distribute进行充分的分布式调度;以nest-loop的方式,迭代在分布式节点间传递join的中间结果驱动下一个step的join运算,同时允许不相关子句并行nest-loop。
图3是根据本实施例的数据库基于表级别分布式nest-loop的跨节点join的示意图,如图3所示,主要包括以下步骤:
步骤S1,通过解析SQL语句语义,采用有向无环图构建子句依赖关系,对于无依赖的子句间可以进行并行执行计划的编排,例如图中的子句1和子句3。
步骤S2,基于子句依赖关系构建数据库SQL分布式逻辑执行计划。
步骤S3,针对每个子句的逻辑执行计划进行执行优化调整,将子句所涉及的表分组,同一组的所有表在数据存储上数据分布方式相同,即数据节点相同、数据sharding算法相同、并且存在属于“AND”的分片列等值查询条件,例如t1.c1=t3.c1,c1列都是分片列。每一个分组称为tablegroup。所有子句中的表join关系转换为table group的join关系,本方案基于table group概念,简化了分布式join数据挪动的依赖关系,通过将一种数据分布的table group计算输出转移到下一种数据分布的table group去驱动join实现分布式的nest loop join。
步骤S4,针对子句中的table group生成sep node,sep node将构建具体物理执行步骤用于衔接多个table group,基于nest-loop的算法思想,上一个sep node将会完成本地计算并将用于下一个sep node join运算所需的驱动表数据通过临时表的方式传递过去。每个sep node的物理执行步骤包括:
A,基于table group之间join运算的语义,将下一个join所需的上一个tablegroup(图中的table group1)的where条件列、最终数据投影所需的列筛选出来,构建一张位于下一个table group(图中的table group2)本地的临时表,临时表的数据分布方式与table group2中表相同(数据分布方式相同的定义见上文步骤3)。只在table group1本地运算所需的列是不会被选取,例如条件t1.c3=5,这里的c3列将不会被选取;而条件t1.c4=t2.c9,这里的t1.c4将被选取,因为它将用于对包含了t2表的table group2的join运算。
B,为table group1生成本地数据查询任务,所有只与table group1本地计算相关的筛选条件将被下推到数据节点进行计算,例如条件t1.c3=5。
C,为步骤A的临时表生成基于步骤B的数据填充执行任务,同时构建table group2与临时表的本地join运算任务
更加多table group的join将重复上述步骤,以分布式表级nest-loop的方式逐个调度每个table group的本地查询或join运算,并将结果以临时表的形式分布到下一个table group本地以驱动join运算。
步骤S5,进行sep node执行调度,临时表的创建任务执行时将基于临时表池进行,以应对并发负载场景进行临时表资源的复用。
执行table group1数据查询任务并进行临时表数据填充。
执行table group2与临时表的本地join运算任务
步骤S6,基于步骤S5的子句输出结构,为逻辑执行计划的“tree merge”步骤进行实例化构建。步骤S5的输出可以作为一个常量值或一个tablegroup用于驱动下一个子句的执行计划。无依赖关系的执行计划子树将并行驱动,最终完成顶层查询的执行计划并流式将结果返回给客户端。
实施例2
根据本发明的另一个实施例,还提供了一种SQL语句处理装置,图4是根据本实施例的SQL语句处理装置的框图,如图4所示,包括:
解析模块42,用于解析SQL语句语义,得到多个子句;
第一构建模块44,用于采用有向无环图的方式构建所述多个子句的子句依赖关系;
第二构建模块46,用于基于所述子句依赖关系构建所述多个子句的逻辑执行计划;
执行模块48,用于通过本地数据节点执行所述逻辑执行计划,得到执行结果。
可选地,所述第二构建模块46包括:
分组子模块,用于基于所述子句依赖关系,分别将所述多个子句所涉及的表进行分组,得到所述多个子句的分组;
生成子模块,用于分别根据所述多个子句的分组生成本地数据节点sep node,得到多个sep node,以构建所述多个子句的逻辑执行计划,其中,一个分组对应一个sepnode,所述多个sep node中的每个sep node用于完成本地join运算任务并将用于下一个sep node的join运算任务所需的驱动表数据通过临时表的方式发送给所述下一个sepnode。
可选地,所述分组子模块,还用于
基于所述子句依赖关系,根据数据分布方式相同的原则将子句所涉及的表进行分组,并将所述多个子句中的表join关系转换为分组的join关系,得到所述多个子句的分组,其中,同一组的所有表在数据存储上数据分布方式相同,所述数据分布方式相同包括数据节点相同、数据分片sharding算法相同、存在属于AND的分片列的查询条件均为分片列。
可选地,所述执行模块48包括:
调度子模块,用于对所述多个sep node执行调度,得到子句输出结果;
执行子模块,用于基于所述子句输出结果,触发对所述逻辑执行计划进行实例化构建,以执行所述逻辑执行计划,得到所述执行结果。
可选地,所述调度子模块,还用于
对所述每个sep node完成本地join运算任务并将用于所述下一个sep node的join运算任务所需的驱动表数据通过临时表的方式发送给所述下一个sep node;
基于临时表池创建所述临时表的执行任务;
对所述下一个sep node结合所述临时表完成本地join运算任务,得到所述子句输出结果。
可选地,所述执行子模块,还用于
将所述子句输出结果作为一个常量值或一个分组用于驱动下一个子句的执行计划;
对无依赖关系的子句进行并行执行计划,得到所述执行结果。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
实施例3
本发明的实施例还提供了一种计算机可读的存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的计算机程序:
S11,解析SQL语句语义,得到多个子句;
S12,采用有向无环图的方式构建所述多个子句的子句依赖关系;
S13,基于所述子句依赖关系构建所述多个子句的逻辑执行计划;
S14,通过本地数据节点执行所述逻辑执行计划,得到执行结果。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
实施例4
本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
S11,解析SQL语句语义,得到多个子句;
S12,采用有向无环图的方式构建所述多个子句的子句依赖关系;
S13,基于所述子句依赖关系构建所述多个子句的逻辑执行计划;
S14,通过本地数据节点执行所述逻辑执行计划,得到执行结果。
可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种SQL语句处理方法,其特征在于,包括:
解析结构化查询语句SQL语句语义,得到多个子句;
采用有向无环图的方式构建所述多个子句的子句依赖关系;
基于所述子句依赖关系构建所述多个子句的逻辑执行计划;
通过本地数据节点执行所述逻辑执行计划,得到执行结果。
2.根据权利要求1所述的方法,其特征在于,基于所述子句依赖关系构建所述多个子句的逻辑执行计划包括:
基于所述子句依赖关系,分别将所述多个子句所涉及的表进行分组,得到所述多个子句的分组;
分别根据所述多个子句的分组生成所述本地数据节点sep node,得到多个sep node,以构建所述多个子句的逻辑执行计划,其中,一个分组对应一个sep node,所述多个sepnode中的每个sep node用于完成本地join运算任务并将用于下一个sep node的join运算任务所需的驱动表数据通过临时表的方式发送给所述下一个sep node。
3.根据权利要求2所述的方法,其特征在于,基于所述子句依赖关系,分别将所述多个子句所涉及的表进行分组,得到所述多个子句的分组包括:
基于所述子句依赖关系,根据数据分布方式相同的原则将子句所涉及的表进行分组,并将所述多个子句中的表join关系转换为分组的join关系,得到所述多个子句的分组,其中,同一组的所有表在数据存储上数据分布方式相同,所述数据分布方式相同包括数据节点相同、数据分片sharding算法相同、存在属于AND的分片列的查询条件均为分片列。
4.根据权利要求2所述的方法,其特征在于,所述通过本地数据节点执行所述逻辑执行计划,得到执行结果包括:
对所述多个sep node执行调度,得到子句输出结果;
基于所述子句输出结果,触发对所述逻辑执行计划进行实例化构建,以执行所述逻辑执行计划,得到所述执行结果。
5.根据权利要求4所述的方法,其特征在于,对所述多个sep node执行调度,得到所述子句输出结果包括:
对所述每个sep node完成本地join运算任务并将用于所述下一个sep node的join运算任务所需的驱动表数据通过临时表的方式发送给所述下一个sep node;
基于临时表池创建所述临时表的执行任务;
对所述下一个sep node结合所述临时表完成本地join运算任务,得到所述子句输出结果。
6.根据权利要求5所述的方法,其特征在于,基于所述子句输出结果,触发对所述逻辑执行计划进行实例化构建,以执行所述逻辑执行计划,得到所述执行结果包括:
将所述子句输出结果作为一个常量值或一个分组用于驱动下一个子句的执行计划;
对无依赖关系的子句进行并行执行计划,得到所述执行结果。
7.一种SQL语句处理装置,其特征在于,包括:
解析模块,用于解析结构化查询语句SQL语句语义,得到多个子句;
第一构建模块,用于采用有向无环图的方式构建所述多个子句的子句依赖关系;
第二构建模块,用于基于所述子句依赖关系构建所述多个子句的逻辑执行计划;
执行模块,用于通过本地数据节点执行所述逻辑执行计划,得到执行结果。
8.根据权利要求7所述的装置,其特征在于,所述第二构建模块包括:
分组子模块,用于基于所述子句依赖关系,分别将所述多个子句所涉及的表进行分组,得到所述多个子句的分组;
生成子模块,用于分别根据所述多个子句的分组生成本地数据节点sep node,得到多个sep node,以构建所述多个子句的逻辑执行计划,其中,一个分组对应一个sep node,所述多个sep node中的每个sep node用于完成本地join运算任务并将用于下一个sep node的join运算任务所需的驱动表数据通过临时表的方式发送给所述下一个sep node。
9.一种计算机可读的存储介质,其特征在于,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行所述权利要求1至6任一项中所述的方法。
10.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行所述权利要求1至6中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110649927.8A CN113392123B (zh) | 2021-06-10 | 2021-06-10 | 一种sql语句处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110649927.8A CN113392123B (zh) | 2021-06-10 | 2021-06-10 | 一种sql语句处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113392123A true CN113392123A (zh) | 2021-09-14 |
CN113392123B CN113392123B (zh) | 2024-07-19 |
Family
ID=77620379
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110649927.8A Active CN113392123B (zh) | 2021-06-10 | 2021-06-10 | 一种sql语句处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113392123B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114118055A (zh) * | 2021-12-06 | 2022-03-01 | 中电万维信息技术有限责任公司 | 复杂sql语句优化解析方法 |
CN114490780A (zh) * | 2022-03-31 | 2022-05-13 | 北京数变科技有限公司 | 一种数据流的调度方法、装置、电子设备、介质及产品 |
CN114625757A (zh) * | 2022-03-29 | 2022-06-14 | 医渡云(北京)技术有限公司 | 基于领域特定语言的任务执行方法及装置、介质、设备 |
WO2024037223A1 (zh) * | 2022-08-18 | 2024-02-22 | 华为云计算技术有限公司 | 数据操作方法及装置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080126393A1 (en) * | 2006-11-29 | 2008-05-29 | Bossman Patrick D | Computer program product and system for annotating a problem sql statement for improved understanding |
CN108009296A (zh) * | 2017-12-27 | 2018-05-08 | 北京中关村科金技术有限公司 | 一种基于Hbase的SQL查询方法、系统及相关装置 |
US20180218044A1 (en) * | 2017-01-31 | 2018-08-02 | Salesforce.Com, Inc. | Systems, methods, and apparatuses for implementing a by partition command term within a multi-tenant aware structured query language |
CN111026782A (zh) * | 2019-12-25 | 2020-04-17 | 上海达梦数据库有限公司 | 远程数据库对象的优化方法、装置、设备及存储介质 |
CN112069199A (zh) * | 2020-08-20 | 2020-12-11 | 浙江大学 | 一种基于中间语法树的多轮自然语言转sql方法 |
CN112434061A (zh) * | 2020-08-25 | 2021-03-02 | 上海幻电信息科技有限公司 | 支持循环依赖的任务调度方法和系统 |
CN112860730A (zh) * | 2021-03-29 | 2021-05-28 | 中信银行股份有限公司 | Sql语句的处理方法、装置、电子设备及可读存储介质 |
-
2021
- 2021-06-10 CN CN202110649927.8A patent/CN113392123B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080126393A1 (en) * | 2006-11-29 | 2008-05-29 | Bossman Patrick D | Computer program product and system for annotating a problem sql statement for improved understanding |
US20180218044A1 (en) * | 2017-01-31 | 2018-08-02 | Salesforce.Com, Inc. | Systems, methods, and apparatuses for implementing a by partition command term within a multi-tenant aware structured query language |
CN108009296A (zh) * | 2017-12-27 | 2018-05-08 | 北京中关村科金技术有限公司 | 一种基于Hbase的SQL查询方法、系统及相关装置 |
CN111026782A (zh) * | 2019-12-25 | 2020-04-17 | 上海达梦数据库有限公司 | 远程数据库对象的优化方法、装置、设备及存储介质 |
CN112069199A (zh) * | 2020-08-20 | 2020-12-11 | 浙江大学 | 一种基于中间语法树的多轮自然语言转sql方法 |
CN112434061A (zh) * | 2020-08-25 | 2021-03-02 | 上海幻电信息科技有限公司 | 支持循环依赖的任务调度方法和系统 |
CN112860730A (zh) * | 2021-03-29 | 2021-05-28 | 中信银行股份有限公司 | Sql语句的处理方法、装置、电子设备及可读存储介质 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114118055A (zh) * | 2021-12-06 | 2022-03-01 | 中电万维信息技术有限责任公司 | 复杂sql语句优化解析方法 |
CN114118055B (zh) * | 2021-12-06 | 2024-05-10 | 中电万维信息技术有限责任公司 | 复杂sql语句优化解析方法 |
CN114625757A (zh) * | 2022-03-29 | 2022-06-14 | 医渡云(北京)技术有限公司 | 基于领域特定语言的任务执行方法及装置、介质、设备 |
CN114490780A (zh) * | 2022-03-31 | 2022-05-13 | 北京数变科技有限公司 | 一种数据流的调度方法、装置、电子设备、介质及产品 |
WO2024037223A1 (zh) * | 2022-08-18 | 2024-02-22 | 华为云计算技术有限公司 | 数据操作方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN113392123B (zh) | 2024-07-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113392123B (zh) | 一种sql语句处理方法及装置 | |
US9170846B2 (en) | Distributed data-parallel execution engines for user-defined serial problems using branch-and-bound algorithm | |
US20120159459A1 (en) | Optimizing symbol manipulation language-based executable applications for distributed execution | |
CN111552838B (zh) | 数据处理方法及装置、计算机设备、存储介质 | |
CN107291536B (zh) | 一种云计算环境下应用任务流调度方法 | |
KR20170139556A (ko) | 데이터 소스들을 쿼리하기 위한 시스템 및 방법 | |
CN111930770A (zh) | 数据查询方法、装置及电子设备 | |
CN114327857A (zh) | 操作数据处理方法、装置、计算机设备和存储介质 | |
CN114756629A (zh) | 基于sql的多源异构数据交互分析引擎及方法 | |
CN114661752A (zh) | 分布式数据库的计划调度方法、装置和系统 | |
CN105955790B (zh) | 数据处理方法及装置 | |
JP5108011B2 (ja) | バス接続されたコンシューマとプロデューサとの間でのメッセージ・フローを削減するためのシステム、方法、およびコンピュータ・プログラム | |
CN107688660B (zh) | 并行执行计划的执行方法及装置 | |
CN102427420B (zh) | 基于图模式匹配的虚拟网络映射方法及装置 | |
Selvitopi et al. | A recursive hypergraph bipartitioning framework for reducing bandwidth and latency costs simultaneously | |
CN107168795B (zh) | 基于cpu-gpu异构复合式并行计算框架的密码子偏差系数模型方法 | |
KR20090043732A (ko) | 의사결정트리를 이용한 그리드 자원 선택장치 및 선택방법 | |
CN108345603B (zh) | 一种sql语句解析方法及装置 | |
CN113157720B (zh) | 查询语句的处理方法、装置、设备及介质 | |
CN112667632A (zh) | 一种元数据处理方法及装置 | |
CN112182031A (zh) | 数据查询方法及装置、存储介质、电子装置 | |
CN110769037B (zh) | 嵌入式边缘计算平台资源配置方法 | |
CN114996299A (zh) | 分布式数据库的计划执行方法、装置和系统 | |
CN112835932B (zh) | 业务表的批量处理方法及装置、非易失性存储介质 | |
EP2565788B1 (en) | Method and apparatus for selecting optimum computing resources |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |