CN115982203A - 数据查询方法、装置、设备及存储介质 - Google Patents
数据查询方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN115982203A CN115982203A CN202211720444.3A CN202211720444A CN115982203A CN 115982203 A CN115982203 A CN 115982203A CN 202211720444 A CN202211720444 A CN 202211720444A CN 115982203 A CN115982203 A CN 115982203A
- Authority
- CN
- China
- Prior art keywords
- connection
- task
- rearranged
- join
- operator
- 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.)
- Pending
Links
Images
Classifications
-
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明属于计算机技术领域,公开了一种数据查询方法、装置、设备及存储介质。本申请通过将满足预设重排条件的流任务作为待重排任务,并暂停待重排任务的执行;获取待重排任务对应的连接表信息;根据连接表信息规划表连接顺序;基于表连接顺序对待重排任务的算子连接序列进行重排;在重排完成时,恢复待重排任务的执行,以对数据库进行查询。由于是在进行多表连接查询的待重排任务执行之前,先暂停任务,根据规划得到的高执行效率的表连接顺序对该待重排任务的算子连接序列进行重排之后再执行待重排任务,从而保证多表连接查询的执行效率较高。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种数据查询方法、装置、设备及存储介质。
背景技术
在进行数据库查询时,多表连接查询在各类场景用得很多,而表连接(Join)顺序重排,是Spark、FLink成本优化(CBO)的主要内容。传统的批处理搜集表统计(stat)信息重排,是预先搜集数据进行CBO,一旦CBO完成,多表连接顺序就被固定,无法改变,而在流处理领域,数据表大小是不断变化的,传统的方式进行CBO存在信息不准确和过时的情况,导致最终进行数据查询时,无法保证较高的执行效率。
上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。
发明内容
本发明的主要目的在于提供一种数据查询方法、装置、设备及存储介质,旨在解决现有技术无法保证数据查询时具有较高的执行效率的技术问题。
为实现上述目的,本发明提供了一种数据查询方法,所述方法包括以下步骤:
将满足预设重排条件的流任务作为待重排任务,并暂停所述待重排任务的执行;
获取所述待重排任务对应的连接表信息;
根据所述连接表信息规划表连接顺序;
基于所述表连接顺序对所述待重排任务的算子连接序列进行重排;
在重排完成时,恢复所述待重排任务的执行,以对数据库进行查询。
在本申请的一种可能的实施方式中,所述将满足预设重排条件的流任务作为待重排任务,并暂停所述待重排任务的执行的步骤之前,还包括:
获取流任务对应的算子连接序列;
若所述算子连接连接序列中存在多个直接连接的Join算子,则判定所述流任务满足预设重排条件。
在本申请的一种可能的实施方式中,所述获取所述待重排任务对应的连接表信息的步骤,包括:
获取所述待重排任务对应的算子连接序列;
读取所述算子连接序列中各Join算子的算子标识;
根据所述算子标识查找所述待重排任务对应的连接表信息。
在本申请的一种可能的实施方式中,所述根据所述连接表信息规划表连接顺序的步骤,包括:
从所述连接表信息中提取连接表名及表数据信息;
基于所述连接表名生成多个表连接组合;
基于所述表数据信息计算各表连接组合对应的表连接代价;
根据所述表连接代价从所述多个表连接组合中选取目标连接组合;
基于所述目标连接组合生成表连接顺序。
在本申请的一种可能的实施方式中,所述根据所述表连接代价从所述多个表连接组合中选取目标连接组合的步骤,包括:
获取各表连接组合对应的表连接代价中的代价最小值;
将所述代价最小值对应的表连接组合作为目标连接组合。
在本申请的一种可能的实施方式中,所述在重排完成时,恢复所述待重排任务的执行,以对数据库进行查询的步骤,包括:
在重排完成时,获取重排后的算子连接序列中Join算子的输入信息;
根据所述输入信息对所述Join算子的连接模式进行调整;
在调整完毕时,恢复所述待重排任务的执行,以对数据库进行查询。
在本申请的一种可能的实施方式中,所述根据所述输入信息对所述Join算子的连接模式进行调整的步骤,包括:
从所述输入信息中提取左侧输入量及右侧输入量;
若所述左侧输入量小于或等于预设输入阈值,则将所述Join算子的左侧连接模式调整为广播模式;
若所述右侧输入量小于或等于所述预设输入阈值,则将所述Join算子的右侧连接模式调整为广播模式。
此外,为实现上述目的,本发明还提出一种数据查询装置,所述数据查询装置包括以下模块:
任务选取模块,用于将满足预设重排条件的流任务作为待重排任务,并暂停所述待重排任务的执行;
信息获取模块,用于获取所述待重排任务对应的连接表信息;
顺序规划模块,用于根据所述连接表信息规划表连接顺序;
连接重排模块,用于基于所述表连接顺序对所述待重排任务的算子连接序列进行重排;
数据查询模块,用于在重排完成时,恢复所述待重排任务的执行,以对数据库进行查询。
此外,为实现上述目的,本发明还提出一种数据查询设备,所述数据查询设备可以包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的数据查询程序,所述数据查询程序被处理器执行时实现如上所述的数据查询方法的步骤。
此外,为实现上述目的,本发明还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有数据查询程序,所述数据查询程序执行时实现如上所述的数据查询方法的步骤。
本发明通过将满足预设重排条件的流任务作为待重排任务,并暂停待重排任务的执行;获取待重排任务对应的连接表信息;根据连接表信息规划表连接顺序;基于表连接顺序对待重排任务的算子连接序列进行重排;在重排完成时,恢复待重排任务的执行,以对数据库进行查询。由于是在进行多表连接查询的待重排任务执行之前,先暂停任务,根据规划得到的高执行效率的表连接顺序对该待重排任务的算子连接序列进行重排之后再执行待重排任务,从而保证多表连接查询的执行效率较高。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的电子设备的结构示意图;
图2为本发明数据查询方法第一实施例的流程示意图;
图3为本发明一实施例调整前的算子连接示意图;
图4为本发明一实施例调整后的算子连接示意图;
图5为本发明一实施例的***架构示意图;
图6为本发明数据查询方法第二实施例的流程示意图;
图7为本发明数据查询装置第一实施例的结构框图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
参照图1,图1为本发明实施例方案涉及的硬件运行环境的数据查询设备结构示意图。
如图1所示,该电子设备可以包括:处理器1001,例如中央处理器(CentralProcessing Unit,CPU),通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如无线保真(WIreless-FIdelity,WI-FI)接口)。存储器1005可以是高速的随机存取存储器(RandomAccess Memory,RAM),也可以是稳定的非易失性存储器(Non-Volatile Memory,NVM),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种存储介质的存储器1005中可以包括操作***、网络通信模块、用户接口模块以及数据查询程序。
在图1所示的电子设备中,网络接口1004主要用于与网络服务器进行数据通信;用户接口1003主要用于与用户进行数据交互;本发明电子设备中的处理器1001、存储器1005可以设置在数据查询设备中,所述电子设备通过处理器1001调用存储器1005中存储的数据查询程序,并执行本发明实施例提供的数据查询方法。
本发明实施例提供了一种数据查询方法,参照图2,图2为本发明一种数据查询方法第一实施例的流程示意图。
本实施例中,所述数据查询方法包括以下步骤:
步骤S10:将满足预设重排条件的流任务作为待重排任务,并暂停所述待重排任务的执行。
需要说明的是,本实施例的执行主体可以是所述数据查询设备,所述数据查询设备可以是个人电脑、服务器等电子设备,还可以是其他可实现相同或相似功能的设备,本实施例对此不加以限制,在本实施例及下述各实施例中,以数据查询设备为例对本发明数据查询方法进行说明。
需要说明的是,流任务可以是用户在基于流框架搭建的流平台或流***中设置的执行数据查询或数据处理任务,其中,流框架可以是Flink框架。预设重排条件可以由数据查询设备的管理人员预先进行设置,若流任务满足预设重排条件,则表示该流任务为多表连接进行数据查询的任务。
在实际使用中,由于在流处理领域,数据库的数据量会随着时间变化不断发生变化,因此,为了保证在对数据库进行多表连接查询时的执行效率,可以在真正进行查询之前,确定真正查询时的连接顺序,则此时数据查询设备可以对当前正在执行或即将开始执行的流任务进行监控,判断该流任务是否为利用多表连接进行数据查询的任务。
可以理解的是,若流任务满足预设重排条件,则表示该流任务为利用夺标连接进行数据查询的任务,则此时为了保证多表连接查询的执行效率,可以将该流任务作为待重排任务,并暂停该待重排任务的执行,以便于对该任务的多表连接顺序进行优化。当然,用户也可以在数据查询设备中进行操作,指定对流任务进行重排,则此时也可以判定该流任务满足预设重排条件。
在具体实现中,流框架开发的流平台或流***中的流任务,在执行时,是通过使用多个不同类型的算子进行连接,通过算子连接序列中多个算子连接数据源,从而实现数据处理或数据查询的,而根据算子类型,即可确定流任务是否执行了表连接,在判断流任务是否为多表连接进行数据查询的任务时,可以通过算子类型及算子连接来确定,则此时本实施例所述步骤S10之前,可以包括:
获取流任务对应的算子连接序列;
若所述算子连接连接序列中存在多个直接连接的Join算子,则判定所述流任务满足预设重排条件。
需要说明的是,Join算子可以是进行表连接时使用的算子。若算子连接连接序列中存在Join算子,则表示该流任务执行了表连接,而若仅仅是两张表连接,其表连接方式仅有一种,其实并不需要对表连接顺序进行优化,因此,可以获取流任务对应的算子连接序列,仅在算子连接序列中存在多个直接连接的Join算子,即流任务执行了表连接,且涉及的数据表为至少3个时,才判定该流任务需要进行表连接顺序优化,因此,可以判定流任务满足预设重排条件。
步骤S20:获取所述待重排任务对应的连接表信息。
需要说明的是,待重排任务对应的连接表信息可以是执行待重排任务进行多表连接查询时,所涉及到的数据表的stat信息,其中,stat信息可以包括:数据表名、数据条目数、数据大小、数据类型、空值数量、空值比例等信息。
在本实施例的一种可能的实施方式中,为了快速获得待重排任务的连接表信息,本实施例所述步骤S20,可以包括:
获取所述待重排任务对应的算子连接序列;
读取所述算子连接序列中各Join算子的算子标识;
根据所述算子标识查找所述待重排任务对应的连接表信息。
需要说明的是,若算子连接连接序列中存在Join算子,则表示该流任务执行了表连接,而Join算子的算子信息中包括算子的输入信息,为了快速确定待重排任务对应的连接表信息,此时可以获取待重排任务对应的算子连接序列,并读取算子连接序列中Join算子的算子标识,然后根据算子标识查找各Join算子的输入信息,根据输入信息确定待重排任务涉及的数据表,再获取各数据表的stat信息,即可获取到待重排任务对应的连接表信息。
例如:假设待重排任务对应的算子连接序列中存在算子标识为JOIN1、JOIN2、JOIN3共三个Join算子,此时根据算子标识查找到的各Join算子的输入信息分别为“左输入:store_sales表,右输入:store_returns表”、“左输入:JOIN2算子输出,右输入:catalog_sales表”、“左输入:JOIN3算子输出,右输入:date_dim表”,则此时可以确定该待重排任务在多表连接查询时涉及的数据表共四张,分别为store_sales表、store_returns表、catalog_sales表、date_dim表,此时可以读取该四张数据表的stat信息,从而获得待重排任务对应的连接表信息。
步骤S30:根据所述连接表信息规划表连接顺序。
需要说明的是,根据连接表信息规划表连接顺序可以是采用动态规划的方式,根据表连接信息规划出执行效率较高的表连接顺序。
在具体实现过程中,可以通过表连接代价来反应表连接顺序对应的执行效率,则此时本实施例所述步骤S30,可以包括:
从所述连接表信息中提取连接表名及表数据信息;
基于所述连接表名生成多个表连接组合;
基于所述表数据信息计算各表连接组合对应的表连接代价;
根据所述表连接代价从所述多个表连接组合中选取目标连接组合;
基于所述目标连接组合生成表连接顺序。
需要说明的是,表数据信息可以是数据表的stat信息。基于连接表名生成多个表连接组合可以是通过数据排列组合的方式列举出多个数据表进行连接时可以得到的表连接顺序的顺序组合。基于目标连接组合生成表连接顺序可以是将读取表连接组合中的表连接后关系,生成表连接顺序。
例如:假设连接表信息包括数据表名分别为A、B、C三张表,则此时生成的表连接组合为三个,分别为(Ajoin B)join C、(A join C)join B、(B join C)join A,其中,(AjoinB)join C表示A表与B表先连接,连接完成后生成中间表与C表进行连接,其他的组合类似,此处不再赘述。
在具体实现中,根据表数据信息计算表连接组合对应的表连接代价可以是从表数据信息中提取各数据表的数据条目数以及表连接字段不同值的个数,根据数据条目数、表连接字段不同值的个数及预设代价计算公式进行计算表连接组合对应的表连接代价。
其中,代价计算公式可以为cost=(R1*R2)/Max(V(R1),V(R2));
式中,R1和R2分别为进行连接的两张数据表A和B的数据条目数,R1为A表中表连接字段的不同值的个数,。
例如:对于表连接组合(A join B)join C,假设A表中的数据条目数为1000,B表中的数据条目数为500,C表中的数据条目数为2000,而A表与B表连接字段为b,此时A表中b字段对应的不同值有100个,B表中b字段对应的不同值有200个,则此时根据代价计算公式可以计算得到A与B表进行连接的代价:
cost(A,B)=(500*1000)/Max(100,200)=500000/200=2500;
此时可以进一步计算A与B连接形成的中间表与C表连接的代价,将中间表对应的代价作为中间表的表数据条目数,假设此时中间表与C表的连接字段为c,中间表c字段对应的不同值有500个,而C表c字段对应的不同值有20个;则此时中间表与c表连接的代价cost(temp,C)为:
cost(temp,C)=(2500*2000)/Max(500,20)=5000000/500=10000;
则此时表连接组合(Ajoin B)join C对应的表连接代价为10000。
可以理解的是,表连接代价用于反应表连接顺序对应的执行效率,表连接代价越高,则表示执行执行效率越差,此时为了保证较高的执行效率,本实施例所述根据所述表连接代价从所述多个表连接组合中选取目标连接组合的步骤,可以包括:
获取各表连接组合对应的表连接代价中的代价最小值;
将所述代价最小值对应的表连接组合作为目标连接组合。
需要说明的是,表连接代价用于反应表连接顺序对应的执行效率,表连接代价越高,则表示执行执行效率越差,此时为了保证较高的执行效率,可以计算各表连接代价中的最小值,并将该最小值作为代价最小值,然后将代价最小值对应的表连接组合作为目标连接组合。
当然,在实际使用汇总,待重排任务涉及的数据表的数量可能过多,此时动态规划可能会消耗大量的时间,执行过慢,此时还可以采用遗传算法根据连接表信息计算局部最优解,从而获得表连接顺序。其中,为了便于确认涉及的数据表的数量是否过多,可以预先设置一预设表数量阈值,在待重排任务涉及的数据表的数量大于预设表数量阈值时,判定待重排任务涉及的数据表的数量过多,预设表数量阈值可以由数据查询设备的管理人员根据实际需要进行设置。
步骤S40:基于所述表连接顺序对所述待重排任务的算子连接序列进行重排。
需要说明的是,流框架开发的流平台或流***中的流任务,在执行时,是通过使用多个不同类型的算子进行连接,形成算子连接序列,通过算子连接序列中多个算子连接数据源,从而实现数据处理或数据查询的,因此,在确定表连接顺序之后,需要对待重排任务中的算子连接序列中的算子连接顺序进行重排,令重排后的算子连接序列在进行数据查询时的表连接顺序与规划出的表连接顺序一致。
步骤S50:在重排完成时,恢复所述待重排任务的执行,以对数据库进行查询。
可以理解的是,在对待重排任务的算子连接序列重排完成之后,待重排任务在进行数据查询时的表连接顺序与规划出的表连接顺序一致,此时执行待重排任务,可以保证在进行多表连接查询时,可以保证较高的执行效率,因此,可以恢复待重排任务的执行,从而实现对数据库的数据查询。
为了便于理解,现结合图3、图4和图5进行说明,单不对本方案进行限定,图3为本实施例的调整前的算子连接示意图,如图3所示,该流任务的算子连接序列由9个Join算子组成,各Join算子的算子标识分别为JOIN#1、JOIN#2、JOIN#3、JOIN#4、JOIN#5、JOIN#6、JOIN#7、JOIN#8、JOIN#9,其中,JOIN#1算子的左侧输入为store_sales表,右侧输入为store_returns表,而该待调整任务涉及的数据表共包括:store_sales表、store_returns表、catalog_sales表、date_dim表、store表、item表,其中,date_dim表被连接了三次,为了区分,设置别名分别为d1、d2、d3,此时并未对表连接数据进行优化,JOIN#1和JOIN#2算子是大的事实表与事实表连接,共连接了3张事实表store_sales,store_returns和catalog_sales,并产生大的中间结果表。这两个join都以shuffle join的方式执行并会产生大的输出,其中join#1输出了1.99亿行纪录,执行图3中的待重排任务进行查询,共计花费了241秒。
图4为本实施例的调整后的算子连接示意图,如图4所示,在对算子进行调整之后,该流任务的算子连接序列由7个Join算子组成,各各Join算子的算子标识分别为JOIN#1、JOIN#2、JOIN#3、JOIN#4、JOIN#5、JOIN#6、JOIN#7,涉及的数据表数量并未发生变化,但是算子数量相对图3减少,且中间结果大小缩小到原来的1/6。最终依据该调整后的待重排任务进行数据查询只花了71秒,性能提升了3.4倍。
图5为本实施例的数据查询设备中安装的流平台或流***的***架构示意图,如图5所示,可以在用户控制平台中获取FLink JobManager管理节点(即与DAG自适应管理器通讯),根据join多个算子名,依次获取FLink DAG上,对应join算子的逻辑信息JobVertex(算子ID,算子并行度、算子的上游及下游信息);向FLink JobManager管理节点(即DAG自适应管理器),发起暂停流任务的请求,依次暂停流任务对应的多个Join物理节点(ExecutionJobVertex),再向向DAG调度器发起任务,根据规划的表连接顺序,对每个Join物理算子进行并行度展开,通过TaskManager修改每个并行度对应Task任务的上游下游信息(InputGate、ResultPartition),实现对流任务的算子连接序列进行重排,在重排完成后,可以向DAG调度器发起任务,对重排后的Join算子,进行状态重建计算(在源头join算子输入数据,数据依次流过每个join算子,补全数据),最后,恢复该流任务的执行,继续进行数据查询。
本实施例通过将满足预设重排条件的流任务作为待重排任务,并暂停待重排任务的执行;获取待重排任务对应的连接表信息;根据连接表信息规划表连接顺序;基于表连接顺序对待重排任务的算子连接序列进行重排;在重排完成时,恢复待重排任务的执行,以对数据库进行查询。由于是在进行多表连接查询的待重排任务执行之前,先暂停任务,根据规划得到的高执行效率的表连接顺序对该待重排任务的算子连接序列进行重排之后再执行待重排任务,从而保证多表连接查询的执行效率较高。
参考图6,图6为本发明一种数据查询方法第二实施例的流程示意图。
基于上述第一实施例,本实施例数据查询方法的所述步骤S50,包括:
步骤S501:在重排完成时,获取重排后的算子连接序列中Join算子的输入信息。
需要说明的是,输入信息可以是算子的数据来源信息,而Join算子是用于执行表连接操作的,因此,Join算子的输入信息可以分为左侧输入信息及右侧输入信息。
步骤S502:根据所述输入信息对所述Join算子的连接模式进行调整。
需要说明的是,Join算子在进行表连接时,默认采用的是哈希连接(Hash Join)模式,Hash Join模式在使用时整体性能十分均衡,但是,在连接过程中,若某一侧连接的数据表的数据条目数极少,此时继续使用Hash Join模式的执行效率不如广播(BroadcastHashJoin)模式,因此,在对算子连接序列重排完成之后,还可以根据输入信息对Join算子的连接模式进行调整,进一步提高数据查询的执行效率。
在本实施例的一种可能的实施方式中,为了合理的调整Join算子的连接模式,本实施例所述步骤S502,可以包括:
从所述输入信息中提取左侧输入量及右侧输入量;
若所述左侧输入量小于或等于预设输入阈值,则将所述Join算子的左侧连接模式调整为广播模式;
若所述右侧输入量小于或等于所述预设输入阈值,则将所述Join算子的右侧连接模式调整为广播模式。
需要说明的是,左侧输入量可以是Join算子左侧输入连接的数据表的数据条目数,右侧输入量可以是Join算子右侧输入连接的数据表的数据条目数。左侧连接模式可以是Join算子左侧输入对应的连接模式,右侧连接模式可以是Join算子右侧输入对应的连接模式。
可以理解的是,若是左侧输入量小于或等于预设输入阈值,则表示该Join算子左侧输入连接的数据表的数据条目数极少,此时可以将Join算子左侧输入对应的连接模式调整为广播模式,从而提高执行效率。
同理,若是右侧输入量小于或等于预设输入阈值,则表示该Join算子右侧输入连接的数据表的数据条目数极少,此时可以将Join算子右侧输入对应的连接模式调整为广播模式,从而提高执行效率。
步骤S503:在调整完毕时,恢复所述待重排任务的执行,以对数据库进行查询。
可以理解的是,在调整完毕之后的执行待重排任务,可以保证执行过程中进行多表连接查询时,可以保证较高的执行效率,因此,可以恢复待重排任务的执行,从而实现对数据库的数据查询。
本实施例通过在重排完成时,获取重排后的算子连接序列中Join算子的输入信息;根据输入信息对所述Join算子的连接模式进行调整;在调整完毕时,恢复待重排任务的执行,以对数据库进行查询。由于在重排完成之后,还会根据算子连接序列中Join算子的输入信息为该Join算子设置合适的连接模式,保证在进行表连接时可以尽可能提高连接效率,从而进一步提高了本发明数据查询方法的执行效率。
此外,本发明实施例还提出一种存储介质,所述存储介质上存储有数据查询程序,所述数据查询程序被处理器执行时实现如上文所述的数据查询方法的步骤。
参照图7,图7为本发明数据查询装置第一实施例的结构框图。
如图7所示,本发明实施例提出的数据查询装置包括:
任务选取模块10,用于将满足预设重排条件的流任务作为待重排任务,并暂停所述待重排任务的执行;
信息获取模块20,用于获取所述待重排任务对应的连接表信息;
顺序规划模块30,用于根据所述连接表信息规划表连接顺序;
连接重排模块40,用于基于所述表连接顺序对所述待重排任务的算子连接序列进行重排;
数据查询模块50,用于在重排完成时,恢复所述待重排任务的执行,以对数据库进行查询。
本实施例通过将满足预设重排条件的流任务作为待重排任务,并暂停待重排任务的执行;获取待重排任务对应的连接表信息;根据连接表信息规划表连接顺序;基于表连接顺序对待重排任务的算子连接序列进行重排;在重排完成时,恢复待重排任务的执行,以对数据库进行查询。由于是在进行多表连接查询的待重排任务执行之前,先暂停任务,根据规划得到的高执行效率的表连接顺序对该待重排任务的算子连接序列进行重排之后再执行待重排任务,从而保证多表连接查询的执行效率较高。
在本申请的一种可能的实施方式中,所述任务选取模块10,还用于获取流任务对应的算子连接序列;若所述算子连接连接序列中存在多个直接连接的Join算子,则判定所述流任务满足预设重排条件。
在本申请的一种可能的实施方式中,所述信息获取模块20,还用于获取所述待重排任务对应的算子连接序列;读取所述算子连接序列中各Join算子的算子标识;根据所述算子标识查找所述待重排任务对应的连接表信息。
在本申请的一种可能的实施方式中,所述顺序规划模块30,还用于从所述连接表信息中提取连接表名及表数据信息;基于所述连接表名生成多个表连接组合;基于所述表数据信息计算各表连接组合对应的表连接代价;根据所述表连接代价从所述多个表连接组合中选取目标连接组合;基于所述目标连接组合生成表连接顺序。
在本申请的一种可能的实施方式中,所述顺序规划模块30,还用于获取各表连接组合对应的表连接代价中的代价最小值;将所述代价最小值对应的表连接组合作为目标连接组合。
在本申请的一种可能的实施方式中,所述数据查询模块40,还用于在重排完成时,获取重排后的算子连接序列中Join算子的输入信息;根据所述输入信息对所述Join算子的连接模式进行调整;在调整完毕时,恢复所述待重排任务的执行,以对数据库进行查询。
在本申请的一种可能的实施方式中,所述数据查询模块40,还用于从所述输入信息中提取左侧输入量及右侧输入量;若所述左侧输入量小于或等于预设输入阈值,则将所述Join算子的左侧连接模式调整为广播模式;若所述右侧输入量小于或等于所述预设输入阈值,则将所述Join算子的右侧连接模式调整为广播模式。
应当理解的是,以上仅为举例说明,对本发明的技术方案并不构成任何限定,在具体应用中,本领域的技术人员可以根据需要进行设置,本发明对此不做限制。
需要说明的是,以上所描述的工作流程仅仅是示意性的,并不对本发明的保护范围构成限定,在实际应用中,本领域的技术人员可以根据实际的需要选择其中的部分或者全部来实现本实施例方案的目的,此处不做限制。
另外,未在本实施例中详尽描述的技术细节,可参见本发明任意实施例所提供的数据查询方法,此处不再赘述。
此外,需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者***不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者***所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者***中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如只读存储器(Read Only Memory,ROM)/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种数据查询方法,其特征在于,所述数据查询方法包括以下步骤:
将满足预设重排条件的流任务作为待重排任务,并暂停所述待重排任务的执行;
获取所述待重排任务对应的连接表信息;
根据所述连接表信息规划表连接顺序;
基于所述表连接顺序对所述待重排任务的算子连接序列进行重排;
在重排完成时,恢复所述待重排任务的执行,以对数据库进行查询。
2.如权利要求1所述的数据查询方法,其特征在于,所述将满足预设重排条件的流任务作为待重排任务,并暂停所述待重排任务的执行的步骤之前,还包括:
获取流任务对应的算子连接序列;
若所述算子连接连接序列中存在多个直接连接的Join算子,则判定所述流任务满足预设重排条件。
3.如权利要求1所述的数据查询方法,其特征在于,所述获取所述待重排任务对应的连接表信息的步骤,包括:
获取所述待重排任务对应的算子连接序列;
读取所述算子连接序列中各Join算子的算子标识;
根据所述算子标识查找所述待重排任务对应的连接表信息。
4.如权利要求1所述的数据查询方法,其特征在于,所述根据所述连接表信息规划表连接顺序的步骤,包括:
从所述连接表信息中提取连接表名及表数据信息;
基于所述连接表名生成多个表连接组合;
基于所述表数据信息计算各表连接组合对应的表连接代价;
根据所述表连接代价从所述多个表连接组合中选取目标连接组合;
基于所述目标连接组合生成表连接顺序。
5.如权利要求4所述的数据查询方法,其特征在于,所述根据所述表连接代价从所述多个表连接组合中选取目标连接组合的步骤,包括:
获取各表连接组合对应的表连接代价中的代价最小值;
将所述代价最小值对应的表连接组合作为目标连接组合。
6.如权利要求1-5任一项所述的数据查询方法,其特征在于,所述在重排完成时,恢复所述待重排任务的执行,以对数据库进行查询的步骤,包括:
在重排完成时,获取重排后的算子连接序列中Join算子的输入信息;
根据所述输入信息对所述Join算子的连接模式进行调整;
在调整完毕时,恢复所述待重排任务的执行,以对数据库进行查询。
7.如权利要求6所述的数据查询方法,其特征在于,所述根据所述输入信息对所述Join算子的连接模式进行调整的步骤,包括:
从所述输入信息中提取左侧输入量及右侧输入量;
若所述左侧输入量小于或等于预设输入阈值,则将所述Join算子的左侧连接模式调整为广播模式;
若所述右侧输入量小于或等于所述预设输入阈值,则将所述Join算子的右侧连接模式调整为广播模式。
8.一种数据查询装置,其特征在于,所述数据查询装置包括以下模块:
任务选取模块,用于将满足预设重排条件的流任务作为待重排任务,并暂停所述待重排任务的执行;
信息获取模块,用于获取所述待重排任务对应的连接表信息;
顺序规划模块,用于根据所述连接表信息规划表连接顺序;
连接重排模块,用于基于所述表连接顺序对所述待重排任务的算子连接序列进行重排;
数据查询模块,用于在重排完成时,恢复所述待重排任务的执行,以对数据库进行查询。
9.一种数据查询设备,其特征在于,所述数据查询设备可以包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的数据查询程序,所述数据查询程序被处理器执行时实现如权利要求1-7中任一项所述的数据查询方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有数据查询程序,所述数据查询程序执行时实现如权利要求1-7中任一项所述的数据查询方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211720444.3A CN115982203A (zh) | 2022-12-30 | 2022-12-30 | 数据查询方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211720444.3A CN115982203A (zh) | 2022-12-30 | 2022-12-30 | 数据查询方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115982203A true CN115982203A (zh) | 2023-04-18 |
Family
ID=85975639
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211720444.3A Pending CN115982203A (zh) | 2022-12-30 | 2022-12-30 | 数据查询方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115982203A (zh) |
-
2022
- 2022-12-30 CN CN202211720444.3A patent/CN115982203A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11422853B2 (en) | Dynamic tree determination for data processing | |
CN111340237B (zh) | 数据处理和模型运行方法、装置和计算机设备 | |
Gondzio et al. | New developments in the primal–dual column generation technique | |
US8738645B1 (en) | Parallel processing framework | |
Fearnley et al. | Learning equilibria of games via payoff queries | |
CN103560963B (zh) | 一种OpenFlow流表存储空间压缩方法 | |
US10453165B1 (en) | Computer vision machine learning model execution service | |
Turk et al. | Temporal workload-aware replicated partitioning for social networks | |
CN111727427B (zh) | 信息管理装置、信息管理方法和记录介质 | |
Montoya et al. | Towards efficient query processing over heterogeneous RDF interfaces | |
CN112685091A (zh) | 基于大数据的业务请求处理方法、装置、设备和介质 | |
CN110471935B (zh) | 一种数据操作的执行方法、装置、设备和存储介质 | |
WO2024120209A1 (zh) | 等效电感的确定方法及计算机设备 | |
Tao et al. | Collaborative filtering recommendation algorithm based on spark | |
CN115982203A (zh) | 数据查询方法、装置、设备及存储介质 | |
CN115858473A (zh) | 基于训练***与对象存储***的数据交互方法及装置 | |
WO2023173550A1 (zh) | 一种跨领域数据推荐方法、装置、计算机设备及介质 | |
US10764204B2 (en) | Cloud extensibility framework | |
WO2011016281A2 (ja) | ベイジアンネットワーク構造学習のための情報処理装置及びプログラム | |
CN114168589A (zh) | 索引构建方法及装置 | |
JP2001331485A (ja) | 分散データベース演算処理装置 | |
JP5594460B2 (ja) | 送信情報制御装置、方法及びプログラム | |
US20120192011A1 (en) | Data processing apparatus that performs test validation and computer-readable storage medium | |
US20220382741A1 (en) | Graph embeddings via node-property-aware fast random projection | |
CN112733474B (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 |