The invention discloses a database query method, device, server and storage medium under the MPP environment, including: according to the received SQL statement, determining the left data set and the right data set of the target node, collecting the data related to the hash semi connection operation in the left data set of all nodes as the new left data set, and adding temporary items in the new left data set , send the new left dataset to other nodes except the target node, obtain the output item of the target node, take the output item of the target node as the output item in the initial subquery result of the target node, take the value corresponding to the output item in the temporary item of the new left dataset as the value of the temporary item in the initial subquery result, and receive the initial subquery result sent by other nodes According to the value of the output items in the initial sub query results of all nodes and the value of the temporary items in the initial sub query results, the final query results are determined, which improves the efficiency of database query.
【技术实现步骤摘要】
MPP环境下数据库查询方法、装置、服务器及存储介质
本专利技术实施例涉及数据处理
,尤其涉及一种大规模并行处理(MassivelyParallelProcessing,MPP)环境下数据库查询方法、装置、服务器及存储介质。
技术介绍
在MPP环境下,非共享数据库集群中的每个节点都有独立磁盘存储系统和内存系统。节点间数据通过网络相互连接,彼此协调计算。简单来说,MPP是将任务并行地分散到多个节点上,在每个节点上计算完成后,将各自部分的结果汇总在一起得到最终的执行结果。在MPP环境下,数据库表以合适的分布列进行数据分布,存储在各节点上。当用户进行数据库查询时,在查询过程中,需要数据库表进行连接等操作,若操作涉及到非分布列,则各节点在进行计算时,还需要非本节点数据才能完成,此时需要对数据进行动态重分布。目前,数据动态重分布的方式有两种:1、分发(DISTRIBUTE)重分布方式:参与连接的左边数据集与右边数据集的数据按照重分布项进行重分布;2、收集(GATHER)重分布方式:将所有节点的一个数据集的数据全部收集到某个节点,相当于拉成全量复制表,另一个表维持不变。对于MPP环境下的哈希半连接,使用DISTRIBUTE重分布方式需要将参与连接的左边数据集和右边数据集都进行分发;若使用GATHER重分布方式,则只能对右边数据集数据进行收集,因为对左边数据集数据进行收集会导致连接结果不正确(因为同一行左边数据集数据可能在多个节点上都连接成功返回结果,导致最终返回多行,不符合半连接要求)。但是,在数据库查询过程 ...
【技术保护点】
1.一种大规模并行处理MPP环境下数据库查询方法,其特征在于,包括:/n根据接收到的结构化查询语言SQL语句,确定目标节点的左边数据集和右边数据集;其中,所述SQL语句包括哈希半连接操作,所述左边数据集包括至少一个数据项;/n收集所有节点的左边数据集中与所述哈希半连接操作相关的数据,作为新的左边数据集,并在所述新的左边数据集中加入临时项;其中,所述新的左边数据集包括至少一个数据项,所述临时项的值用于标识所述新的左边数据集的所述至少一个数据项中不同位置的数据;/n将所述新的左边数据集发送至除所述目标节点之外的其他节点;/n根据所述新的左边数据集以及所述右边数据集,获取所述目标节点的输出项,将所述目标节点的输出项作为所述目标节点的初始子查询结果中的输出项,将所述新的左边数据集的临时项中,与所述输出项对应的值作为所述初始子查询结果的临时项的值,并接收所述其他节点发送的初始子查询结果;/n根据所有节点的初始子查询结果中输出项的值及各所述初始子查询结果中的临时项的值,确定最终查询结果。/n
【技术特征摘要】
1.一种大规模并行处理MPP环境下数据库查询方法,其特征在于,包括:
根据接收到的结构化查询语言SQL语句,确定目标节点的左边数据集和右边数据集;其中,所述SQL语句包括哈希半连接操作,所述左边数据集包括至少一个数据项;
收集所有节点的左边数据集中与所述哈希半连接操作相关的数据,作为新的左边数据集,并在所述新的左边数据集中加入临时项;其中,所述新的左边数据集包括至少一个数据项,所述临时项的值用于标识所述新的左边数据集的所述至少一个数据项中不同位置的数据;
将所述新的左边数据集发送至除所述目标节点之外的其他节点;
根据所述新的左边数据集以及所述右边数据集,获取所述目标节点的输出项,将所述目标节点的输出项作为所述目标节点的初始子查询结果中的输出项,将所述新的左边数据集的临时项中,与所述输出项对应的值作为所述初始子查询结果的临时项的值,并接收所述其他节点发送的初始子查询结果;
根据所有节点的初始子查询结果中输出项的值及各所述初始子查询结果中的临时项的值,确定最终查询结果。
2.根据权利要求1所述的方法,其特征在于,所述根据所有节点的初始子查询结果中输出项的值及各所述初始子查询结果中的临时项的值,确定最终查询结果,包括:
收集所有节点的初始子查询结果中输出项的值,作为初始查询结果中输出项的值,收集所有节点的初始子查询结果中临时项对应的值,作为初始查询结果中临时项对应的值;
根据所述初始查询结果中临时项的值进行去重,形成中间查询结果;
将所述中间查询结果中的临时项去除,形成所述最终查询结果。
3.根据权利要求2所述的方法,其特征在于,所述根据所述初始查询结果中临时项的值进行去重,形成中间查询结果,包括:
如果所述初始查询结果的临时项中有多个相同值,则只保留所述多个相同值中的任一个值及对应的输出项的值。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述新的左边数据集中的数据项以及所述临时项均以列的形式表示,所述临时项的值为所述新的左边数据集的数据项中各个值的行号。
5.一种大规模并行处理MPP环境下数据库查询装置,其特征在于,包括:
第一确定模块,用于根据接收到的结构化查询语言SQL语句,确定目标节点的左边数据集和右边数据集;其中,所述SQL语句包括哈希半连接操作,所述左...
【专利技术属性】
技术研发人员:张钦,朱仲颖,韩朱忠,
申请(专利权)人:上海达梦数据库有限公司,
类型:发明
国别省市:上海;31
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。