CN111125151A - Mpp架构下聚集函数的执行方法和数据库系统 - Google Patents
Mpp架构下聚集函数的执行方法和数据库系统 Download PDFInfo
- Publication number
- CN111125151A CN111125151A CN201911366529.4A CN201911366529A CN111125151A CN 111125151 A CN111125151 A CN 111125151A CN 201911366529 A CN201911366529 A CN 201911366529A CN 111125151 A CN111125151 A CN 111125151A
- Authority
- CN
- China
- Prior art keywords
- function
- target
- node
- execution
- aggregation
- 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
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/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
-
- 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/245—Query processing
- G06F16/2455—Query execution
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明实施例公开了一种MPP架构下聚集函数的执行方法和数据库系统。所述方法包括:目标节点在接收到包含聚集函数的目标SQL语句时,获取所述聚集函数的匹配函数的匹配函数信息;所述目标节点根据所述匹配函数信息生成所述目标SQL语句的执行计划,其中,所述执行计划中包含有目标函数的目标子执行计划,所述目标函数包括所述聚集函数和所述匹配函数;所述目标节点控制执行节点依据所述目标子执行计划执行所述目标函数。本发明实施例通过采用上述技术方案,能够为聚集函数提供多样化的集函数处理方式,满足用户在不同场景下的使用需求。
Description
技术领域
本发明涉及数据库系统技术领域,尤其涉及一种MPP架构下聚集函数的执行方法和数据库系统。
背景技术
在大规模并行处理(Massively Parallel Processing,MPP)架构的非共享数据库系统中,每个节点都有独立的磁盘存储系统和内存系统,节点间通过网络相互连接,彼此协调计算。
在MPP架构下,数据库表以合适的分布项分布在各节点上。当所需执行的结构化查询语言(Structured Query Language,SQL)语句涉及到非分布列的聚集函数操作时,各节点在计算时还需要获取非本节点的数据才能完成,此时,需要首先采用分发(Distribute,DIS)的方式将所涉及到的表数据按照重分布项进行重分布或采用收集(Gather,GAT)的方式将所涉及到的表数据全部收集到一个节点上;然后再基于重分布后的数据进行聚集函数操作。
但是,现有的聚集函数处理方式较为单一,不能满足人们在不同应用场景下的需求。
发明内容
有鉴于此,本发明实施例提供一种MPP架构下聚集函数的执行方法和数据库系统,以提供多样化的聚集函数处理方式。
第一方面,本发明实施例提供了一种MPP架构下聚集函数的执行方法,包括:
目标节点在接收到包含聚集函数的目标SQL语句时,获取所述聚集函数的匹配函数的匹配函数信息,其中,所述匹配函数为去重函数或第一分组函数,且所述匹配函数的运算结果为所述聚集函数的聚集对象;
所述目标节点根据所述匹配函数信息生成所述目标SQL语句的执行计划,其中,所述执行计划中包含有目标函数的目标子执行计划,所述目标函数包括所述聚集函数和所述匹配函数;
所述目标节点控制执行节点依据所述目标子执行计划执行所述目标函数,其中,所述执行节点中存储有所述目标函数所运算数据列的数据。
第二方面,本发明实施例还提供了一种数据库系统,包括多个业务功能相同的数据库节点,其中一个数据库节点为目标节点,多个数据库节点为执行节点,其中,
所述目标节点,用于在接收到包含聚集函数的目标SQL语句时,获取所述聚集函数的匹配函数的匹配函数信息,其中,所述匹配函数为去重函数或第一分组函数,且所述匹配函数的运算结果为所述聚集函数的聚集对象;
所述目标节点,还用于根据所述匹配函数信息生成所述目标SQL语句的执行计划,其中,所述执行计划中包含有目标函数的目标子执行计划,所述目标函数包括所述聚集函数和所述匹配函数;
所述目标节点,还用于控制所述执行节点依据所述目标子执行计划执行所述目标函数,其中,所述执行节点中存储有所述目标函数所运算数据列的数据。
在上述执行MPP架构下聚集函数的技术方案中,目标节点在接收到包含聚集函数的目标SQL语句时,获取该聚集函数的匹配函数的匹配函数信息;根据该匹配函数信息生成包含目标函数的目标子执行计划的目标SQL语句的执行计划,该目标函数包括聚集函数和聚集函数的匹配函数;进而控制数据库系统中存储有目标函数对应数据列的数据的各执行节点依据该目标子执行计划执行目标SQL语句中的目标函数。本发明实施例通过采用上述技术方案,能够为聚集函数提供多样化的集函数处理方式,满足用户在不同场景下的使用需求。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为本发明实施例一提供的一种MPP架构下聚集函数的执行方法的流程示意图;
图2为本发明实施例二提供的一种MPP架构下聚集函数的执行方法的流程示意图;
图3为本发明实施例三提供的一种数据库系统的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部内容。此外,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合
实施例一
本发明实施例一提供一种MPP架构下目标SQL语句的执行方法。所述方法可以由MPP架构下的数据库系统系统执行,适用于执行包含聚集函数的目标SQL语句的场景。图1为本发明实施例一提供的一种MPP架构下目标SQL语句的执行方法的流程示意图,如图1所示,所述方法包括:
S110、目标节点在接收到包含聚集函数的目标SQL语句时,获取所述聚集函数的匹配函数的匹配函数信息,其中,所述匹配函数为去重函数或第一分组函数,且所述匹配函数的运算结果为所述聚集函数的聚集对象。
在本实施例中,目标SQL语句为包含聚集函数的SQL语句,聚集函数例如可以为COUNT(*)函数、相异集函数(即AVG|MAX|MIN|SUM|COUNT(DISTINCT<列名>)函数)、完全集函数(如AVG|MAX|MIN|COUNT|SUM([ALL]<值表达式>)函数)、方差集函数(如AR_POP、VAR_SAMP、VARIANCE、STDDEV_POP、STDDEV_SAMP、STDDEV等函数)、协方差函数(如COVAR_POP、COVAR_SAMP、CORR等函数)或求区间范围内最大值集函数AREA_MAX等。目标节点可以理解为数据库系统(即数据库集群)中生成目标SQL语句的执行计划的数据库节点,即数据库系统中控制执行节点执行目标SQL语句中的聚集函数的节点,其可以为数据库系统中任一接收到用户触发生成的目标SQL语句的节点,也可以为数据库系统中的主节点,如当数据库系统中设置有主节点时,目标节点可以为数据库系统中的主节点,相应的,数据库系统中的非主节点在接收到用户触发生成的目标SQL语句后,可以将其所接收到的目标SQL语句发送给主节点;当数据库系统中未设置主节点时,目标节点可以为数据库系统中任一接收到用户触发生成的目标SQL语句的节点。匹配函数为去重函数或分组函数,在目标SQL语句中各函数的执行顺序列表中,该匹配函数为该聚集函数的上一函数,即匹配函数执行完成后即执行该聚集函数;匹配函数的匹配函数信息可以包括聚集函数的匹配函数的类型信息(如去重函数或分组函数)以及匹配函数的运算项(如去重函数的去重项或分组函数的分组项),相应的,当匹配函数信息为空时,表示聚集函数在目标SQL语句中不存在对应的匹配函数。
示例性的,目标节点在接收到SQL语句后,对该SQL语句进行语义解析,根据解析结果判断该SQL语句中是否包含聚集函数,并在确定其包含聚集函数时,进一步基于上述解析结果获取该聚集函数的匹配函数的匹配函数信息,如基于上述解析结果判断该聚集函数在该SQL语句各函数的执行顺序列表中的上一函数是否为去重函数/分组函数,若是,则将该去重函数/分组函数确定为该聚集函数的匹配函数,并确定其匹配函数的类型信息和匹配函数的运算项信息等,以得到匹配函数的匹配函数信息;若否,则将其匹配函数的匹配函数信息确定为空。
S120、所述目标节点根据所述匹配函数信息生成所述目标SQL语句的执行计划,其中,所述执行计划中包含有目标函数的目标子执行计划,所述目标函数包括所述聚集函数和所述匹配函数。
在本实施例中,可以在匹配函数信息不同时,生成包含有不同目标子执行计划的执行计划。例如,当聚集函数不存在匹配函数时,可以生成目标子执行计划为首先控制各执行节点在本地进行聚集函数计算,并将聚集函数计算之后的数据重分布至一个节点(即重分布节点),然后控制重分布节点对重分布后的数据再次进行聚集函数计算的执行计划;当匹配函数为分组函数时,可以生成目标子执行计划为首先控制各执行节点在本地进行分组操作和聚集函数计算,并将聚集函数计算之后的数据重分布至一个或多个重分布节点,然后控制重分布节点对重分布后的数据再次进行分组操作和聚集函数计算的执行计划;当匹配函数为去重函数时,可以生成目标子执行计划为控制执行节点判断本地数据是否已按照去重函数的去重项进行分布,在其已按照去重项进行分布时,进一步控制各执行节点在本地进行去重操作和聚集函数计算,将聚集函数计算之后的数据重分布至一个重分布节点,并控制重分布节点对重分布后的数据再次进行聚集函数计算,在其未按照去重项进行分布时,控制各执行节点首先按照去重项在各执行节点间对本地存储的相应数据进行重分布并在重分布完成后控制执行节点和重分布节点执行上述已按照去重项进行分布时执行的操作,或者,在其未按照去重项进行分布时,直接控制各执行节点将相应数据重分布至一个重分布节点,并控制重分布节点对重分布后的数据进行去重操作和聚集函数计算,等等,本实施例不对此进行限制。
其中,执行计划可以理解为控制数据库系统中的相应节点执行对应操作的一系列控制指令的集合,相应的,目标子执行计划可以理解为控制相应节点(如执行节点和重分布节点)执行聚集函数和/或匹配函数的一系列控制指令的集合。目标函数包括聚集函数以及聚集函数的匹配函数,当聚集函数不存在匹配函数时,目标函数中所包含的匹配函数以空值表示,即当聚集函数不存在匹配函数时,目标函数可以仅包括该聚集函数。重分布节点可以为执行节点或数据库系统中其他未被确定为执行节点的节点,即非执行节点,优选为执行节点,以进一步减少目标函数计算过程中所需的网络数据传输量。以下以重分布节点为执行节点为例进行说明。
S130、所述目标节点控制执行节点依据所述目标子执行计划执行所述目标函数,其中,所述执行节点中存储有所述目标函数所运算数据列的数据。
示例性的,数据库系统在按照执行计划中各步骤的执行顺序,执行至目标函数的目标子执行计划时,数据库系统中的执行节点按照目标子执行计划,在聚集函数不存在匹配函数,匹配函数为分组函数,或匹配函数为去重函数且本地数据已按照去重函数的去重项进行分布时,在本地执行目标函数计算,并将计算得到的数据重分布至执行节点中的重分布节点,重分布节点按照目标子执行计划,继续采用目标函数中的非去重函数再次对重分布后的数据进行处理;在匹配函数为去重函数且本地数据未按照去重函数的去重项进行分布时,按照去重项在各执行节点对相应数据进行重分布,在本地对重分布后的数据执行目标函数计算,并将计算得到的数据重分布至执行节点中的重分布节点,重分布节点按照目标子执行计划,继续采用目标函数中的非去重函数再次对重分布后的数据进行处理;或者,在匹配函数为去重函数且本地数据未按照去重函数的去重项进行分布时,将本地存储的数据重分布至执行节点中的重分布节点,重分布节点按照目标子执行计划,采用目标函数对重分布后的数据进行处理。
本发明实施例一提供的MPP架构下聚集函数的执行方法,目标节点在接收到包含聚集函数的目标SQL语句时,获取该聚集函数的匹配函数的匹配函数信息;根据该匹配函数信息生成包含目标函数的目标子执行计划的目标SQL语句的执行计划,该目标函数包括聚集函数和聚集函数的匹配函数;进而控制数据库系统中存储有目标函数对应数据列的数据的各执行节点依据该目标子执行计划执行目标SQL语句中的目标函数。本实施例通过采用上述技术方案,能够为聚集函数提供多样化的集函数处理方式,满足用户在不同场景下的使用需求。
实施例二
图2为本发明实施例二提供的一种MPP架构下目标SQL语句的执行方法的流程示意图。本实施例在上述实施例的基础上,将“所述目标节点控制执行节点依据所述目标子执行计划执行所述目标函数”优化为“所述目标节点确定数据库系统中的执行节点,并控制所述执行节点获取所述执行计划;所述执行节点依据所述执行计划中包含的目标子执行计划,采用目标函数对本地存储的相应数据列的数据进行运算;所述执行节点将运算得到的运算结果重新分布至重分布节点,所述重分布节点为执行节点;所述重分布节点采用所述目标函数中的非去重函数对重新分布后的运算结果进行运算,得到所述聚集函数的聚集结果”。
进一步地,所述匹配函数为去重函数,在采用目标函数对本地存储的目标数据库表中相应数据列的数据进行运算之前,还包括:所述执行节点确定本地存储的所述去重函数对应的目标数据库表中的数据按照去重项分布。
进一步地,所述MPP架构下目标SQL语句的执行方法还包括:所述执行节点在本地存储的所述去重函数对应的目标数据库表中的数据未按照去重项分布时,按照所述去重项将所述目标数据库表中的数据重新分布至各执行节点。
相应的,如图2所示,本实施例提供的MPP架构下目标SQL语句的执行方法包括:
S210、目标节点在接收到包含聚集函数的目标SQL语句时,获取所述聚集函数的匹配函数的匹配函数信息,其中,所述匹配函数为去重函数或第一分组函数,且所述匹配函数的运算结果为所述聚集函数的聚集对象。
S220、所述目标节点根据所述匹配函数信息生成所述目标SQL语句的执行计划,其中,所述执行计划中包含有目标函数的目标子执行计划,所述目标函数包括所述聚集函数和所述匹配函数。
S230、所述目标节点确定数据库系统中的执行节点,并控制所述执行节点获取所述执行计划,执行S240或S260,其中,所述执行节点中存储有所述目标函数所运算数据列的数据,所述目标函数包括所述聚集函数和所述匹配函数。
在本实施例中,执行节点为数据库系统中存储有目标函数所运算的数据列的数据的节点,其可以包括或不包括目标节点,具体可基于目标节点中是否存储有目标函数所运算的数据列的数据确定,即当目标节点中存储目标函数所运算数据列的数据时,执行节点包括目标节点;当目标节点中未存储目标函数所运算数据列的数据时,执行节点不包括目标节点。
其中,目标函数可以仅包括聚集函数和聚集函数的匹配函数,也可以进一步包括其他函数,如目标函数中的去重函数的前一分组函数,本实施例不对此进行限制。考虑到目标SQL语句执行过程中需要通过网络传输的数据量,优选的,当所述匹配函数为去重函数,且所述去重函数的去重对象为第二分组函数的分组结果时,所述目标函数还包括所述第二分组函数,从而,减少第二分组函数执行过程中需要通过网络传输的数据量,提高目标函数的执行效率。
示例性的,目标节点在生成目标SQL语句的执行计划时,根据目标函数所运算数据列的数据的存储位置信息确定并行执行所述目标函数的执行节点,并在执行节点包括目标节点时,将所生成的执行计划发送给执行节点中除目标节点之外的其他节点,在执行节点不包括目标节点时,将所生成的执行计划发送给各执行节点,以使各执行节点均能够获取到该执行计划。其中,数据库系统可以将系统内各节点所存储数据的数据信息记录于数据信息列表中,并将各数据信息列表分发给集群内的每一个数据库节点或主节点,相应的,目标节点可以基于本地存储的数据库系统的数据信息列表确定目标函数所运算数据列的数据的存储位置信息。
S240、所述执行节点依据所述执行计划中包含的目标子执行计划,在所述匹配函数为去重函数时,判断本地存储的所述去重函数对应的目标数据库表中的数据是否按照去重项分布,若是,则执行S270;若否,则执行S250。
S250、所述执行节点按照所述去重项将所述目标数据库表中的数据重新分布至各执行节点,执行S270。
S260、所述执行节点依据所述执行计划中包含的目标子执行计划,在所述匹配函数为分组函数时,执行S270。
在本实施例中,当聚集函数的匹配函数为去重函数时,目标节点可以在目标子执行计划中增加判断本地存储的去重函数对应的目标数据库表的数据是否按照去重项分布,并在其未按照去重项分布时按照去重项将目标数据库表的数据重新分布至各执行节点的操作,以使各执行节点在执行聚集函数的匹配函数时,按照目标子执行计划执行上述步骤S240-S260,此时,按照去重项进行动态重分布可以将数据均匀地分发到各个执行节点,目标函数的执行能够减少需要进行网络传输的数据量,当目标数据库表的数据量很大而目标函数执行得到的中间结果的数据量较小时,虽然进行两次重分布需要进行两次网络数据传输,但因为目标函数大幅度减小了需要进行网络传输的数据量,使得后续将运算结果重分布至重分布节点时的网络传输数据量以及重新分布后在重分布节点上进行的非去重函数计算的计算量大幅减小,从而可以获得更高的执行效率;而当目标函数的执行不能大幅减少需要进行网络传输的数据量时,可以通过数据库系统的优化器根据代价估算动态选择使用本实施例所提供的聚集函数的执行方法还是现有技术中DIS或GAT方式来执行目标函数。其中,数据是否按照去重项分布可以基于各执行节点中是否均未存储按照去重项分布时应分布至其他执行节点的数据来进行判断;按照去重项对目标数据库表的数据重新分布至各执行节点时所采用的重分布方式可以根据需要选取,如可以按照相应列数据的奇偶性进行分布或平均分布等,本实施例不对此进行限制。
S270、所述执行节点采用目标函数对本地存储的相应数据列的数据进行运算。
具体的,当目标函数仅包括聚集函数时,即当聚集函数不存在匹配函数时,按照所述聚集函数对本地存储的目标数据库表中的数据进行聚集函数计算,得到运算结果;当目标函数包括第一分组函数和聚集函数时,即当聚集函数的匹配函数为分组函数时,按照所述第一分组函数对本地存储的目标数据库表中的数据进行分组操作,并在分组完成后,按照所述聚集函数对分组后的目标数据库表中的数据进行聚集函数计算,得到运算结果;当目标函数包括去重函数和聚集函数时,即当聚集函数的匹配函数为去重函数且该去重函数的去重对象不为分组函数的分组结果时,按照所述去重函数对当前时刻本地存储的目标数据库表中的数据进行去重操作,并在去重完成后,按照所述聚集函数对去重后的目标数据库表中的数据进行聚集函数计算,得到运算结果;当目标函数包括第二分组函数、去重函数和聚集函数时,即当聚集函数的匹配函数为去重函数且该去重函数的去重对象为分组函数的分组结果时,按照所述第二分组函数对当前时刻本地存储的目标数据库表中的数据进行分组操作,在分组完成后,按照所述去重函数对分组后的目标数据库表中的数据进行去重操作,并在去重完成后,按照所述聚集函数对去重后的目标数据库表中的数据进行聚集函数计算,得到运算结果。其中,目标数据库表为目标函数所运算数据列所属的数据库表。
S280、所述执行节点将运算得到的运算结果重新分布至重分布节点,所述重分布节点为执行节点。
在本实施例中,得到运算结果后,可以按照目标子执行计划中所规定的重分布节点的选取规则自各执行节点中选取个数与目标子执行计划中所规定的重分布节点的数量信息相符的节点作为重分布节点,并按照目标子执行计划中所规定的重分布规则,将所得到的运算结果重新分布至所述重新分布节点,如当某一执行节点自身即为重新分布节点时,将本节点运算得到的运算结果发送给相应的重分布节点,和/或,接收其他执行节点发送的运算结果;当某一执行节点自身不为重新分布节点时,将本节点运算得到的运算结果发送给相应的重分布节点。
其中,运算得到的运算结果为执行聚集函数计算之后得到的运算结果;重分布节点的选取规则、个数和运算结果的重分布规则可以在生成执行计划时由目标节点进行规定,所述选取规则例如可以为按照剩余运行资源由大到小的顺序选取重分布节点或按照网络传输资源由大到小的顺序选取重分布节点等;重分布节点的个数可以为任意一个或多个执行节点,优选的,当所述目标函数中存在分组函数时,所述重分布节点可以为任意一个或多个执行节点,当所述目标函数不存在分组函数时,所述重分布节点可以为任意一个执行节点,其中,所述分组函数包括所述第一分组函数和所述第二分组函数;当重分布节点的数量为一个时,所述重分布规则可以为将所有运算结果均收集到重分布节点上,当重分布节点的数量为多个时,所述重分布节点可以为按照目标函数中分组函数的分组项所对应数据列数据的奇偶性进行重分布等。
S290、所述重分布节点采用所述目标函数中的非去重函数对重新分布后的运算结果进行运算,得到所述聚集函数的聚集结果。
由于当目标函数中不包括去重函数时,无需对重新分布后的运算结果执行去重操作,当目标函数中包括去重函数时,重新分布前已对目标数据库表中相应数据列的数据执行过去重操作,重新分布后也无需再次去重。因此,在本实施例中,无论目标函数中是否包含去重函数,都不需要再对重新分布后的运算结果执行去重操作。
具体的,当目标函数中包含去重函数时,按照目标SQL语句中各函数的执行顺序,采用目标函数中除去重函数之外的其他函数对重新分布后的运算结果进行运算,得到聚集结果;当目标函数不包含去重函数时,按照目标SQL语句中各函数的执行顺序,采用目标函数对重新分布后的运算结果进行运算,得到聚集结果。
示例性的,当目标函数仅包括聚集函数时,按照所述聚集函数对重新分布后本地存储的运算结果进行聚集函数计算,得到聚集结果;当目标函数包括第一分组函数和聚集函数时,按照所述第一分组函数对重新分布后本地存储的运算结果进行分组操作,并在分组完成后,按照所述聚集函数对分组后的目标数据库表中的数据进行聚集函数计算,得到聚集结果;当目标函数包括去重函数和聚集函数时,按照所述聚集函数对重新分布后本地存储的运算结果进行聚集函数计算,得到聚集结果;当目标函数包括第二分组函数、去重函数和聚集函数时,按照所述第二分组函数对当前时刻本地存储的运算结果进行分组操作,并在分组完成后,按照所述聚集函数对分组后的目标数据库表中的数据进行聚集函数计算,得到聚集结果。
假设表S的C1、C2列数据分布于MPP数据库系统的两个节点NODE1和NODE2中,其分布情况如表1所示,数据重分布规则为按照奇偶性重分布,且NODE1为重分布项中奇数数据的分布节点,NODE2为重分布项中偶数数据的分布节点。
表1 C1、C2列数据分布表
针对表1中的数据,在本实施例的一个示例性的描述中,目标节点接收到的目标SQL语句为SELECT SUM(C1)FROM S GROUP BY C1,则:
使用现有技术中的DIS方式执行该目标SQL语句中的分组函数和聚集函数时,会首先对表S的数据根据C1列进行动态重分布,重分布后两节点中存储的C1列的数据为:NODE1:1、1、1、1、3、3、3,NODE2:2、2、2、4、4、4、4;然后再对重新分布后的C1列数据做分组操作和集函数计算(即先对相应数据做分组操作,并对分组后的数据做集函数计算),得到的聚集结果为(括号中第一个数据为相应分组所对应的C1列的值,第二个数据为该分组中的集函数计算结果):NODE1:(1,4)、(3,9),NODE2:(2,6)、(4,16)。
使用现有技术中的GAT方式执行该目标SQL语句中的分组函数和聚集函数时,会将C1列数据全部收集到一个节点,如NODE1,再做收集后C1列的数据进行分组操作和聚集函数计算,得到的聚集结果为:NODE1:(1,4)、(3,9)、(2,6)、(4,16)。
当重分布节点为多个(假设为NODE1和NODE2)时,使用本实施例所提供的聚集函数的执行方法执行该目标SQL语句中的分组函数和聚集函数的过程可以为:首先控制各执行节点分别对C1列数据进行分组操作和聚集函数计算,得到如下中间结果:NODE1:(1,2)、(2,4)、(3,6)、(4,4),NODE2:(1,2)、(2,2)、(3,3)、(4,12);然后根据C1列的奇偶性对集函数计算得到的上述中间结果进行数据重分布,重分布后各数据的分布情况为:NODE1:(1,2)、(3,6)、(1,2)、(3,3),NODE2:(2,4)、(4,4)、(2,2)、(4,12);进而再次控制各重分布节点对重分布后的数据进行分组操作和集函数计算,得到聚集结果:NODE1:(1,4)、(3,9),NODE2:(2,6)、(4,16)。
当重分布节点为1个(假设为NODE1)时,使用本实施例所提供的聚集函数的执行方法执行该目标SQL语句中的分组函数和聚集函数的过程可以为:首先控制各执行节点分别对C1列数据进行分组操作和聚集函数计算,得到如下中间结果:NODE1:(1,2)、(2,4)、(3,6)、(4,4),NODE2:(1,2)、(2,2)、(3,3)、(4,12);然后将上述中间结果重分布至NODE1:NODE1:(1,2)、(2,4)、(3,6)、(4,4)、(1,2)、(2,2)、(3,3)、(4,12);进而再次控制NODE1对重分布后的数据进行分组操作和聚集函数计算,得到聚集结果:NODE1:(1,4),(3,9),(2,6),(4,16)。
基于上述示例性的描述可以看出,采用本实施例所提供的聚集函数的执行方法所得到的聚集结果与采用现有技术中的执行方法所得到的聚集结果是一致的,说明本实施例所提供的聚集函数的执行方法是准确可行的。而由于分组操作和集函数计算能够大幅度地减少中间结果集的数据量,因此,采用本实施例所提供的聚集函数的执行方法能够大幅度减少目标函数执行时的网络传输数据量,提高目标函数的整体执行效率,进而提高SQL语句的执行效率。
针对表1中的数据,在本实施例的另一个示例性的描述中,目标节点接收到的目标SQL语句为SELECT SUM(DISTINCT C2)FROM S GROUP BY C1,则:
当重分布节点为多个(假设为NODE1和NODE2)时,使用本实施例所提供的聚集函数的执行方法执行该目标SQL语句中的分组函数和聚集函数的过程可以为:首先控制各执行节点分别对表S中的数据按照C1列进行分组操作,在按照C1列分组后,按照分组对C2列的数据进行去重操作和聚集函数计算,得到如下中间结果(括号中第一个数据为相应分组所对应的C1列的值,第二个数据为该分组中的聚集函数计算结果):NODE1:(1,1)、(2,4)、(3,3)、(4,3),NODE2:(1,2)、(2,2)、(3,2)、(4,4);然后根据C1列的奇偶性对聚集函数计算得到的上述中间结果进行数据重分布,重分布后各数据的分布情况为:NODE1:(1,1)、(1,2)、(3,3)、(3,2),NODE2:(2,4)、(2,2)、(4,3)、(4,4);进而再次控制各重分布节点对重分布后的数据进行分组操作(按照C1列进行分组)和聚集函数计算,得到聚集结果:NODE1:(1,3)、(3,5),NODE2:(2,6)、(4,7)。
当重分布节点为1个(假设为NODE1)时,使用本实施例所提供的聚集函数的执行方法执行该目标SQL语句中的分组函数和聚集函数的过程可以为:首先控制各执行节点分别对表S中的数据按照C1列进行分组操作,在按照C1列分组后,按照分组对C2列的数据进行去重操作和聚集函数计算,得到如下中间结果:NODE1:(1,1)、(2,4)、(3,3)、(4,3),NODE2:(1,2)、(2,2)、(3,2)、(4,4);然后将上述中间结果重分布至NODE1:NODE1:(1,1)、(1,2)、(3,3)、(3,2)、(2,4)、(2,2)、(4,3)、(4,4);进而再次控制NODE1对重分布后的数据进行分组操作和聚集函数计算,得到聚集结果:NODE1:(1,3),(2,6),(3,5),(4,7)。
本发明实施例二提供的MPP架构下聚集函数的执行方法,获取到执行计划后,各执行节点在匹配函数为去重函数且本地存储的相应数据未按去重项进行分布时,按照去重项对目标数据库表的数据进行重分布;在重分布完成后,在匹配函数为去重函数且各执行节点本地存储的相应数据已按去重项进行分布时,或者,在匹配函数不为去重函数时,采用目标函数对本地存储的相应数据列的数据进行运算,并将运算结果重新分布至重分布节点;重分布节点采用目标函数中的非去重函数对重新分布后的运算进行运算,得到聚集函数的聚集结果。本实施例通过采用上述技术方案,能够减少目标函数执行过程中的网络数据传输量,减少目标函数执行所占用的网络资源,提高目标函数的执行效率,进而提高目标SQL语句的执行效率,从而提高数据库系统的响应速度。
实施例三
本发明实施例三提供一种数据库系统。该系统可通过执行MPP架构下聚集函数的执行方法来执行目标SQL语句中的聚集函数。图3为本发明实施例三提供的一种数据库系统的结构示意图,如图3所示(图中以目标节点10与执行节点20为不同节点为例,图中的其他节点30为数据库系统中除目标节点10和执行节点20之外的节点),所述数据库系统包括多个业务功能相同的数据库节点,其中一个数据库节点为目标节点10,多个数据库节点为执行节点20,其中,
所述目标节点10,用于在接收到包含聚集函数的目标SQL语句时,获取所述聚集函数的匹配函数的匹配函数信息,其中,所述匹配函数为去重函数或第一分组函数,且所述匹配函数的运算结果为所述聚集函数的聚集对象;
所述目标节点10,还用于根据所述匹配函数信息生成所述目标SQL语句的执行计划,其中,所述执行计划中包含有目标函数的目标子执行计划,所述目标函数包括所述聚集函数和所述匹配函数;
所述目标节点10,还用于控制所述执行节点20依据所述目标子执行计划执行所述目标函数,其中,所述执行节点中存储有所述目标函数所运算数据列的数据。
本发明实施例三提供的数据库系统,通过目标节点在接收到包含聚集函数的目标SQL语句时,获取该聚集函数的匹配函数的匹配函数信息;根据该匹配函数信息生成包含目标函数的目标子执行计划的目标SQL语句的执行计划,该目标函数包括聚集函数和聚集函数的匹配函数;进而控制数据库系统中存储有目标函数对应数据列的数据的各执行节点依据该目标子执行计划执行目标SQL语句中的目标函数。本实施例通过采用上述技术方案,能够为聚集函数提供多样化的集函数处理方式,满足用户在不同场景下的使用需求。
在上述方案中,所述目标节点10,可用于确定数据库系统中的执行节点,并控制所述执行节点获取所述执行计划;所述执行节点20,可用于依据所述执行计划中包含的目标子执行计划,采用目标函数对本地存储的相应数据列的数据进行运算,并将运算得到的运算结果重新分布至重分布节点,所述重分布节点为执行节点20;所述重分布节点,用于采用所述目标函数中的非去重函数对重新分布后的运算结果进行运算,得到所述聚集函数的聚集结果。
在上述方案中,当所述匹配函数为去重函数,且所述去重函数的去重对象为第二分组函数的分组结果时,所述目标函数还可以包括所述第二分组函数。
在上述方案中,当所述目标函数中存在分组函数时,所述重分布节点可以为任意一个或多个执行节点;当所述目标函数不存在分组函数时,所述重分布节点可以为任意一个执行节点;其中,所述分组函数包括所述第一分组函数和所述第二分组函数。
进一步地,所述匹配函数为去重函数,所述执行节点20还可以用于:在采用目标函数对本地存储的目标数据库表中相应数据列的数据进行运算之前,确定本地存储的所述去重函数对应的目标数据库表中的数据按照去重项分布。
进一步地,所述执行节点20还可以用于:在本地存储的所述去重函数对应的目标数据库表中的数据未按照去重项分布时,按照所述去重项将所述目标数据库表中的数据重新分布至各执行节点。
本发明实施例三提供的数据库系统可执行本发明任意实施例提供的MPP架构下聚集函数的执行方法,具备执行MPP架构下聚集函数的执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本发明任意实施例所提供的MPP架构下聚集函数的执行方法。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (10)
1.一种MPP架构下聚集函数的执行方法,其特征在于,包括:
目标节点在接收到包含聚集函数的目标SQL语句时,获取所述聚集函数的匹配函数的匹配函数信息,其中,所述匹配函数为去重函数或第一分组函数,且所述匹配函数的运算结果为所述聚集函数的聚集对象;
所述目标节点根据所述匹配函数信息生成所述目标SQL语句的执行计划,其中,所述执行计划中包含有目标函数的目标子执行计划,所述目标函数包括所述聚集函数和所述匹配函数;
所述目标节点控制执行节点依据所述目标子执行计划执行所述目标函数,其中,所述执行节点中存储有所述目标函数所运算数据列的数据。
2.根据权利要求1所述的方法,其特征在于,所述目标节点控制执行节点依据所述目标子执行计划执行所述目标函数,包括:
所述目标节点确定数据库系统中的执行节点,并控制所述执行节点获取所述执行计划;
所述执行节点依据所述执行计划中包含的目标子执行计划,采用目标函数对本地存储的相应数据列的数据进行运算;
所述执行节点将运算得到的运算结果重新分布至重分布节点,所述重分布节点为执行节点;
所述重分布节点采用所述目标函数中的非去重函数对重新分布后的运算结果进行运算,得到所述聚集函数的聚集结果。
3.根据权利要求2所述的方法,其特征在于,当所述匹配函数为去重函数,且所述去重函数的去重对象为第二分组函数的分组结果时,所述目标函数还包括所述第二分组函数。
4.根据权利要求3所述的方法,其特征在于,当所述目标函数中存在分组函数时,所述重分布节点为任意一个或多个执行节点;当所述目标函数不存在分组函数时,所述重分布节点为任意一个执行节点;其中,所述分组函数包括所述第一分组函数和所述第二分组函数。
5.根据权利要求2-4任一所述的方法,其特征在于,所述匹配函数为去重函数,在采用目标函数对本地存储的目标数据库表中相应数据列的数据进行运算之前,还包括:
所述执行节点确定本地存储的所述去重函数对应的目标数据库表中的数据按照去重项分布。
6.根据权利要求5所述的方法,其特征在于,还包括:
所述执行节点在本地存储的所述去重函数对应的目标数据库表中的数据未按照去重项分布时,按照所述去重项将所述目标数据库表中的数据重新分布至各执行节点。
7.一种数据库系统,其特征在于,包括多个业务功能相同的数据库节点,其中一个数据库节点为目标节点,多个数据库节点为执行节点,其中,
所述目标节点,用于在接收到包含聚集函数的目标SQL语句时,获取所述聚集函数的匹配函数的匹配函数信息,其中,所述匹配函数为去重函数或第一分组函数,且所述匹配函数的运算结果为所述聚集函数的聚集对象;
所述目标节点,还用于根据所述匹配函数信息生成所述目标SQL语句的执行计划,其中,所述执行计划中包含有目标函数的目标子执行计划,所述目标函数包括所述聚集函数和所述匹配函数;
所述目标节点,还用于控制所述执行节点依据所述目标子执行计划执行所述目标函数,其中,所述执行节点中存储有所述目标函数所运算数据列的数据。
8.根据权利要求7所述的系统,其特征在于,
所述目标节点,用于确定数据库系统中的执行节点,并控制所述执行节点获取所述执行计划;
所述执行节点,用于依据所述执行计划中包含的目标子执行计划,采用目标函数对本地存储的相应数据列的数据进行运算,并将运算得到的运算结果重新分布至重分布节点,所述重分布节点为执行节点;
所述重分布节点,用于采用所述目标函数中的非去重函数对重新分布后的运算结果进行运算,得到所述聚集函数的聚集结果。
9.根据权利要求8所述的系统,其特征在于,所述匹配函数为去重函数,所述执行节点还用于:
在采用目标函数对本地存储的目标数据库表中相应数据列的数据进行运算之前,确定本地存储的所述去重函数对应的目标数据库表中的数据按照去重项分布。
10.根据权利要求9所述的系统,其特征在于,所述执行节点还用于:
在本地存储的所述去重函数对应的目标数据库表中的数据未按照去重项分布时,按照所述去重项将所述目标数据库表中的数据重新分布至各执行节点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911366529.4A CN111125151B (zh) | 2019-12-26 | 2019-12-26 | Mpp架构下聚集函数的执行方法和数据库系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911366529.4A CN111125151B (zh) | 2019-12-26 | 2019-12-26 | Mpp架构下聚集函数的执行方法和数据库系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111125151A true CN111125151A (zh) | 2020-05-08 |
CN111125151B CN111125151B (zh) | 2023-05-12 |
Family
ID=70503051
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911366529.4A Active CN111125151B (zh) | 2019-12-26 | 2019-12-26 | Mpp架构下聚集函数的执行方法和数据库系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111125151B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112100199A (zh) * | 2020-09-21 | 2020-12-18 | 上海达梦数据库有限公司 | 一种基于数据集分组的分析方法、装置、设备及介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140280021A1 (en) * | 2013-03-13 | 2014-09-18 | Futurewei Technologies, Inc. | System and Method for Distributed SQL Join Processing in Shared-Nothing Relational Database Clusters Using Stationary Tables |
CN108304505A (zh) * | 2018-01-18 | 2018-07-20 | 上海达梦数据库有限公司 | 一种sql语句的处理方法、装置、服务器及存储介质 |
CN108628975A (zh) * | 2018-04-25 | 2018-10-09 | 上海达梦数据库有限公司 | 一种数据库sql语句优化方法及装置 |
-
2019
- 2019-12-26 CN CN201911366529.4A patent/CN111125151B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140280021A1 (en) * | 2013-03-13 | 2014-09-18 | Futurewei Technologies, Inc. | System and Method for Distributed SQL Join Processing in Shared-Nothing Relational Database Clusters Using Stationary Tables |
CN108304505A (zh) * | 2018-01-18 | 2018-07-20 | 上海达梦数据库有限公司 | 一种sql语句的处理方法、装置、服务器及存储介质 |
CN108628975A (zh) * | 2018-04-25 | 2018-10-09 | 上海达梦数据库有限公司 | 一种数据库sql语句优化方法及装置 |
Non-Patent Citations (1)
Title |
---|
肖杰;谢东;曾玢石;: "SQL聚集函数扩展" * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112100199A (zh) * | 2020-09-21 | 2020-12-18 | 上海达梦数据库有限公司 | 一种基于数据集分组的分析方法、装置、设备及介质 |
CN112100199B (zh) * | 2020-09-21 | 2024-03-26 | 上海达梦数据库有限公司 | 一种基于数据集分组的分析方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111125151B (zh) | 2023-05-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11120022B2 (en) | Processing a database query using a shared metadata store | |
CN107679192B (zh) | 多集群协同数据处理方法、系统、存储介质及设备 | |
US9152669B2 (en) | System and method for distributed SQL join processing in shared-nothing relational database clusters using stationary tables | |
KR101657561B1 (ko) | 클러스터 시스템에서의 데이터 처리 방법 및 장치 | |
WO2018177060A1 (zh) | 查询优化方法及相关装置 | |
US9576026B2 (en) | System and method for distributed SQL join processing in shared-nothing relational database clusters using self directed data streams | |
CN108469988A (zh) | 一种基于异构Hadoop集群的任务调度方法 | |
CN107783985B (zh) | 一种分布式数据库查询方法、装置及管理系统 | |
CN108683692A (zh) | 一种业务请求处理方法及装置 | |
CN108536808A (zh) | 一种基于Spark计算框架的数据获取方法和装置 | |
WO2015157338A1 (en) | Data transformation system and method | |
Cheng et al. | Scale-out processing of large RDF datasets | |
CN115114374B (zh) | 事务执行方法、装置、计算设备及存储介质 | |
CN111723161A (zh) | 一种数据处理方法、装置及设备 | |
CN111125151B (zh) | Mpp架构下聚集函数的执行方法和数据库系统 | |
US11789957B2 (en) | System, method, and apparatus for querying a database | |
CN114077492A (zh) | 云计算基础设施资源的预测模型训练、预测方法和系统 | |
CN108932258A (zh) | 数据索引处理方法及装置 | |
CN111209305A (zh) | 查询数据的方法、数据节点、分布式数据库、计算设备 | |
KR101472257B1 (ko) | 예측 논리적 데이터 지역성을 이용한 병렬질의 처리 방법 및 장치 | |
US9063773B2 (en) | Automatic parallelism tuning for apply processes | |
CN110162574A (zh) | 数据重分布方式的确定方法、装置、服务器及存储介质 | |
US10963426B1 (en) | Method of providing access controls and permissions over relational data stored in a hadoop file system | |
CN117785952A (zh) | 一种数据查询方法、装置、服务器及介质 | |
CN115827720A (zh) | 大数据的查询方法及装置、处理器和电子设备 |
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 |