CN105630789A - 一种查询计划转化方法及装置 - Google Patents
一种查询计划转化方法及装置 Download PDFInfo
- Publication number
- CN105630789A CN105630789A CN201410588240.8A CN201410588240A CN105630789A CN 105630789 A CN105630789 A CN 105630789A CN 201410588240 A CN201410588240 A CN 201410588240A CN 105630789 A CN105630789 A CN 105630789A
- Authority
- CN
- China
- Prior art keywords
- query
- query operator
- operator
- plan
- zone attribute
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种查询计划转化方法及装置,涉及计算机领域,可以更大程度的减少构成物理查询计划的物理查询任务的数量。具体方案为:从逻辑查询计划中提取第一查询操作符和第二查询操作符;若第一查询操作符的分区属性为第二查询操作符的分区属性的前缀,则改写逻辑查询计划中第二查询操作符的分区属性,以使得第二查询操作符的分区属性与第一查询操作符的分区属性相同;从逻辑查询计划中删除第二查询操作符的分区操作符,并根据第二查询操作符、第一查询操作符以及第一查询操作符的分区操作符生成一个物理查询任务,以构成物理查询计划,本发明用于逻辑查询计划转化为物理查询计划的过程中。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种查询计划转化方法及装置。
背景技术
逻辑查询计划是一种由查询语句解析而来,以查询语句中的查询操作符为节点的树状查询结构,逻辑查询计划中的每一个查询操作符都具有分区属性和分区操作符,分区属性是该查询操作符所需要操作的所有数据共有的一个属性值。分区操作符位于该查询操作符与另一个查询操作符之间,用以间隔两个查询操作符。逻辑查询计划可以转化为物理查询计划。
逻辑查询计划转化为物理查询计划的具体过程为:以一个分区操作符作为开始生成一个物理查询任务的标识,将该分区操作符与下一个分区操作符之间的查询操作符生成一个物理查询任务,以下一个分区操作符作为生成下一个物理查询任务的标识,开始生成下一个物理查询任务。物理查询计划是一种以这些生成的多个物理查询任务为节点的树状查询结构。
当构成物理查询计划所需的物理查询任务数量变少时,执行物理查询任务所需进行的读数据操作和写数据操作也会变少,由于读数据操作和写数据操作而引入的时间开销也就会变小,这样执行物理查询计划所用的时间就会变小。
现有技术为了达到减少构成物理查询计划所需的物理查询任务的数量的目的,查找逻辑查询计划中间隔一个分区操作符且分区属性完全相同的两个查询操作符,删除上述两个查询操作符之间的分区操作符,使得在逻辑查询计划转化为物理查询计划的过程中,将上述两个查询操作符由原来生成为两个不同的物理查询任务变为生成一个物理查询任务,以此来减少物理查询任务的数量。
但是该技术要求两个查询操作符具有完全相同的分区属性,且具有直接前驱后继关系,这样会导致该技术的应用场景很受限制。
发明内容
本发明的实施例提供一种查询计划转化方法及装置,可以更大程度的减少构成物理查询计划的物理查询任务的数量。
为达到上述目的,本发明的实施例采用如下技术方案:
本发明实施例的第一方面,提供一种查询计划转化方法,包括:
从逻辑查询计划中提取第一查询操作符和第二查询操作符,所述第一查询操作符为所述第二查询操作符的前驱操作符;
若所述第一查询操作符的分区属性为所述第二查询操作符的分区属性的前缀,则改写所述逻辑查询计划中所述第二查询操作符的分区属性,以使得所述第二查询操作符的分区属性与所述第一查询操作符的分区属性相同;
从所述逻辑查询计划中删除所述第二查询操作符的分区操作符,并根据所述第二查询操作符、所述第一查询操作符以及所述第一查询操作符的分区操作符生成一个物理查询任务,以构成物理查询计划。
结合第一方面,在第一种可能的实现方式中,所述若所述第一查询操作符的分区属性为所述第二查询操作符的分区属性的前缀,则改写所述逻辑查询计划中所述第二查询操作符的分区属性,以使得所述第二查询操作符的分区属性与所述第一查询操作符的分区属性相同,包括:
若所述第一查询操作符的分区属性为所述第二查询操作符的分区属性的前缀,且所述第一查询操作符与所述第二查询操作符之间间隔有第三查询操作符,所述第三查询操作符能够使用广播查询算法实现,则将所述第三查询操作符改写为广播查询操作符,所述广播查询操作符没有分区操作符;
改写所述逻辑查询计划中所述第二查询操作符的分区属性,以使得所述第二查询操作符的分区属性与所述第一查询操作符的分区属性相同;
从所述逻辑查询计划中删除所述第二查询操作符的分区操作符,并根据所述第二查询操作符、所述第一查询操作符以及所述第一查询操作符的分区操作符生成一个物理查询任务,以构成所述物理查询计划,包括:
从所述逻辑查询计划中删除所述第二查询操作符的分区操作符,并根据所述第二查询操作符、所述广播查询操作符、所述第一查询操作符以及所述第一查询操作符的分区操作符生成一个物理查询任务,以构成所述物理查询计划;
其中,所述第一查询操作符为所述第三查询操作符的前驱操作符,且所述第三查询操作符为所述第二查询操作符的前驱操作符。
结合第一方面,在第二种可能的实现方式中,若所述第一查询操作符的分区属性与所述第二查询操作符的分区属性相同,且所述第一查询操作符与所述第二查询操作符之间间隔有第三查询操作符,所述第三查询操作符能够使用广播查询算法实现,则将所述第三查询操作符改写为广播查询操作符,所述广播查询操作符没有分区操作符;
从所述逻辑查询计划中删除所述第二查询操作符的分区操作符,并根据所述第二查询操作符、所述广播查询操作符、所述第一查询操作符以及所述第一查询操作符的分区操作符生成一个物理查询任务,以构成所述物理查询计划;
其中,所述第一查询操作符为所述第三查询操作符的前驱操作符,且所述第三查询操作符为所述第二查询操作符的前驱操作符。
结合第一方面、第一种可能的实现方式和第二种可能实现方式,在第三种可能的实现方式中,在所述从所述逻辑查询计划中删除所述第二查询操作符的分区操作符之前,所述方法还包括:
改写所述第一查询操作符的排序属性,以使得所述第一查询操作符的排序属性与所述第二查询操作符的排序属性相同;
其中,改写前的所述第一查询操作符的排序属性与第一查询操作符的分区属性相同,所述第二查询操作符的排序属性与改写前的所述第二查询操作符的分区属性相同;
所述排序属性用于对所述逻辑查询计划的所述查询操作符所操作的数据表中的数据进行分区排序。
结合第一方面、第一种可能的实现方式和第二种可能实现方式,在第四种可能的实现方式中,所述根据所述第二查询操作符、所述第一查询操作符以及所述第一查询操作符的分区操作符生成一个物理查询任务,以构成所述物理查询计划,包括:
采用任务流关联性优化JFC技术,根据所述第二查询操作符、所述第一查询操作符以及所述第一查询操作符的分区操作符生成一个物理查询任务,以构成所述物理查询计划。
本发明实施例的第二方面,还提供一种查询计划转化装置,包括:
提取单元,用于从逻辑查询计划中提取第一查询操作符和第二查询操作符,所述第一查询操作符为所述第二查询操作符的前驱操作符;
第一改写单元,用于若所述提取单元提取的所述第一查询操作符的分区属性为所述提取单元提取的所述第二查询操作符的分区属性的前缀,则改写所述逻辑查询计划中所述第二查询操作符的分区属性,以使得所述第二查询操作符的分区属性与所述第一查询操作符的分区属性相同;
删除单元,用于在所述第一改写单元改写所述逻辑查询计划中所述第二查询操作符的分区属性后,从所述逻辑查询计划中删除所述第二查询操作符的分区操作符;
生成单元,用于在所述删除单元删除所述第二查询操作符的分区操作符后,根据所述第二查询操作符、所述第一查询操作符以及所述第一查询操作符的分区操作符生成一个物理查询任务,以构成物理查询计划。
结合第二方面,在第一种可能的实现方式中,所述第一改写单元,包括:
第一改写模块,用于若所述第一查询操作符的分区属性为所述第二查询操作符的分区属性的前缀,且所述第一查询操作符与所述第二查询操作符之间间隔有第三查询操作符,所述第三查询操作符能够使用广播查询算法实现,则将所述第三查询操作符改写为广播查询操作符,所述广播查询操作符没有分区操作符;
第二改写模块,用于改写所述逻辑查询计划中所述第二查询操作符的分区属性,以使得所述第二查询操作符的分区属性与所述第一查询操作符的分区属性相同;
所述生成单元,还用于根据所述第二查询操作符、所述广播查询操作符、所述第一查询操作符以及所述第一查询操作符的分区操作符生成一个物理查询任务,以构成所述物理查询计划;
其中,所述第一查询操作符为所述第三查询操作符的前驱操作符,且所述第三查询操作符为所述第二查询操作符的前驱操作符。
结合第二方面,在第二种可能的实现方式中,第二改写单元,用于若所述提取单元提取的所述第一查询操作符的分区属性与所述提取单元提取的所述第二查询操作符的分区属性相同,且所述第一查询操作符与所述第二查询操作符之间间隔有第三查询操作符,所述第三查询操作符能够使用广播查询算法实现,则将所述第三查询操作符改写为广播查询操作符,所述广播查询操作符没有分区操作符;
所述删除单元,还用于在所述第二改写单元将所述第三查询操作符改写为所述广播查询操作符后,从所述逻辑查询计划中删除所述第二查询操作符的分区操作符;
所述生成单元,还用于在所述删除单元删除所述第二查询操作符的分区操作符后,根据所述第二查询操作符、所述广播查询操作符、所述第一查询操作符以及所述第一查询操作符的分区操作符生成一个物理查询任务,以构成所述物理查询计划;
其中,所述第一查询操作符为所述第三查询操作符的前驱操作符,且所述第三查询操作符为所述第二查询操作符的前驱操作符。
结合第二方面、第一种可能的实现方式和第二种可能的实现方式,在第三种可能的实现方式中,第三改写单元,用于在所述删除单元从所述逻辑查询计划中删除所述第二查询操作符的分区操作符之前,改写所述第一查询操作符的排序属性,以使得所述第一查询操作符的排序属性与所述第二查询操作符的排序属性相同;
其中,改写前的所述第一查询操作符的排序属性与第一查询操作符的分区属性相同,所述第二查询操作符的排序属性与改写前的所述第二查询操作符的分区属性相同;
所述排序属性用于对所述逻辑查询计划的所述查询操作符所操作的数据表中的数据进行分区排序。
结合第二方面、第一种可能的实现方式和第二种可能的实现方式,在第四种可能的实现方式中,所述生成单元,具体用于采用任务流关联性优化JFC技术,根据所述第二查询操作符、所述第一查询操作符以及所述第一查询操作符的分区操作符生成一个物理查询任务,以构成所述物理查询计划。
本发明实施例提供的查询计划转化方法及装置,只要第一查询操作符的分区属性为第二查询操作符的分区属性的前缀,便可以通过改写逻辑查询计划中第二查询操作符的分区属性,以便于可以在第二查询操作符的分区属性与第一查询操作符的分区属性相同时,删除第二查询操作符的分区操作符,以根据第一查询操作符和第二查询操作符生成一个物理查询任务,减少构成物理查询计划的物理查询任务的数量。
与现有技术中,仅可以在第一查询操作符的分区属性与第二查询操作符的分区属性完全相同时,才能够删除第二查询操作符的分区操作符相比,当第一查询操作符的分区属性为第二查询操作符的分区属性的前缀时,改写第二查询操作符的分区属性可以获得更多的分区属性完全相同的满足前驱-后继关系的查询操作符对(如第一查询操作符和第二查询操作符),进而可以更大程度的减少构成物理查询计划的物理查询任务的数量。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中的一种查询计划转化方法的流程示意图;
图2为本发明实施例中的一种逻辑查询计划的实例示意图;
图3为本发明实施例中的另一种查询计划转化方法的流程示意图;
图4为本发明实施例中的另一种逻辑查询计划的实例示意图;
图5为本发明实施例中的另一种逻辑查询计划的实例示意图;
图6为本发明实施例中的另一种逻辑查询计划的实例示意图;
图7为本发明实施例中的另一种查询计划转化方法的流程示意图;
图8为本发明实施例中的一种查询计划转化装置的结构示意图;
图9为本发明实施例中的另一种查询计划转化装置的结构示意图;
图10为本发明实施例中的另一种查询计划转化装置的结构示意图;
图11为本发明实施例中的另一种查询计划转化装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
另外,本文中术语“***”和“网络”在本文中常被可互换使用。本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
实施例1
本发明实施例提供一种查询计划转化方法,可以应用于将逻辑查询计划转化为物理查询计划的过程中,如图1所示,该查询计划转化方法包括:
S101、查询计划转化装置从逻辑查询计划中提取第一查询操作符和第二查询操作符,第一查询操作符为第二查询操作符的前驱操作符。
其中,查询计划转化装置从逻辑查询计划中提取第一查询操作符和第二查询操作符的方法可以包括:查询计划转化装置从逻辑查询计划中查找存在前驱-后继关系的两个查询操作符,并分别确定存在前驱-后继关系的两个查询操作符的分区属性;当存在前驱-后继关系的两个查询操作符中的前驱查询操作符的分区属性为后继查询操作符的分区属性的前缀,或者前驱查询操作符的分区属性与后继查询操作符的分区属性相同时,则可以将这存在前驱-后继关系的两个查询操作符确定为第一查询操作符和第二查询操作符。具体的,存在前驱-后继关系的两个查询操作符中,前驱查询操作符作为第一查询操作符,后继查询操作符作为第二查询操作符。
需要说明的是,在本发明实施例中,逻辑查询计划中的两个查询操作符存在前驱-后继关系可以包括:这两个查询操作符存在直接前驱-后继关系。
具体的,当逻辑查询计划中的两个查询操作符之间存在直接依赖关系,即这两个查询操作符中的一个查询操作符所需操作的数据是另一个查询操作符所操作数据的结果时,则可以认为这两个查询操作符存在直接前驱-后继关系。例如,假设两个查询操作符为查询操作符1和查询操作符2,当查询操作符2所需操作的数据是查询操作符1操作数据的结果时,则可以认为查询操作符1与查询操作符2存在直接前驱-后继关系,且查询操作符1为查询操作符2的直接前驱操作符,查询操作符2为查询操作符1的直接后继操作符。
进一步的,逻辑查询计划中的两个查询操作符存在前驱-后继关系还可以包括:这两个查询操作符存在间接前驱-后继关系。
具体的,当逻辑查询计划中的两个查询操作符之间存在间接依赖关系,即两个查询操作符之间间隔有至少一个其他查询操作符时,若这两个查询操作符中的一个查询操作符所需操作的数据是该其他查询操作符所操作数据的结果,且该其他查询操作符所操作数据为这两个查询操作符中的另一个查询操作符所操作数据的结果时,则可以认为这两个查询操作符存在间接前驱-后继关系。例如,假设两个查询操作符为查询操作符3和查询操作符4,查询操作符3和查询操作符4之间间隔有查询操作符5,当查询操作符4所需操作的数据是查询操作符5操作数据的结果,且查询操作符5所需操作的数据是查询操作符3操作数据的结果时,则可以认为查询操作符3与查询操作符4存在间接前驱-后继关系,且查询操作符3为查询操作符4的间接前驱操作符,查询操作符4为查询操作符3的间接后继操作符。
相应的,当第一查询操作符与第二查询操作符之间存在直接依赖关系时,第一查询操作符则为第二查询操作符的直接前驱操作符;当第一查询操作符与第二查询操作符之间存在间接依赖关系,即第一查询操作符与第二查询操作符之间间隔有第三查询操作符时,第一查询操作符则为第二查询操作符的间接前驱操作符。
示例性的,在图2所示的逻辑查询计划中,查询操作符2所需操作的数据是查询操作符1操作数据的结果,则可以确定查询操作符1与查询操作符2之间存在直接前驱-后继关系,查询操作符1为查询操作符2的直接前驱操作符(查询操作符1的分区属性“分区属性1”与查询操作符2的分区属性“分区属性1”相同,则可以确定查询操作符1作为第一查询操作符,查询操作符2作为第二查询操作符);查询操作符5所需操作的数据是查询操作符4操作数据的结果,则可以确定查询操作符5与查询操作符4之间存在直接前驱-后继关系,查询操作符4为查询操作符5的直接前驱操作符(查询操作符4的分区属性“分区属性3”为查询操作符5的分区属性“分区属性3,分区属性5”的前缀,则可以确定查询操作符4作为第一查询操作符,查询操作符5作为第二查询操作符)。
示例性的,在图2所示的逻辑查询计划中,查询操作符5所需操作的数据是查询操作符4操作数据的结果,查询操作符4所需操作的数据是查询操作符3操作数据的结果,则可以确定查询操作符3与查询操作符5之间存在间接前驱-后继关系,查询操作符3为查询操作符5的间接前驱操作符(查询操作符3的分区属性“分区属性3”为查询操作符5的分区属性“分区属性3,分区属性5”的前缀,则可以确定查询操作符3作为第一查询操作符,查询操作符5作为第二查询操作符,查询操作符4作为第三查询操作符)。
需要说明的是,本发明实施例提供的查询计划转化方法可以应用于具有数据查询功能的设备(如通信***或者数据处理***的后台服务器/存储设备)中,本发明实施例中的查询计划转化装置可以为上述具有数据查询功能的设备的处理器,如中央处理器(CentralProcessingUnit,CPU),或者查询计划转化装置也可以为上述具有数据查询功能的设备的处理器中的一个功能模块,本发明实施例对查询计划转化装置的具体形式不做限定。
S102、若第一查询操作符的分区属性为第二查询操作符的分区属性的前缀,则查询计划转化装置改写逻辑查询计划中第二查询操作符的分区属性,以使得第二查询操作符的分区属性与第一查询操作符的分区属性相同。
示例性的,假设第一查询操作符的分区属性为:“分区属性1”,第二查询操作符的分区属性为:“分区属性1,分区属性2”,则得出第一查询操作符的分区属性“分区属性1”为第二查询操作符的分区属性“分区属性1,分区属性2”的前缀。
其中,第一查询操作符的分区属性为第二查询操作符的分区属性的前缀,可以表示按第一查询操作符的分区属性进行分区即是将第一查询操作符所需操作的数据表中所有含有分区属性1的行划分到一个区域;按第二查询操作符的分区属性进行分区即是将第二查询操作符所要操作的数据表中所有含有分区属性1且含有分区属性2的行划分到一个区域,由此可以看出,当提取出的第一查询操作符的分区属性为提取出的第二查询操作符的分区属性的前缀时,按第一查询操作符的分区属性划分的区域中的数据包含按第二查询操作符的分区属性划分的区域中的数据。
需要说明的是,改写逻辑查询计划中第二查询操作符的分区属性,即将第二查询操作符的分区属性改写为第一查询操作符的分区属性,保持第一查询操作符的分区属性不变,以保证改写后的第二查询操作符的分区属性与第一查询操作符的分区属性相同。这样一来,第一查询操作符的分区属性与第二查询操作符的分区属性相同,就满足了现有技术要求的查询操作符对的分区属性完全相同的条件,以便将第一查询操作符与第二查询操作符生成一个物理查询任务。
S103、查询计划转化装置从逻辑查询计划中删除第二查询操作符的分区操作符,并根据第二查询操作符、第一查询操作符以及第一查询操作符的分区操作符生成一个物理查询任务,以构成物理查询计划。
其中,经改写后的第二查询操作符的分区属性与第一查询操作符的分区属性相同,此时第一查询操作符与第二查询操作符满足现有技术要求的查询操作符对具有完全相同的分区属性的条件,删除第二查询操作符的分区操作符后,由于第一查询操作符与第二查询操作符之间存在前驱-后继关系,且第一查询操作符与第二查询操作符之间不再有分区操作符,以第一查询操作符的分区操作符作为生成新的物理查询任务的标识,第一查询操作符与第二查询操作符可以生成一个物理查询任务。查询计划转化装置以生成的多个物理查询任务为节点构造一个物理查询计划。
本发明实施例提供的查询计划转化方法,通过本方案,只要第一查询操作符的分区属性为第二查询操作符的分区属性的前缀,便可以通过改写逻辑查询计划中第二查询操作符的分区属性,以便于可以在第二查询操作符的分区属性与第一查询操作符的分区属性相同时,删除第二查询操作符的分区操作符,以根据第一查询操作符和第二查询操作符生成一个物理查询任务,减少构成物理查询计划的物理查询任务的数量。
与现有技术中,仅可以在第一查询操作符的分区属性与第二查询操作符的分区属性完全相同时,才能够删除第二查询操作符的分区操作符相比,当第一查询操作符的分区属性为第二查询操作符的分区属性的前缀时,改写第二查询操作符的分区属性可以获得更多的分区属性完全相同的满足前驱-后继关系的查询操作符对(如第一查询操作符和第二查询操作符),进而可以更大程度的减少构成物理查询计划的物理查询任务的数量。
实施例2
本发明实施例提供一种查询计划转化方法,可以应用于逻辑查询计划向物理查询计划转化的过程中,该查询计划转化方法包括:
S201、查询计划转化装置从逻辑查询计划中提取第一查询操作符和第二查询操作符,第一查询操作符为第二查询操作符的前驱操作符。
第一查询操作符为第二查询操作符的前驱操作符具体可以包括:第一查询操作符为第二查询操作符的直接前驱操作符、第一查询操作符与第二查询操作符之间间隔有第三查询操作符。
在本发明实施例的第一种应用场景中,如图3所示,在查询计划转化装置提取到第一查询操作符和第二查询操作符后,查询计划转化装置可以先判断第一查询操作符与第二查询操作符之间是否间隔有第三查询操作符,即执行S202:
S202、查询计划转化装置判断第一查询操作符与第二查询操作符之间是否间隔有第三查询操作符。
其中,第一查询操作符与第二查询操作符之间间隔有第三查询操作符,是指第一查询操作符是第二查询操作符的间接前驱操作符。
具体的,在本发明实施例的第一种应用场景中,若第一查询操作符为第二查询操作符的直接前驱操作符,即第一查询操作符与第二查询操作符之间没有间隔第三查询操作符,则继续执行S204及后续流程;若第一查询操作符为第二查询操作符的间接前驱操作符,即第一查询操作符与第二查询操作符之间间隔有第三查询操作符,则继续执行S203及后续流程。
S203、查询计划转化装置判断第三查询操作符是否能够使用广播查询算法实现。
具体的,若第三查询操作符能够使用广播查询算法实现,查询计划转化装置则继续执行S204;若第三查询操作符不能够使用广播查询算法实现,查询计划转化装置则不能将第三查询操作符改写为广播查询操作符,进而不能删除第二查询操作符的分区操作符,以合并第一查询操作符和第二查询操作符。
S204、查询计划转化装置将第三查询操作符改写为广播查询操作符,广播查询操作符没有分区操作符。
其中,当第一查询操作符与第二查询操作符之间间隔有第三查询操作符时,则表示若查询计划转化装置在将逻辑查询计划改写为物理查询计划的过程中,要根据第一查询操作符和第二查询操作符仅生成一个物理查询任务,则在生成物理查询任务之前,需要对第一查询操作符与第二查询操作符之间间隔的第三查询操作符进行改写,否则在生成物理查询任务时,由于间隔在第一查询操作符与第二查询操作符之间的第三查询操作符具有分区操作符,即表示第一查询操作符与第二查询操作符之间具有一个分区操作符,查询计划转化装置在生成物理查询任务时,根据第一查询操作符和第二查询操作符则至少可以生成两个物理查询任务,则不能够达到减少构成物理查询计划的物理查询任务的数量的目的。
基于上述描述,当第一查询操作符与第二查询操作符之间间隔有第三查询操作符时,查询计划转化装置则可以将第三查询操作符改写为广播查询操作符,而广播查询操作符是没有分区操作符的,因此,由于此时第一查询操作符与第二查询操作符之间的广播查询操作符是没有分区操作符的,在删除第二查询操作符的分区操作符后,第一查询操作符与第二查询操作符之间没有分区操作符,则查询计划转化装置在生成物理查询任务时,根据第一查询操作符和第二查询操作符仅可以生成一个物理查询任务,则可以能够达到减少构成物理查询计划的物理查询任务的数量的目的。
示例性的,如图4或图5所示,查询操作符2所需操作的数据是查询操作符3操作数据的结果,查询操作符3所需操作的数据是查询操作符1操作数据的结果,则确定查询操作符1与查询操作符2存在间接前驱-后继关系。其中,图4中改写前的逻辑查询计划中查询操作符1的分区属性为查询操作符2的分区属性的前缀,在图5中改写前的逻辑查询计划中查询操作符1的分区属性与查询操作符2的分区属性相同。
S205、查询计划转化装置确定第一查询操作符的分区属性与第二查询操作符的分区属性的关系。
其中,第一查询操作符的分区属性与第二查询操作符的分区属性的关系包括:第一查询操作符的分区属性为第二查询操作符的分区属性的前缀、第一查询操作符的分区属性与第二查询操作符的分区属性相同。
具体的,若第一查询操作符的分区属性为第二查询操作符的分区属性的前缀,则继续执行S206及后续流程;若第一查询操作符的分区属性与第二查询操作符的分区属性相同,则继续执行S207及后续流程。
S206、查询计划转化装置改写逻辑查询计划中第二查询操作符的分区属性,以使得第二查询操作符的分区属性与第一查询操作符的分区属性相同。
其中,查询计划转化装置可以改写逻辑查询计划中的第二查询操作符的分区属性,即将第二查询操作符的分区属性改写为第一查询操作符的分区属性,同时保持第一查询操作符的分区属性不变,以保证改写后的第二查询操作符的分区属性与第一查询操作符的分区属性相同,这样改写以后,第一查询操作符与第二查询操作符具有完全相同的分区属性,满足现有技术生成物理查询任务所要求的查询操作符对具有完全相同的分区属性的条件,以便在由逻辑查询计划转化为物理查询计划时,将第一查询操作符与第二查询操作符生成一个物理查询任务。
示例性的,如图4所示,查询计划转化装置可以对“改写广播查询操作符后的逻辑查询计划”中的查询操作符2的分区属性进行改写,将查询操作符2的分区属性“分区属性1,分区属性2”改写为查询操作符1的分区属性“分区属性1”,同时保持查询操作符1的分区属性“分区属性1”不变,以使得查询操作符1的分区属性与查询操作符2的分区属性相同,则可以得到如图4所示的“改写分区属性后的逻辑查询计划”。
S207、查询计划转化装置从逻辑查询计划中删除第二查询操作符的分区操作符。
需要说明的是,此时第二查询操作符的分区属性与第一查询操作符的分区属性完全相同,满足现有技术要求的查询操作符的分区属性完全相同的要求,将逻辑查询计划中的第二查询操作符的分区操作符删除后,由于第一查询操作符与第二查询操作符之间存在前驱-后继关系,并且第一查询操作符与第二查询操作符之间不再有分区操作符,因此,以第一查询操作符的分区操作符作为生成新的物理查询任务的标识,第一查询操作符与第二查询操作符可以生成一个物理查询任务。
示例性的,查询计划转化装置可以将如图4所示的“改写分区属性后的逻辑查询计划”或者如图5所示的“改写后的逻辑查询计划”作为如图6所示的“删除分区操作符前的逻辑查询计划”,并删除“删除分区操作符前的逻辑查询计划”中查询操作符2的分区操作符,以得到如图6所示的“删除分区操作符后的逻辑查询计划”。
S208、查询计划转化装置根据第二查询操作符、第一查询操作符以及第一查询操作符的分区操作符生成一个物理查询任务,以构成物理查询计划。
其中,当第一查询操作符与第二查询操作符之间间隔有第三查询操作符时,查询计划转化装置根据第二查询操作符、第一查询操作符以及第一查询操作符的分区操作符生成一个物理查询任务的方法具体可以为:根据第二查询操作符、广播查询操作符、第一查询操作符以及第一查询操作符的分区操作符生成一个物理查询任务。
示例性的,查询计划转化装置可以采用任务流关联性优化(Job-flowCorrelation,JFC)技术,根据第二查询操作符、第一查询操作符以及第一查询操作符的分区操作符生成一个物理查询任务,以构成物理查询计划。查询计划转化装置采用JFC技术生成物理查询任务,以构成物理查询计划的具体方法与现有技术中采用JFC技术生成物理查询任务,以构成物理查询计划的方法类似,本发明实施例这里不再赘述。
在本发明实施例的第二种应用场景中,如图7所示,在查询计划转化装置提取到第一查询操作符和第二查询操作符后,查询计划转化装置可以先确定第一查询操作符的分区属性与第二查询操作符的分区属性的关系,即执行S208。
在第二种应用场景中,如图7所示,在执行S205之后,若查询计划转化装置确定第一查询操作符的分区属性为第二查询操作符的分区属性的前缀,则可以继续执行S206,即查询计划转化装置改写逻辑查询计划中第二查询操作符的分区属性,以使得第二查询操作符的分区属性与第一查询操作符的分区属性相同;若查询计划转化装置确定第一查询操作符的分区属性与第二查询操作符的分区属性相同,则直接执行S207,即查询计划转化装置从逻辑查询计划中删除第二查询操作符的分区操作符;然后查询计划转化装置确定第一查询操作符与第二查询操作符之间是否间隔有第三查询操作符,即执行S202;若查询计划转化装置确定第一查询操作符与第二查询操作符之间间隔有第三查询操作符,则继续执行S204,若查询计划转化装置确定第一查询操作符与第二查询操作符之间未间隔有第三查询操作符,则直接执行S208。
本发明实施例利用以下公式用以计算采用本发明实施例提供的查询计划转化方法所能带来的有益效果。
执行一个物理查询任务所耗费的时间由读数据所耗费的时间、写数据所耗费的时间、网络传输数据所耗费的时间、CPU运算所耗费的时间四部分组成,通过检测读单位数据量的数据所用的时间,和当前的物理查询任务中查询操作符操作前输入的数据量的大小,来计算读数据所耗费的时间;检测写单位数据量的数据所用的时间,及当前的物理查询任务中查询操作符操作后输出的数据量的大小,来计算写数据所耗费的时间;检测CPU对单位数据量的数据进行运算所用的时间,和当前的物理查询任务中查询操作符对输入数据使用的百分比以及当前的物理查询任务中查询操作符操作前输入的数据量的大小,来计算CPU运算所耗费的时间;检测网络对单位数据量的数据进行传输所用的时间,和当前的物理查询任务中查询操作符对输入数据使用的百分比以及当前的物理查询任务中查询操作符操作前输入的数据量的大小,来计算网络传输数据所耗费的时间。
对于一个逻辑查询计划中的三个查询操作符OPi、OPj和OPk,满足条件OPi是OPj的直接前驱操作符,OPj是OPk的直接前驱操作符,并且OPi的分区属性是OPk的分区属性的前缀,OPj可以通过广播查询操作符来完成。
采用本发明实施例提供的查询计划转化方法之前,这三个查询操作符生成三个物理查询任务,执行三个物理查询任务所耗费的时间是分别执行这三个物理查询任务所耗费的时间之和,可以根据以下公式一来计算:
Costbefore=Hr×Ii+v×Ii+μ×ai×Ii+v×ai×Ii+Hw×Mi
+Hr×Ij+v×Ij+μ×aj×Ij+v×aj×Ij+Hw×Mj
+Hr×Ik+v×Ik+μ×ak×Ik+v×ak×Ik+Hw×Mk
公式一
其中Costbefore用于表示采用本发明实施例提供的查询计划转化方法之前,执行三个物理查询任务所耗费的时间,Hr表示读单位数据量的数据所用的时间,Hw表示写单位数据量的数据所用的时间,v表示CPU对单位数据量的数据进行运算所用的时间,μ表示网络中单位数据量的数据进行传输所用的时间,Ii、Ij和Ik分别表示当前的三个物理查询任务中的查询操作符OPi、OPj和OPk操作前输入的数据量的大小,Mi、Mj和Mk分别表示当前的三个物理查询任务中的查询操作符OPi、OPj和OPk操作后输出的数据量的大小,ai、aj和ak分别表示当前执行的三个物理查询任务中的查询操作符OPi、OPj和OPk对输入数据使用的百分比。
采用本发明实施例提供的查询计划转化方法后,查询操作符OPk与查询操作符OPi的分区属性相同,查询操作符OPj改写为广播查询操作符,三个查询操作符可以生成为一个物理查询任务,由于三个查询操作符在同一个物理查询任务中,则执行物理查询任务时,只进行一次读数据操作和一次写数据操作即可,此物理查询任务中的广播查询操作符虽然不必对查询操作符OPi的输出数据进行读数据操作,但仍然需要对其他输入来源的数据进行读数据操作。因此***执行这一个物理查询任务所耗费的时间可以根据以下公式二来计算:
Costafter=Hr×Ii+v×Ii+μ×ai×Ii+v×ai×Ii+Hr×(Ij-Mi)+v×r×Ij+v×aj×Ij+
v×ak×Ik+Hw×Mk
公式二
其中,Costafter用于表示采用本发明实施例提供的查询计划转化方法之后,执行三个查询操作符OPi、OPj和OPk生成的一个物理查询任务所耗费的时间,r表示Mi的进程数量,Hr表示读单位数据量的数据所用的时间,Hw表示写单位数据量的数据所用的时间,v表示CPU对单位数据量的数据进行运算所用的时间,μ表示网络中单位数据量的数据进行传输所用的时间,Ii、Ij和Ik分别表示当前的物理查询任务中的查询操作符OPi、OPj和OPk操作前输入的数据量的大小,Mi和Mk分别表示当前的物理查询任务中的查询操作符OPi和OPk操作后输出的数据量的大小,ai、aj和ak分别表示当前执行的物理查询任务中的查询操作符OPi、OPj和OPk对输入数据使用的百分比。
采用本发明实施例提供的查询计划转化方法可节省的时间,为采用本发明实施例提供的查询计划转化方法及装置之前所耗费的时间与采用本发明实施例提供的查询转化方法及装置后所耗费的时间的差值。采用本发明实施例提供的查询计划转化方法及装置可节省的时间可通过以下公式三计算:
Costsaved=Costbefore-Costafter
=Hw×Mi+Hr×Mi-v×(r-1)×Ij+μ×aj×Ij+Hw×Mj+Hr×Ik+v×Ik+
μ×ak×Ik
=(Hw+Hr)×Mi+(μ×aj-v×(r-1))×Ij+Hw×Mj+(Hr+v+μ×ak)×Ik
公式三
其中,Costsaved用于表示采用本发明实施例提供的查询计划转化方法后可节省的时间,r表示Mi的进程数量,Hr表示读单位数据量的数据所用的时间,Hw表示写单位数据量的数据所用的时间,v表示CPU对单位数据量的数据进行运算所用的时间,μ表示网络中单位数据量的数据进行传输所用的时间,Ij和Ik分别表示查询操作符OPj和OPk操作前输入的数据量的大小,Mi和Mj分别表示查询操作符OPi和OPj操作后输出的数据量的大小,aj和ak分别表示查询操作符OPj和OPk对输入数据使用的百分比。
当***中读数据操作和写数据操作占时间开销的主导,即读数据操作和写数据操作在时间开销中占的比例大于其他时间开销时,对于公式三中的系数μ(网络对单位数据量的数据进行传输所用的时间)与系数v(CPU对单位数据量的数据进行运算所用的时间)均可忽略不计,则采用本发明实施例提供的查询计划转化方法后可节省的时间为:
Costsaved=(Hw+Hr)×Mi+Hw×Mj+Hr×Ik
其中,Costsaved用于表示采用本发明实施例提供的查询计划转化方法后可节省的时间,Hr表示读单位数据量的数据所用的时间,Hw表示写单位数据量的数据所用的时间,Ik表示查询操作符OPk操作前输入的数据量的大小,Mi和Mj分别表示查询操作符OPi和OPj操作后输出的数据量的大小。
当***中网络传输占时间开销的主导,即网络传输在时间开销中占的比例大于其他时间开销时,对于公式三中的系数Hr(读单位数据量的数据所用的时间)、系数Hw(写单位数据量的数据所用的时间)以及系数v(CPU对单位数据量的数据进行运算所用的时间)均可忽略不计,则采用本发明实施例提供的查询计划转化方法后可节省的时间为:
Costsaved=μ×aj×Ij+μ×ak×Ik
其中,Costsaved用于表示采用本发明实施例提供的查询计划转化方法后可节省的时间,μ表示网络中单位数据量的数据进行传输所用的时间,Ij和Ik分别表示查询操作符OPj和OPk操作前输入的数据量的大小,aj和ak分别表示查询操作符OPj和OPk对输入数据使用的百分比。
当***中读数据操作和写数据操作与网络传输在时间开销上所占比例相当时,即读数据操作和写数据操作在时间开销中占的比例等于网络传输在时间开销中占的比例时,公式三中只对系数v(CPU对单位数据量的数据进行运算所用的时间)忽略不计,则采用本发明实施例提供的查询计划转化方法后可节省的时间为:
Costsaved=(Hw+Hr)×Mi+μ×aj×Ij+Hw×Mj+(Hr+μ+ak)×Ik
其中,Costsaved用于表示采用本发明实施例提供的查询计划转化方法后可节省的时间,Hr表示读单位数据量的数据所用的时间,Hw表示写单位数据量的数据所用的时间,μ表示网络中单位数据量的数据进行传输所用的时间,Ij和Ik分别表示查询操作符OPj和OPk操作前输入的数据量的大小,Mi和Mj分别表示查询操作符OPi和OPj操作后输出的数据量的大小,aj和ak分别表示查询操作符OPj和OPk对输入数据使用的百分比。
进一步可选的,为了提高数据查询***的查询效率,在从逻辑查询计划中删除第二查询操作符的分区操作符之前,该查询计划转化方法还可以包括:改写所述第一查询操作符的排序属性,以使得所述第一查询操作符的排序属性与所述第二查询操作符的排序属性相同。
其中,改写前的所述第一查询操作符的排序属性与第一查询操作符的分区属性相同,所述第二查询操作符的排序属性与改写前的所述第二查询操作符的分区属性相同;所述排序属性用于对所述逻辑查询计划的所述查询操作符所操作的数据表中的数据进行分区排序。
需要说明的是,分区操作符根据查询操作符的排序属性对逻辑查询计划的查询操作符所操作的数据表中的数据进行排序。
当第一查询操作符的分区属性为改写前的第二查询操作符的分区属性的前缀时,即第一查询操作符的排序属性为第二查询操作符的排序属性的前缀。假设第一查询操作符的排序属性为“排序属性1”,第二查询操作符的排序属性为“排序属性1,排序属性2”时,分区操作符按照第一查询操作符的排序属性对第一查询操作符及第二查询操作符所操作的数据表进行排序时,即是将数据表中所有含有相同排序属性1的行排序到一起,分区操作符按照第二查询操作符的排序属性对第一查询操作符及第二查询操作符所操作的数据表进行分区排序时,即是将数据表中所有含有相同排序属性1且含有相同排序属性2的行排序到一起。
在不对排序属性进行改写的场景下,在由逻辑查询计划转化为物理查询计划时,由于第二查询操作符的分区操作符删除,第一查询操作符与第二查询操作符将生成一个物理查询任务,分区操作符将按照第一查询操作符的排序属性对第一查询操作符及第二查询操作符所需操作的数据表进行排序,由于第一查询操作符的分区属性和排序属性是相同的,因此按照第一查询操作符的排序属性进行分区排序的结果和分区排序前是相同的。第二查询操作符对按照第一查询操作符的排序属性排序后的数据表进行操作时,仍需要对该数据表进行全面的扫描,将所有含有排序属性2的行找出来,这样一来,会比较耗费时间。
对第一查询操作符的排序属性进行改写,即是将第一查询操作符的排序属性改写为第二查询操作符的排序属性,这样一来分区操作符将按照第二查询操作符的排序属性对第一查询操作符及第二查询操作符所需操作的数据表进行分区排序,将数据表中所有含有相同排序属性1且含有相同排序属性2的行排序到一起,第二查询操作符不必再对数据表进行全面的扫描,就可以找到需要进行操作的数据,相对于不对排序属性进行改写的场景,节省了扫描数据所需的时间。
本发明实施例提供的查询计划转化方法,只要第一查询操作符的分区属性为第二查询操作符的分区属性的前缀,便可以改写逻辑查询计划中第二查询操作符的分区属性,以便于可以在第二查询操作符的分区属性与第一查询操作符的分区属性相同时,删除第二查询操作符的分区操作符,以根据第一查询操作符和第二查询操作符生成一个物理查询任务,减少构成物理查询计划的物理查询任务的数量。
与现有技术中,仅可以在第一查询操作符的分区属性与第二查询操作符的分区属性完全相同时,才能够删除第二查询操作符的分区操作符相比,当第一查询操作符的分区属性为第二查询操作符的分区属性的前缀时,改写第二查询操作符的分区属性可以获得更多的分区属性完全相同的满足前驱-后继关系的查询操作符对(如第一查询操作符和第二查询操作符),进而可以更大程度的减少构成物理查询计划的物理查询任务的数量。
并且通过本方案,当第一查询操作符是第二查询操作符的间接前驱操作符,即第一查询操作符与第二查询操作符之间间隔有第三查询操作符,第三查询操作符能够使用广播查询算法实现时,可以将第三查询操作符改写为广播查询操作符,以便于可以在第二查询操作符的分区属性与第一查询操作符的分区属性相同时,删除第二查询操作符的分区操作符,将第一查询操作符、第二查询操作符和广播查询操作符生成一个物理查询任务,减少构成物理查询计划的物理查询任务的数量。
与现有技术中,仅可以在第一查询操作符是第二查询操作符的直接前驱操作符时,才能够删除第二查询操作符的分区操作符,使分区属性完全相同的第一查询操作符与第二查询操作符生成一个物理查询任务相比,当第一查询操作符与第二查询操作符之间间隔有第三查询操作符时,将第三查询操作符改写为广播查询操作符,以使广播查询操作符与分区属性相同的第一查询操作符和第二查询操作符可以生成一个物理查询任务,进而可以更大程度的减少构成物理查询计划的物理查询任务的数量。
需要说明的是,本发明实施例中提供的逻辑查询计划实例只是示例性的几种,起到说明的作用,并不代表本发明实施例只可以应用于这几种逻辑查询计划实例中。
实施例3
本发明实施例提供一种查询计划转化装置,如图8所示,包括:提取单元31、第一改写单元32、删除单元33和生成单元34。
提取单元31,用于从逻辑查询计划中提取第一查询操作符和第二查询操作符,第一查询操作符为第二查询操作符的前驱操作符。
第一改写单元32,用于若提取单元31提取的第一查询操作符的分区属性为提取单元提取的第二查询操作符的分区属性的前缀,则改写逻辑查询计划中第二查询操作符的分区属性,以使得第二查询操作符的分区属性与第一查询操作符的分区属性相同。
删除单元33,用于在第一改写单元32所述逻辑查询计划中第二查询操作符的分区属性后,从逻辑查询计划中删除第二查询操作符的分区操作符。
生成单元34,用于在删除单元33删除第二查询操作符的分区操作符后,根据第二查询操作符、第一查询操作符以及第一查询操作符的分区操作符生成一个物理查询任务,以构成物理查询计划。
进一步的,如图9所示,所述第一改写单元32,可以包括:第一改写模块321和第二改写模块322。
第一改写模块321,用于若第一查询操作符的分区属性为第二查询操作符的分区属性的前缀,且第一查询操作符与第二查询操作符之间间隔有第三查询操作符,所述第三查询操作符能够使用广播查询算法实现,则将第三查询操作符改写为广播查询操作符,广播查询操作符没有分区操作符。
第二改写模块322,用于改写逻辑查询计划中第二查询操作符的分区属性,以使得第二查询操作符的分区属性与第一查询操作符的分区属性相同。
所述生成单元34,还用于根据第二查询操作符、广播查询操作符、所述第一查询操作符以及第一查询操作符的分区操作符生成一个物理查询任务,以构成物理查询计划。
其中,第一查询操作符为第三查询操作符的直接前驱操作符,且第三查询操作符为第二查询操作符的直接前驱操作符。
进一步的,如图10所示,本发明实施例提供的查询计划转化装置,还可以包括:第二改写单元35。
第二改写单元35,用于若提取单元31提取的第一查询操作符的分区属性与提取单元31提取的第二查询操作符的分区属性相同,且第一查询操作符与第二查询操作符之间间隔有第三查询操作符,所述第三查询操作符能够使用广播查询算法实现,则将第三查询操作符改写为广播查询操作符,广播查询操作符没有分区操作符。
所述删除单元33,还用于在第二改写单元35将第三查询操作符改写为广播查询操作符后,从逻辑查询计划中删除第二查询操作符的分区操作符。
所述生成单元34,还用于在所述删除单元33删除第二查询操作符的分区操作符后,根据第二查询操作符、广播查询操作符、第一查询操作符以及第一查询操作符的分区操作符生成一个物理查询任务,以构成物理查询计划。
其中,第一查询操作符为第三查询操作符的直接前驱操作符,且第三查询操作符为第二查询操作符的直接前驱操作符。
进一步的,生成单元34,具体用于采用任务流关联性优化JFC技术,根据第二查询操作符、第一查询操作符以及第一查询操作符的分区操作符生成一个物理查询任务,以构成物理查询计划。
本发明实施例提供的查询计划转化装置,若第一查询操作符的分区属性为第二查询操作符的分区属性的前缀,便可以通过改写逻辑查询计划中第二查询操作符的分区属性,以便于可以在第二查询操作符的分区属性与第一查询操作符的分区属性相同时,删除第二查询操作符的分区操作符,以根据第一查询操作符和第二查询操作符生成一个物理查询任务,减少构成物理查询计划的物理查询任务的数量。
与现有技术中,仅可以在第一查询操作符的分区属性与第二查询操作符的分区属性完全相同时,才能够删除第二查询操作符的分区操作符相比,当第一查询操作符的分区属性为第二查询操作符的分区属性的前缀时,改写第二查询操作符的分区属性可以获得更多的分区属性完全相同的满足前驱-后继关系的查询操作符对(如第一查询操作符和第二查询操作符),进而可以更大程度的减少构成物理查询计划的物理查询任务的数量。
并且通过本方案,当第一查询操作符是第二查询操作符的间接前驱操作符,即第一查询操作符与第二查询操作符之间间隔有第三查询操作符,第三查询操作符能够使用广播查询算法实现时,可以将第三查询操作符改写为广播查询操作符,以便于可以在第二查询操作符的分区属性与第一查询操作符的分区属性相同时,删除第二查询操作符的分区操作符,将第一查询操作符、第二查询操作符和广播查询操作符生成一个物理查询任务,减少构成物理查询计划的物理查询任务的数量。
与现有技术中,仅可以在第一查询操作符是第二查询操作符的直接前驱操作符时,才能够删除第二查询操作符的分区操作符,使分区属性完全相同的第一查询操作符与第二查询操作符生成一个物理查询任务相比,当第一查询操作符与第二查询操作符之间间隔有第三查询操作符时,将第三查询操作符改写为广播查询操作符,以使广播查询操作符与分区属性相同的第一查询操作符和第二查询操作符可以生成一个物理查询任务,进而可以更大程度的减少构成物理查询计划的物理查询任务的数量。
实施例4
本发明实施例提供一种查询计划转化装置,如图11所示,包括:存储器41和处理器42;所述存储器41与所述处理器42连接。
所述存储器41,用于存储一组程序代码,所述存储器41为所述查询计划转化装置的计算机存储介质,所述计算机存储介质包括:非易失性存储介质。
所述处理器42,用于执行所述存储器41存储所述程序代码,并具体用于执行以下操作:从逻辑查询计划中提取第一查询操作符和第二查询操作符,所述第一查询操作符为所述第二查询操作符的前驱操作符;若所述第一查询操作符的分区属性为所述第二查询操作符的分区属性的前缀,则改写所述逻辑查询计划中所述第二查询操作符的分区属性,以使得所述第二查询操作符的分区属性与所述第一查询操作符的分区属性相同;从所述逻辑查询计划中删除所述第二查询操作符的分区操作符,并根据所述第二查询操作符、所述第一查询操作符以及所述第一查询操作符的分区操作符生成一个物理查询任务,以构成物理查询计划。
所述存储器51和所述处理器52通过总线连接并完成相互间的通信。
其中,所述总线可以是工业标准体系结构(IndustryStandardArchitecture,ISA)总线、外部设备互连(PeripheralComponentInterconnect,PCI)总线或扩展工业标准体系结构(ExtendedIndustryStandardArchitecture,EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图11中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
进一步的,所述处理器42,还用于若所述第一查询操作符的分区属性为所述第二查询操作符的分区属性的前缀,且所述第一查询操作符与所述第二查询操作符之间间隔有第三查询操作符,所述第三查询操作符能够使用广播查询算法实现,则将所述第三查询操作符改写为广播查询操作符,所述广播查询操作符没有分区操作符;改写所述逻辑查询计划中所述第二查询操作符的分区属性,以使得所述第二查询操作符的分区属性与所述第一查询操作符的分区属性相同;从所述逻辑查询计划中删除所述第二查询操作符的分区操作符,并根据所述第二查询操作符、所述广播查询操作符、所述第一查询操作符以及所述第一查询操作符的分区操作符生成一个物理查询任务,以构成所述物理查询计划。
其中,所述第一查询操作符为所述第三查询操作符的前驱操作符,且所述第三查询操作符为所述第二查询操作符的前驱操作符。
进一步的,所述处理器42,还用于若所述第一查询操作符的分区属性与所述第二查询操作符的分区属性相同,且所述第一查询操作符与所述第二查询操作符之间间隔有第三查询操作符,所述第三查询操作符能够使用广播查询算法实现,则将所述第三查询操作符改写为广播查询操作符,所述广播查询操作符没有分区操作符;从所述逻辑查询计划中删除所述第二查询操作符的分区操作符,并根据所述第二查询操作符、所述广播查询操作符、所述第一查询操作符以及所述第一查询操作符的分区操作符生成一个物理查询任务,以构成所述物理查询计划。
其中,所述第一查询操作符为所述第三查询操作符的前驱操作符,且所述第三查询操作符为所述第二查询操作符的前驱操作符。
进一步的,所述处理器42,还用于在从所述逻辑查询计划中删除所述第二查询操作符的分区操作符之前,改写所述第一查询操作符的排序属性,以使得所述第一查询操作符的排序属性与所述第二查询操作符的排序属性相同。
其中,改写前的所述第一查询操作符的排序属性与第一查询操作符的分区属性相同,所述第二查询操作符的排序属性与改写前的所述第二查询操作符的分区属性相同;所述排序属性用于对所述逻辑查询计划的所述查询操作符所操作的数据表中的数据进行分区排序。
进一步的,所述处理器42,还用于采用任务流关联性优化JFC技术,根据所述第二查询操作符、所述第一查询操作符以及所述第一查询操作符的分区操作符生成一个物理查询任务,以构成所述物理查询计划。
需要说明的是,本发明实施例提供的查询计划转化装置中部分功能模块的具体描述可以参考方法实施例中的对应内容,本实施例这里不再详细赘述。
本发明实施例提供的查询计划转化装置,若第一查询操作符的分区属性为第二查询操作符的分区属性的前缀,便可以通过改写逻辑查询计划中第二查询操作符的分区属性,以便于可以在第二查询操作符的分区属性与第一查询操作符的分区属性相同时,删除第二查询操作符的分区操作符,以根据第一查询操作符和第二查询操作符生成一个物理查询任务,减少构成物理查询计划的物理查询任务的数量。
与现有技术中,仅可以在第一查询操作符的分区属性与第二查询操作符的分区属性完全相同时,才能够删除第二查询操作符的分区操作符相比,当第一查询操作符的分区属性为第二查询操作符的分区属性的前缀时,改写第二查询操作符的分区属性可以获得更多的分区属性完全相同的满足前驱-后继关系的查询操作符对(如第一查询操作符和第二查询操作符),进而可以更大程度的减少构成物理查询计划的物理查询任务的数量。
并且通过本方案,当第一查询操作符是第二查询操作符的间接前驱操作符,即第一查询操作符与第二查询操作符之间间隔有第三查询操作符,第三查询操作符能够使用广播查询算法实现时,可以将第三查询操作符改写为广播查询操作符,以便于可以在第二查询操作符的分区属性与第一查询操作符的分区属性相同时,删除第二查询操作符的分区操作符,将第一查询操作符、第二查询操作符和广播查询操作符生成一个物理查询任务,减少构成物理查询计划的物理查询任务的数量。
与现有技术中,仅可以在第一查询操作符是第二查询操作符的直接前驱操作符时,才能够删除第二查询操作符的分区操作符,使分区属性完全相同的第一查询操作符与第二查询操作符生成一个物理查询任务相比,当第一查询操作符与第二查询操作符之间间隔有第三查询操作符时,将第三查询操作符改写为广播查询操作符,以使广播查询操作符与分区属性相同的第一查询操作符和第二查询操作符可以生成一个物理查询任务,进而可以更大程度的减少构成物理查询计划的物理查询任务的数量。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的***,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的***,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种查询计划转化方法,其特征在于,包括:
从逻辑查询计划中提取第一查询操作符和第二查询操作符,所述第一查询操作符为所述第二查询操作符的前驱操作符;
若所述第一查询操作符的分区属性为所述第二查询操作符的分区属性的前缀,则改写所述逻辑查询计划中所述第二查询操作符的分区属性,以使得所述第二查询操作符的分区属性与所述第一查询操作符的分区属性相同;
从所述逻辑查询计划中删除所述第二查询操作符的分区操作符,并根据所述第二查询操作符、所述第一查询操作符以及所述第一查询操作符的分区操作符生成一个物理查询任务,以构成物理查询计划。
2.根据权利要求1所述的方法,其特征在于,所述若所述第一查询操作符的分区属性为所述第二查询操作符的分区属性的前缀,则改写所述逻辑查询计划中所述第二查询操作符的分区属性,以使得所述第二查询操作符的分区属性与所述第一查询操作符的分区属性相同,包括:
若所述第一查询操作符的分区属性为所述第二查询操作符的分区属性的前缀,且所述第一查询操作符与所述第二查询操作符之间间隔有第三查询操作符,所述第三查询操作符能够使用广播查询算法实现,则将所述第三查询操作符改写为广播查询操作符,所述广播查询操作符没有分区操作符;
改写所述逻辑查询计划中所述第二查询操作符的分区属性,以使得所述第二查询操作符的分区属性与所述第一查询操作符的分区属性相同;
所述从所述逻辑查询计划中删除所述第二查询操作符的分区操作符,并根据所述第二查询操作符、所述第一查询操作符以及所述第一查询操作符的分区操作符生成一个物理查询任务,以构成所述物理查询计划,包括:
从所述逻辑查询计划中删除所述第二查询操作符的分区操作符,并根据所述第二查询操作符、所述广播查询操作符、所述第一查询操作符以及所述第一查询操作符的分区操作符生成一个物理查询任务,以构成所述物理查询计划;
其中,所述第一查询操作符为所述第三查询操作符的前驱操作符,且所述第三查询操作符为所述第二查询操作符的前驱操作符。
3.根据权利要求1所述的方法,其特征在于,还包括:
若所述第一查询操作符的分区属性与所述第二查询操作符的分区属性相同,且所述第一查询操作符与所述第二查询操作符之间间隔有第三查询操作符,所述第三查询操作符能够使用广播查询算法实现,则将所述第三查询操作符改写为广播查询操作符,所述广播查询操作符没有分区操作符;
从所述逻辑查询计划中删除所述第二查询操作符的分区操作符,并根据所述第二查询操作符、所述广播查询操作符、所述第一查询操作符以及所述第一查询操作符的分区操作符生成一个物理查询任务,以构成所述物理查询计划;
其中,所述第一查询操作符为所述第三查询操作符的前驱操作符,且所述第三查询操作符为所述第二查询操作符的前驱操作符。
4.根据权利要求1-3中任一项所述的方法,其特征在于,在所述从所述逻辑查询计划中删除所述第二查询操作符的分区操作符之前,所述方法还包括:
改写所述第一查询操作符的排序属性,以使得所述第一查询操作符的排序属性与所述第二查询操作符的排序属性相同;
其中,改写前的所述第一查询操作符的排序属性与第一查询操作符的分区属性相同,所述第二查询操作符的排序属性与改写前的所述第二查询操作符的分区属性相同;
所述排序属性用于对所述逻辑查询计划的所述查询操作符所操作的数据表中的数据进行分区排序。
5.根据权利要求1-3中任一项所述的方法,其特征在于,所述根据所述第二查询操作符、所述第一查询操作符以及所述第一查询操作符的分区操作符生成一个物理查询任务,以构成所述物理查询计划,包括:
采用任务流关联性优化JFC技术,根据所述第二查询操作符、所述第一查询操作符以及所述第一查询操作符的分区操作符生成一个物理查询任务,以构成所述物理查询计划。
6.一种查询计划转化装置,其特征在于,包括:
提取单元,用于从逻辑查询计划中提取第一查询操作符和第二查询操作符,所述第一查询操作符为所述第二查询操作符的前驱操作符;
第一改写单元,用于若所述提取单元提取的所述第一查询操作符的分区属性为所述提取单元提取的所述第二查询操作符的分区属性的前缀,则改写所述逻辑查询计划中所述第二查询操作符的分区属性,以使得所述第二查询操作符的分区属性与所述第一查询操作符的分区属性相同;
删除单元,用于在所述第一改写单元改写所述逻辑查询计划中所述第二查询操作符的分区属性后,从所述逻辑查询计划中删除所述第二查询操作符的分区操作符;
生成单元,用于在所述删除单元删除所述第二查询操作符的分区操作符后,根据所述第二查询操作符、所述第一查询操作符以及所述第一查询操作符的分区操作符生成一个物理查询任务,以构成物理查询计划。
7.根据权利要求6所述的装置,其特征在于,所述第一改写单元,包括:
第一改写模块,用于若所述第一查询操作符的分区属性为所述第二查询操作符的分区属性的前缀,且所述第一查询操作符与所述第二查询操作符之间间隔有第三查询操作符,所述第三查询操作符能够使用广播查询算法实现,则将所述第三查询操作符改写为广播查询操作符,所述广播查询操作符没有分区操作符;
第二改写模块,用于改写所述逻辑查询计划中所述第二查询操作符的分区属性,以使得所述第二查询操作符的分区属性与所述第一查询操作符的分区属性相同;
所述生成单元,还用于根据所述第二查询操作符、所述广播查询操作符、所述第一查询操作符以及所述第一查询操作符的分区操作符生成一个物理查询任务,以构成所述物理查询计划;
其中,所述第一查询操作符为所述第三查询操作符的前驱操作符,且所述第三查询操作符为所述第二查询操作符的前驱操作符。
8.根据权利要求6所述的装置,其特征在于,还包括:
第二改写单元,用于若所述提取单元提取的所述第一查询操作符的分区属性与所述提取单元提取的所述第二查询操作符的分区属性相同,且所述第一查询操作符与所述第二查询操作符之间间隔有第三查询操作符,所述第三查询操作符能够使用广播查询算法实现,则将所述第三查询操作符改写为广播查询操作符,所述广播查询操作符没有分区操作符;
所述删除单元,还用于在所述第二改写单元将所述第三查询操作符改写为所述广播查询操作符后,从所述逻辑查询计划中删除所述第二查询操作符的分区操作符;
所述生成单元,还用于在所述删除单元删除所述第二查询操作符的分区操作符后,根据所述第二查询操作符、所述广播查询操作符、所述第一查询操作符以及所述第一查询操作符的分区操作符生成一个物理查询任务,以构成所述物理查询计划;
其中,所述第一查询操作符为所述第三查询操作符的前驱操作符,且所述第三查询操作符为所述第二查询操作符的前驱操作符。
9.根据权利要求6-8中任一项所述的装置,其特征在于,还包括:
第三改写单元,用于在所述删除单元从所述逻辑查询计划中删除所述第二查询操作符的分区操作符之前,改写所述第一查询操作符的排序属性,以使得所述第一查询操作符的排序属性与所述第二查询操作符的排序属性相同;
其中,改写前的所述第一查询操作符的排序属性与第一查询操作符的分区属性相同,所述第二查询操作符的排序属性与改写前的所述第二查询操作符的分区属性相同;
所述排序属性用于对所述逻辑查询计划的所述查询操作符所操作的数据表中的数据进行分区排序。
10.根据权利要求6-8中任一项所述的装置,其特征在于,所述生成单元,具体用于采用任务流关联性优化JFC技术,根据所述第二查询操作符、所述第一查询操作符以及所述第一查询操作符的分区操作符生成一个物理查询任务,以构成所述物理查询计划。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410588240.8A CN105630789B (zh) | 2014-10-28 | 2014-10-28 | 一种查询计划转化方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410588240.8A CN105630789B (zh) | 2014-10-28 | 2014-10-28 | 一种查询计划转化方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105630789A true CN105630789A (zh) | 2016-06-01 |
CN105630789B CN105630789B (zh) | 2019-07-12 |
Family
ID=56045743
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410588240.8A Expired - Fee Related CN105630789B (zh) | 2014-10-28 | 2014-10-28 | 一种查询计划转化方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105630789B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109902101A (zh) * | 2019-02-18 | 2019-06-18 | 国家计算机网络与信息安全管理中心 | 基于SparkSQL的透明分区方法及装置 |
US20200210427A1 (en) * | 2018-12-26 | 2020-07-02 | Palantir Technologies Inc. | Column lineage and metadata propagation |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101436192A (zh) * | 2007-11-16 | 2009-05-20 | 国际商业机器公司 | 用于优化针对垂直存储式数据库的查询的方法和设备 |
US20090144346A1 (en) * | 2007-11-29 | 2009-06-04 | Microsoft Corporation | Partitioning and repartitioning for data parallel operations |
CN102323946A (zh) * | 2011-09-05 | 2012-01-18 | 天津神舟通用数据技术有限公司 | 并行数据库中算子复用的实现方法 |
CN102831139A (zh) * | 2011-03-25 | 2012-12-19 | 微软公司 | 用于查询计划优化以及数据并行编程模型的共同范围分区 |
-
2014
- 2014-10-28 CN CN201410588240.8A patent/CN105630789B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101436192A (zh) * | 2007-11-16 | 2009-05-20 | 国际商业机器公司 | 用于优化针对垂直存储式数据库的查询的方法和设备 |
US20090144346A1 (en) * | 2007-11-29 | 2009-06-04 | Microsoft Corporation | Partitioning and repartitioning for data parallel operations |
CN102831139A (zh) * | 2011-03-25 | 2012-12-19 | 微软公司 | 用于查询计划优化以及数据并行编程模型的共同范围分区 |
CN102323946A (zh) * | 2011-09-05 | 2012-01-18 | 天津神舟通用数据技术有限公司 | 并行数据库中算子复用的实现方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200210427A1 (en) * | 2018-12-26 | 2020-07-02 | Palantir Technologies Inc. | Column lineage and metadata propagation |
US11599539B2 (en) * | 2018-12-26 | 2023-03-07 | Palantir Technologies Inc. | Column lineage and metadata propagation |
CN109902101A (zh) * | 2019-02-18 | 2019-06-18 | 国家计算机网络与信息安全管理中心 | 基于SparkSQL的透明分区方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN105630789B (zh) | 2019-07-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102707990B (zh) | 基于容器的处理方法和装置 | |
CN105868166B (zh) | 一种正则表达式的生成方法及*** | |
KR101617696B1 (ko) | 데이터 정규표현식의 마이닝 방법 및 장치 | |
CN105095287A (zh) | Lsm数据合并排序方法和装置 | |
US20230117105A1 (en) | On-demand loading of dynamic scripting language code for reduced memory usage | |
CN101957745A (zh) | 梯形图语言转换为结构文本语言的方法 | |
CN105550225A (zh) | 索引构建方法、查询方法及装置 | |
CN105022757A (zh) | 网页修改方法及网页修改装置 | |
CN104881466A (zh) | 数据分片的处理以及垃圾文件的删除方法和装置 | |
CN103617226A (zh) | 一种正则表达式匹配方法及装置 | |
CN104965826A (zh) | 基于浏览器的检索方法及检索装置 | |
CN105760289A (zh) | 一种嵌入式***的调试方法及装置 | |
US10482087B2 (en) | Storage system and method of operating the same | |
US9524354B2 (en) | Device, method, and program for processing data with tree structure | |
CN110704139B (zh) | 一种图标分类的方法及装置 | |
CN105630789A (zh) | 一种查询计划转化方法及装置 | |
CN105701128A (zh) | 一种查询语句的优化方法和装置 | |
CN103092955B (zh) | 检查点操作方法、装置及*** | |
CN117171296A (zh) | 信息获取方法、装置和电子设备 | |
CN109697234B (zh) | 实体的多属性信息查询方法、装置、服务器和介质 | |
CN104572638A (zh) | 数据读写方法及装置 | |
CN109918074B (zh) | 编译链接优化方法 | |
CN104750846A (zh) | 一种子串查找方法及装置 | |
CN104932982A (zh) | 一种消息访存的编译方法及相关装置 | |
CN103176843A (zh) | MapReduce分布式***的文件迁移方法及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20190712 Termination date: 20201028 |