CN108520011B - 一种确定任务的执行方案的方法及装置 - Google Patents
一种确定任务的执行方案的方法及装置 Download PDFInfo
- Publication number
- CN108520011B CN108520011B CN201810232894.5A CN201810232894A CN108520011B CN 108520011 B CN108520011 B CN 108520011B CN 201810232894 A CN201810232894 A CN 201810232894A CN 108520011 B CN108520011 B CN 108520011B
- Authority
- CN
- China
- Prior art keywords
- current
- subtask
- sql language
- language expression
- execution
- 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.)
- Active
Links
Images
Abstract
本发明提供了一种确定任务的执行方案的方法及装置,该方法包括:将待完成任务划分成至少一个子任务;确定每个子任务的至少一个解决方案,确定每个子任务的每个解决方案的机器语言语句,生成每个机器语言语句对应的至少一个SQL语言表达;从每个解决方案对应的至少一个SQL语言表达中,确定每个解决方案对应的最优SQL语言表达;确定至少一个子任务的执行顺序;确定执行顺序中第一个子任务的每个最优SQL语言表达对应的最优执行方案,从第一个子任务的每个最优SQL语言表达对应的最优执行方案中,确定方案执行消耗最小的最优执行方案为最终执行方案。本发明能够更快地确定出待完成任务的较优的执行方案。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种确定任务的执行方案的方法及装置。
背景技术
当需要通过机器语言来实现某项任务时,实现同一个任务可能存在多种执行方案。如何从这些执行方案中确定出较优的执行方案非常重要。
在现有技术中,主要通过人工的方式来确定较优的执行方案。具体地,程序工程师逐个比较这些执行方案的机器语言,根据经验确定出较优的执行方案。
通过上述描述可见,现有技术通过人工的方式来确定出较优的执行方案,需要花费较多的时间。
发明内容
本发明实施例要解决的技术问题在于如何更快的确定出较优的执行方案,针对现有技术中的缺陷,提供一种确定任务的执行方案的方法及装置。
一方面,本发明实施例提供了一种确定任务的执行方案的方法,包括:
将待完成任务划分成至少一个子任务;
确定每个所述子任务的至少一个解决方案,确定每个所述子任务的每个所述解决方案的机器语言语句;
对每个所述解决方案的机器语言语句进行转换,生成每个所述机器语言语句对应的至少一个SQL语言表达;
从每个所述解决方案对应的至少一个SQL语言表达中,确定每个所述解决方案对应的最优SQL语言表达;
确定所述至少一个子任务的执行顺序;
针对所述执行顺序中第一个子任务的每个所述最优SQL语言表达,分别执行A1-A6:
A1:将第一个子任务的当前最优SQL语言表达作为第一个子任务的目标最优SQL语言表达;
A2:在所述执行顺序中,将所述第一个子任务的下一个子任务作为当前子任务;
A3:根据所述当前子任务中的每个最优SQL语言表达,以及,在所述执行顺序中所述当前子任务之前的每个子任务的目标最优SQL语言表达,确定所述当前子任务中的每个最优SQL语言表达对应的待评估方案;
A4:分别确定所述当前子任务中的每个最优SQL语言表达对应的待评估方案的评估执行消耗;
A5:将最小的评估执行消耗对应的所述当前子任务的最优SQL语言表达作为所述当前子任务的目标最优SQL语言表达;
A6:判断所述当前子任务是否是所述执行顺序中的最后一个子任务,如果是,则将所述当前子任务的目标最优SQL语言表达对应的待评估方案作为所述第一个子任务的当前最优SQL语言表达对应的最优执行方案,将所述当前子任务的目标最优SQL语言表达对应的待评估方案的评估执行消耗作为所述最优执行方案的方案执行消耗;否则,在所述执行顺序中,将所述当前子任务的下一个子任务作为当前子任务,返回A3;
从所述第一个子任务的每个最优SQL语言表达对应的最优执行方案中,确定方案执行消耗最小的最优执行方案为最终执行方案。
较优地,
所述从每个所述解决方案对应的至少一个SQL语言表达中,确定每个所述解决方案对应的最优SQL语言表达,包括:
针对每个所述解决方案对应的每个SQL语言表达,执行:
分别对当前解决方案的每个SQL语言表达进行编译,确定每个SQL语言表达的CPU占用率、内存的占用率、文件打开数量、打开的进程数、IO的等待时间、执行时间;
分别根据公式一确定当前解决方案的每个SQL语言表达的SQL执行消耗,所述公式一为:
其中,h为当前SQL语言表达的SQL执行消耗,c1为所述当前SQL语言表达的CPU占用率、n1为所述当前SQL语言表达的内存的占用率、w1为所述当前SQL语言表达的文件打开数量、j1为所述当前SQL语言表达的打开的进程数、d1为所述当前SQL语言表达的IO的等待时间、t1为所述当前SQL语言表达的执行时间,a1为CPU占用率的第一预设权重,a2为内存的占用率的第一预设权重,a3为IO的等待时间的第一预设权重,a4为执行时间的第一预设权重,a5为文件打开数量的第一预设权重,a6为打开的进程数的第一预设权重,T1为第一预设时间长度;
将SQL执行消耗最小的SQL语言表达作为所述当前解决方案对应的最优SQL语言表达。
较优地,
所述A3,包括:
针对所述当前子任务中的每个最优SQL语言表达,执行:
将所述当前子任务中的当前最优SQL语言表达与所述当前子任务之前的每个子任务的目标最优SQL语言表达按照对应的子任务的所述执行顺序进行组合,构成所述当前子任务中的当前最优SQL语言表达对应的待评估方案。
较优地,
所述A4,包括:
针对所述当前子任务中的每个最优SQL语言表达对应的待评估方案,执行:
对当前待评估方案进行编译,确定所述当前待评估方案的CPU占用率、内存的占用率、IO的等待时间、文件打开数量、打开的进程数、执行时间;
根据公式二,确定所述当前待评估方案的评估执行消耗,所述公式二为:
其中,H为所述当前待评估方案的评估执行消耗,c2为所述当前待评估方案的CPU占用率、n2为所述当前待评估方案的内存的占用率、w2为所述当前待评估方案的文件打开数量、j2为所述当前待评估方案的打开的进程数、d2为所述当前待评估方案的IO的等待时间、t2为所述当前待评估方案的执行时间,b1为CPU占用率的第二预设权重,b2为内存的占用率的第二预设权重,b3为IO的等待时间的第二预设权重,b4为执行时间的第二预设权重,b5为文件打开数量的第二预设权重,b6为打开的进程数的第二预设权重,T2为第二预设时间长度。
较优地,
所述分别对当前解决方案的每个SQL语言表达进行编译,包括:
确定所述当前解决方案的每个SQL语言表达的运行机器;
分别将所述当前解决方案的每个SQL语言表达在对应的运行机器的优化器中运行。
另一方面,本发明实施例提供了一种确定任务的执行方案的装置,包括:
划分单元,用于将待完成任务划分成至少一个子任务;
最优SQL确定单元,用于确定每个所述子任务的至少一个解决方案,确定每个所述子任务的每个所述解决方案的机器语言语句;对每个所述解决方案的机器语言语句进行转换,生成每个所述机器语言语句对应的至少一个SQL语言表达;从每个所述解决方案对应的至少一个SQL语言表达中,确定每个所述解决方案对应的最优SQL语言表达;
顺序确定单元,用于确定所述至少一个子任务的执行顺序;
执行方案确定单元,针对所述执行顺序中第一个子任务的每个所述最优SQL语言表达,分别执行A1-A6:
A1:将第一个子任务的当前最优SQL语言表达作为第一个子任务的目标最优SQL语言表达;
A2:在所述执行顺序中,将所述第一个子任务的下一个子任务作为当前子任务;
A3:根据所述当前子任务中的每个最优SQL语言表达,以及,在所述执行顺序中所述当前子任务之前的每个子任务的目标最优SQL语言表达,确定所述当前子任务中的每个最优SQL语言表达对应的待评估方案;
A4:分别确定所述当前子任务中的每个最优SQL语言表达对应的待评估方案的评估执行消耗;
A5:将最小的评估执行消耗对应的所述当前子任务的最优SQL语言表达作为所述当前子任务的目标最优SQL语言表达;
A6:判断所述当前子任务是否是所述执行顺序中的最后一个子任务,如果是,则将所述当前子任务的目标最优SQL语言表达对应的待评估方案作为所述第一个子任务的当前最优SQL语言表达对应的最优执行方案,将所述当前子任务的目标最优SQL语言表达对应的待评估方案的评估执行消耗作为所述最优执行方案的方案执行消耗;否则,在所述执行顺序中,将所述当前子任务的下一个子任务作为当前子任务,返回A3;
最终方案确定单元,用于从所述第一个子任务的每个最优SQL语言表达对应的最优执行方案中,确定方案执行消耗最小的最优执行方案为最终执行方案。
较优地,
所述最优SQL确定单元,在执行所述从每个所述解决方案对应的至少一个SQL语言表达中,确定每个所述解决方案对应的最优SQL语言表达时,具体用于:
针对每个所述解决方案对应的每个SQL语言表达,执行:
分别对当前解决方案的每个SQL语言表达进行编译,确定每个SQL语言表达的CPU占用率、内存的占用率、文件打开数量、打开的进程数、IO的等待时间、执行时间;
分别根据公式一确定当前解决方案的每个SQL语言表达的SQL执行消耗,所述公式一为:
其中,h为当前SQL语言表达的SQL执行消耗,c1为所述当前SQL语言表达的CPU占用率、n1为所述当前SQL语言表达的内存的占用率、w1为所述当前SQL语言表达的文件打开数量、j1为所述当前SQL语言表达的打开的进程数、d1为所述当前SQL语言表达的IO的等待时间、t1为所述当前SQL语言表达的执行时间,a1为CPU占用率的第一预设权重,a2为内存的占用率的第一预设权重,a3为IO的等待时间的第一预设权重,a4为执行时间的第一预设权重,a5为文件打开数量的第一预设权重,a6为打开的进程数的第一预设权重,T1为第一预设时间长度;
将SQL执行消耗最小的SQL语言表达作为所述当前解决方案对应的最优SQL语言表达。
较优地,
所述执行方案确定单元,在执行A3时,具体用于:
针对所述当前子任务中的每个最优SQL语言表达,执行:
将所述当前子任务中的当前最优SQL语言表达与所述当前子任务之前的每个子任务的目标最优SQL语言表达按照对应的子任务的所述执行顺序进行组合,构成所述当前子任务中的当前最优SQL语言表达对应的待评估方案。
较优地,
所述执行方案确定单元,在执行A4时,具体用于:
针对所述当前子任务中的每个最优SQL语言表达对应的待评估方案,执行:
对当前待评估方案进行编译,确定所述当前待评估方案的CPU占用率、内存的占用率、IO的等待时间、文件打开数量、打开的进程数、执行时间;
根据公式二,确定所述当前待评估方案的评估执行消耗,所述公式二为:
其中,H为所述当前待评估方案的评估执行消耗,c2为所述当前待评估方案的CPU占用率、n2为所述当前待评估方案的内存的占用率、w2为所述当前待评估方案的文件打开数量、j2为所述当前待评估方案的打开的进程数、d2为所述当前待评估方案的IO的等待时间、t2为所述当前待评估方案的执行时间,b1为CPU占用率的第二预设权重,b2为内存的占用率的第二预设权重,b3为IO的等待时间的第二预设权重,b4为执行时间的第二预设权重,b5为文件打开数量的第二预设权重,b6为打开的进程数的第二预设权重,T2为第二预设时间长度。
较优地,
所述最优SQL确定单元,在执行所述分别对当前解决方案的每个SQL语言表达进行编译时,具体用于:
确定所述当前解决方案的每个SQL语言表达的运行机器;
分别将所述当前解决方案的每个SQL语言表达在对应的运行机器的优化器中运行。
实施本发明的,至少具有以下有益效果:
在本发明实施例中,将待完成任务拆分成至少一个子任务,每个子任务有至少一个解决方案,确定解决方案对应的机器语言语句,将每个机器语言语句转换成至少一个SQL语言表达,针对每个解决方案,确定出对应的最优SQL语言表达,从每个子任务的至少一个最优SQL语言表达中,确定出执行消耗最小的最终执行方案,该最终执行方案就是实现待完成任务的较优的执行方案,该过程能够自动完成,无需人工完成,能够更快的确定出较优的执行方案。
附图说明
图1是本发明一实施例提供的一种确定任务的执行方案的方法的流程图;
图2是本发明一实施例提供的一种确定任务的执行方案的装置的示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明实施例提供了一种确定任务的执行方案的方法,包括:
步骤101:将待完成任务划分成至少一个子任务;
步骤102:确定每个所述子任务的至少一个解决方案,确定每个所述子任务的每个所述解决方案的机器语言语句;
步骤103:对每个所述解决方案的机器语言语句进行转换,生成每个所述机器语言语句对应的至少一个SQL语言表达;
步骤104:从每个所述解决方案对应的至少一个SQL语言表达中,确定每个所述解决方案对应的最优SQL语言表达;
步骤105:确定所述至少一个子任务的执行顺序;
步骤106:针对所述执行顺序中第一个子任务的每个所述最优SQL语言表达,分别执行A1-A6:
A1:将第一个子任务的当前最优SQL语言表达作为第一个子任务的目标最优SQL语言表达;
A2:在所述执行顺序中,将所述第一个子任务的下一个子任务作为当前子任务;
A3:根据所述当前子任务中的每个最优SQL语言表达,以及,在所述执行顺序中所述当前子任务之前的每个子任务的目标最优SQL语言表达,确定所述当前子任务中的每个最优SQL语言表达对应的待评估方案;
A4:分别确定所述当前子任务中的每个最优SQL语言表达对应的待评估方案的评估执行消耗;
A5:将最小的评估执行消耗对应的所述当前子任务的最优SQL语言表达作为所述当前子任务的目标最优SQL语言表达;
A6:判断所述当前子任务是否是所述执行顺序中的最后一个子任务,如果是,则将所述当前子任务的目标最优SQL语言表达对应的待评估方案作为所述第一个子任务的当前最优SQL语言表达对应的最优执行方案,将所述当前子任务的目标最优SQL语言表达对应的待评估方案的评估执行消耗作为所述最优执行方案的方案执行消耗;否则,在所述执行顺序中,将所述当前子任务的下一个子任务作为当前子任务,返回A3;
步骤107:从所述第一个子任务的每个最优SQL语言表达对应的最优执行方案中,确定方案执行消耗最小的最优执行方案为最终执行方案。
在本发明实施例中,将待完成任务拆分成至少一个子任务,每个子任务有至少一个解决方案,确定解决方案对应的机器语言语句,将每个机器语言语句转换成至少一个SQL语言表达,针对每个解决方案,确定出对应的最优SQL语言表达,从每个子任务的至少一个最优SQL语言表达中,确定出执行消耗最小的最终执行方案,该最终执行方案就是实现待完成任务的较优的执行方案,该过程能够自动完成,无需人工完成,能够更快的确定出较优的执行方案。
在本发明实施例中,机器语言语句对应的SQL语言表达是指用来实现机器语言语句的SQL语句。
在确定每个解决方案对应的最优SQL语言表达时,可以在多台机器上同时进行,实现分布式处理,提高处理效率。
每个子任务可以有多个解决方案,每个解决方案都对应一个最优SQL语言表达,这样,每个子任务就对应多个最优SQL语言表达。通过本发明实施例,从每个子任务对应的多个最优SQL语言表达中,确定出每个子任务对应的一个最终的最优SQL语言表达,构成最终执行方案。
在确定第一个子任务的每个最优SQL语言表达对应的最优执行方案时,可以在多台机器上同时进行,实现分布式处理,提高处理效率。
第一个子任务的每个最优SQL语言表达都对应一个最优执行方案,从这些最优执行方案中,选择出执行消耗最小的作为最终执行方案。这样,在通过最终执行方式实现待完成任务时,执行消耗较小。
在图1中没有示出A1-A6。
在本发明一实施例中,所述从每个所述解决方案对应的至少一个SQL语言表达中,确定每个所述解决方案对应的最优SQL语言表达,包括:
针对每个所述解决方案对应的每个SQL语言表达,执行:
分别对当前解决方案的每个SQL语言表达进行编译,确定每个SQL语言表达的CPU占用率、内存的占用率、文件打开数量、打开的进程数、IO的等待时间、执行时间;
分别根据公式一确定当前解决方案的每个SQL语言表达的SQL执行消耗,所述公式一为:
其中,h为当前SQL语言表达的SQL执行消耗,c1为所述当前SQL语言表达的CPU占用率、n1为所述当前SQL语言表达的内存的占用率、w1为所述当前SQL语言表达的文件打开数量、j1为所述当前SQL语言表达的打开的进程数、d1为所述当前SQL语言表达的IO的等待时间、t1为所述当前SQL语言表达的执行时间,a1为CPU占用率的第一预设权重,a2为内存的占用率的第一预设权重,a3为IO的等待时间的第一预设权重,a4为执行时间的第一预设权重,a5为文件打开数量的第一预设权重,a6为打开的进程数的第一预设权重,T1为第一预设时间长度;
将SQL执行消耗最小的SQL语言表达作为所述当前解决方案对应的最优SQL语言表达。
在本发明实施例中,通过执行消耗来确定最优SQL语言表达。具体地,通过公式一来确定各个SQL语言表达的执行消耗。公式一中结合了CPU占用率、内存的占用率、文件打开数量、打开的进程数、IO的等待时间、执行时间这些因素来全面确定SQL语言表达的执行消耗,其中,CPU占用率和内存的占用率涉及对硬件消耗的考虑,文件打开数量和打开的进程数涉及对软件消耗的考虑,IO的等待时间和执行时间涉及时间消耗的考虑。另外,针对每个因素都设置有对应的权重,该权重可以根据需要来设置。例如:如果硬件资源充足,可以将CPU占用率和内存的占用率的权重设置的较小,较少的考虑硬件方面的消耗。
在本发明一实施例中,所述分别对当前解决方案的每个SQL语言表达进行编译,包括:
确定所述当前解决方案的每个SQL语言表达的运行机器;
分别将所述当前解决方案的每个SQL语言表达在对应的运行机器的优化器中运行。
在优化器中可以进行SQL语言表达的可行性分析与执行效率优化。
在本发明一实施例中,所述A3,包括:
针对所述当前子任务中的每个最优SQL语言表达,执行:
将所述当前子任务中的当前最优SQL语言表达与所述当前子任务之前的每个子任务的目标最优SQL语言表达按照对应的子任务的所述执行顺序进行组合,构成所述当前子任务中的当前最优SQL语言表达对应的待评估方案。
举例来说,待完成任务划分成三个子任务,分别是子任务A、子任务B、子任务C。执行顺序为:子任务A→子任务B→子任务C。当前子任务为子任务C,子任务A的目标最优SQL语言表达为SQL语言表达A,子任务B的目标最优SQL语言表达为SQL语言表达B,子任务C的当前最优SQL语言表达为SQL语言表达C。按照执行顺序,子任务A的SQL语言表达A排在第一个,子任务B的SQL语言表达B排在第二个,子任务C的SQL语言表达C排在第三个,SQL语言表达A、SQL语言表达B和SQL语言表达C构成了子任务C的当前最优SQL语言表达对应的待评估方案。
在本发明一实施例中,所述A4,包括:
针对所述当前子任务中的每个最优SQL语言表达对应的待评估方案,执行:
对当前待评估方案进行编译,确定所述当前待评估方案的CPU占用率、内存的占用率、IO的等待时间、文件打开数量、打开的进程数、执行时间;
根据公式二,确定所述当前待评估方案的评估执行消耗,所述公式二为:
其中,H为所述当前待评估方案的评估执行消耗,c2为所述当前待评估方案的CPU占用率、n2为所述当前待评估方案的内存的占用率、w2为所述当前待评估方案的文件打开数量、j2为所述当前待评估方案的打开的进程数、d2为所述当前待评估方案的IO的等待时间、t2为所述当前待评估方案的执行时间,b1为CPU占用率的第二预设权重,b2为内存的占用率的第二预设权重,b3为IO的等待时间的第二预设权重,b4为执行时间的第二预设权重,b5为文件打开数量的第二预设权重,b6为打开的进程数的第二预设权重,T2为第二预设时间长度。
在本发明实施例中,通过公式二来确定待评估方案的执行消耗。公式二中结合了CPU占用率、内存的占用率、文件打开数量、打开的进程数、IO的等待时间、执行时间这些因素来全面确定SQL语言表达的执行消耗,其中,CPU占用率和内存的占用率涉及对硬件消耗的考虑,文件打开数量和打开的进程数涉及对软件消耗的考虑,IO的等待时间和执行时间涉及时间消耗的考虑。另外,针对每个因素都设置有对应的权重,该权重可以根据需要来设置。例如:如果硬件资源充足,可以将CPU占用率和内存的占用率的权重设置的较小,较少的考虑硬件方面的消耗。
在本发明实施例中,机器语言语句可以为通过BUDS语言来实现。通过BUDS语言兼顾了对数据表达方式和数据应用方式两方面的优化考虑,以得到较为简洁的程序形式。无需人工确定最终执行方案,将人为选取数据应用方式所带来的不可预测性消除,避免了人为进行数据类型和数据应用选择的不确定性,从而降低了程序的设计难度,同时提高了结果的可用性。
由于机器语言的抽象级别较高,一般其内部的抽象数据类型与实际数据表达并无直接关系,因此在语言变换过程中会产生针对数据表达与存储的选择问题。在本发明实施例中,在进行语言变换(机器语言语句转换为SQL语言表达)时存储有关于实际物理存储空间大小等数据(可以存储在实现语言转换的优化器中),从而可以在执行之前保证所涉及方案的可实现性,减小了不可预知的风险度。将优化过程采用分布式的思想进行布置,不仅使思路更为明确,同时也大幅提高了解决问题的效率和速度。
举例来说,要解决一个问题,模型为:假设k个游客在n个城市之间旅游,共拜访m个餐馆。在模型中,每个游客不受外界干扰地在一个又一个城市之间旅游,一旦游客达到一个城市,他选择当地餐馆中的一个进行用餐,之后前去下一个城市,以此迭代进行。
BUDS语言表示如下
data{
k:range(individuals);
n:range(cities);
m:range(restaurants);
s:array[n]of real;
D:array[n,m]of real;
T:array[n,n]of real;
}
var{
c:array[k]of integer;
r:array[k]of integer;
}
Init{
for(j in 1:k){
c[j]<-categorical(s);
r[j]<-categorical(D[c(j)]);
}
}
for(j in 1:k){
c[j]<-categorical(T[c(j)]);
r[j]<-categorical(setEntry(D[c[j]],r[j],0.0);
}
优化编译之中:
定义向量变量STARTPROBS(DIM,VAL),其中DIM表示在向量变量中的位置,VAL表示对应位置上的数值大小,从而表示在各个城市开始迭代的可能性大小;同时设计标量变量INDIVIDUALS(PID)列出所有的游客。
则有如下算法:
在游客表中的每个元组i,对每个个体,函数对其进行初始化操作,即对STARTPROBS组中的所有城市的可能性进行参数化,从而随机地选出一个城市作为第一个迭代的地点,并存储至Res表之中。这个过程即可以设计为分布式计算方式。而当各个初始化操作完成之后,可对每个给定的游客i,最终的SELECT操作得到的结果,将被加入CITY表之中。在明确了当前的城市之后,接下来将所有游客转移到另外一个城市中。我们设计一个表CITYPROBS(FROM_CID,TO_CID,VAL),该表用来对T矩阵进行编码并给我们在城市之间转移的可能性,算法如下:
通过上述操作,则可以实现通过游客i所在的最后一个城市来决定转移到其他城市的可能性。
而对于数据表达的优化措施,以矩阵为例:可将矩阵表示为n×m个元素组成的表、一个n个m阶向量组成的表、一个m个n阶向量组成的表以及一个n×m阶的矩阵,并且可以由图以及相关程序的形式将其表示出来,如:
该段程序表示了实际程序中的字符串Str是怎么通过引入InName和OutName两个变量而建立的。将描述不同数据表现的程序引入评价函数,采取分布式计算方式,同步进行多个数据表现形式的评价计算,得到结果后选取较优的执行方案,从而得到实际效果最好的数据表达形式与物理存储形式。
在本发明实施例中,在分布式计算的模型上引入了综合分析数据表达形式和数据抽象操作两方面要求的优化操作,通过编译优化得到在实际执行过程中能够达到最小消耗的可行的最终执行方案,避免了在数据表达等层面由于人为选择而导致的不可预知的风险,同时采用分布式的操作方式,提高了解决问题的效率。
如图2所示,本发明实施例提供了一种确定任务的执行方案的装置,包括:
划分单元201,用于将待完成任务划分成至少一个子任务;
最优SQL确定单元202,用于确定每个所述子任务的至少一个解决方案,确定每个所述子任务的每个所述解决方案的机器语言语句;对每个所述解决方案的机器语言语句进行转换,生成每个所述机器语言语句对应的至少一个SQL语言表达;从每个所述解决方案对应的至少一个SQL语言表达中,确定每个所述解决方案对应的最优SQL语言表达;
顺序确定单元203,用于确定所述至少一个子任务的执行顺序;
执行方案确定单元204,针对所述执行顺序中第一个子任务的每个所述最优SQL语言表达,分别执行A1-A6:
A1:将第一个子任务的当前最优SQL语言表达作为第一个子任务的目标最优SQL语言表达;
A2:在所述执行顺序中,将所述第一个子任务的下一个子任务作为当前子任务;
A3:根据所述当前子任务中的每个最优SQL语言表达,以及,在所述执行顺序中所述当前子任务之前的每个子任务的目标最优SQL语言表达,确定所述当前子任务中的每个最优SQL语言表达对应的待评估方案;
A4:分别确定所述当前子任务中的每个最优SQL语言表达对应的待评估方案的评估执行消耗;
A5:将最小的评估执行消耗对应的所述当前子任务的最优SQL语言表达作为所述当前子任务的目标最优SQL语言表达;
A6:判断所述当前子任务是否是所述执行顺序中的最后一个子任务,如果是,则将所述当前子任务的目标最优SQL语言表达对应的待评估方案作为所述第一个子任务的当前最优SQL语言表达对应的最优执行方案,将所述当前子任务的目标最优SQL语言表达对应的待评估方案的评估执行消耗作为所述最优执行方案的方案执行消耗;否则,在所述执行顺序中,将所述当前子任务的下一个子任务作为当前子任务,返回A3;
最终方案确定单元205,用于从所述第一个子任务的每个最优SQL语言表达对应的最优执行方案中,确定方案执行消耗最小的最优执行方案为最终执行方案。
在本发明一实施例中,所述最优SQL确定单元,在执行所述从每个所述解决方案对应的至少一个SQL语言表达中,确定每个所述解决方案对应的最优SQL语言表达时,具体用于:
针对每个所述解决方案对应的每个SQL语言表达,执行:
分别对当前解决方案的每个SQL语言表达进行编译,确定每个SQL语言表达的CPU占用率、内存的占用率、文件打开数量、打开的进程数、IO的等待时间、执行时间;
分别根据公式一确定当前解决方案的每个SQL语言表达的SQL执行消耗,所述公式一为:
其中,h为当前SQL语言表达的SQL执行消耗,c1为所述当前SQL语言表达的CPU占用率、n1为所述当前SQL语言表达的内存的占用率、w1为所述当前SQL语言表达的文件打开数量、j1为所述当前SQL语言表达的打开的进程数、d1为所述当前SQL语言表达的IO的等待时间、t1为所述当前SQL语言表达的执行时间,a1为CPU占用率的第一预设权重,a2为内存的占用率的第一预设权重,a3为IO的等待时间的第一预设权重,a4为执行时间的第一预设权重,a5为文件打开数量的第一预设权重,a6为打开的进程数的第一预设权重,T1为第一预设时间长度;
将SQL执行消耗最小的SQL语言表达作为所述当前解决方案对应的最优SQL语言表达。
在本发明一实施例中,所述执行方案确定单元,在执行A3时,具体用于:
针对所述当前子任务中的每个最优SQL语言表达,执行:
将所述当前子任务中的当前最优SQL语言表达与所述当前子任务之前的每个子任务的目标最优SQL语言表达按照对应的子任务的所述执行顺序进行组合,构成所述当前子任务中的当前最优SQL语言表达对应的待评估方案。
在本发明一实施例中,所述执行方案确定单元,在执行A4时,具体用于:
针对所述当前子任务中的每个最优SQL语言表达对应的待评估方案,执行:
对当前待评估方案进行编译,确定所述当前待评估方案的CPU占用率、内存的占用率、IO的等待时间、文件打开数量、打开的进程数、执行时间;
根据公式二,确定所述当前待评估方案的评估执行消耗,所述公式二为:
其中,H为所述当前待评估方案的评估执行消耗,c2为所述当前待评估方案的CPU占用率、n2为所述当前待评估方案的内存的占用率、w2为所述当前待评估方案的文件打开数量、j2为所述当前待评估方案的打开的进程数、d2为所述当前待评估方案的IO的等待时间、t2为所述当前待评估方案的执行时间,b1为CPU占用率的第二预设权重,b2为内存的占用率的第二预设权重,b3为IO的等待时间的第二预设权重,b4为执行时间的第二预设权重,b5为文件打开数量的第二预设权重,b6为打开的进程数的第二预设权重,T2为第二预设时间长度。
在本发明一实施例中,所述最优SQL确定单元,在执行所述分别对当前解决方案的每个SQL语言表达进行编译时,具体用于:
确定所述当前解决方案的每个SQL语言表达的运行机器;
分别将所述当前解决方案的每个SQL语言表达在对应的运行机器的优化器中运行。
本发明各个实施例至少具有如下有益效果:
1、在本发明实施例中,将待完成任务拆分成至少一个子任务,每个子任务有至少一个解决方案,确定解决方案对应的机器语言语句,将每个机器语言语句转换成至少一个SQL语言表达,针对每个解决方案,确定出对应的最优SQL语言表达,从每个子任务的至少一个最优SQL语言表达中,确定出执行消耗最小的最终执行方案,该最终执行方案就是实现待完成任务的较优的执行方案,该过程能够自动完成,无需人工完成,能够更快的确定出较优的执行方案。
2、在本发明实施例中,通过执行消耗来确定最优SQL语言表达。具体地,通过公式一来确定各个SQL语言表达的执行消耗。公式一中结合了CPU占用率、内存的占用率、文件打开数量、打开的进程数、IO的等待时间、执行时间这些因素来全面确定SQL语言表达的执行消耗,其中,CPU占用率和内存的占用率涉及对硬件消耗的考虑,文件打开数量和打开的进程数涉及对软件消耗的考虑,IO的等待时间和执行时间涉及时间消耗的考虑。另外,针对每个因素都设置有对应的权重,该权重可以根据需要来设置。
3、在本发明实施例中,通过公式二来确定待评估方案的执行消耗。公式二中结合了CPU占用率、内存的占用率、文件打开数量、打开的进程数、IO的等待时间、执行时间这些因素来全面确定SQL语言表达的执行消耗,其中,CPU占用率和内存的占用率涉及对硬件消耗的考虑,文件打开数量和打开的进程数涉及对软件消耗的考虑,IO的等待时间和执行时间涉及时间消耗的考虑。另外,针对每个因素都设置有对应的权重,该权重可以根据需要来设置。
4、在本发明实施例中,在分布式计算的模型上引入了综合分析数据表达形式和数据抽象操作两方面要求的优化操作,通过编译优化得到在实际执行过程中能够达到最小消耗的可行的最终执行方案,避免了在数据表达等层面由于人为选择而导致的不可预知的风险,同时采用分布式的操作方式,提高了解决问题的效率。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种确定任务的执行方案的方法,其特征在于,包括:
将待完成任务划分成至少一个子任务;
确定每个所述子任务的至少一个解决方案,确定每个所述子任务的每个所述解决方案的机器语言语句;
对每个所述解决方案的机器语言语句进行转换,生成每个所述机器语言语句对应的至少一个SQL语言表达;
从每个所述解决方案对应的至少一个SQL语言表达中,确定每个所述解决方案对应的最优SQL语言表达;
确定所述至少一个子任务的执行顺序;
针对所述执行顺序中第一个子任务的每个所述最优SQL语言表达,分别执行A1-A6:
A1:将第一个子任务的当前最优SQL语言表达作为第一个子任务的目标最优SQL语言表达;
A2:在所述执行顺序中,将所述第一个子任务的下一个子任务作为当前子任务;
A3:根据所述当前子任务中的每个最优SQL语言表达,以及,在所述执行顺序中所述当前子任务之前的每个子任务的目标最优SQL语言表达,确定所述当前子任务中的每个最优SQL语言表达对应的待评估方案;
A4:分别确定所述当前子任务中的每个最优SQL语言表达对应的待评估方案的评估执行消耗;
A5:将最小的评估执行消耗对应的所述当前子任务的最优SQL语言表达作为所述当前子任务的目标最优SQL语言表达;
A6:判断所述当前子任务是否是所述执行顺序中的最后一个子任务,如果是,则将所述当前子任务的目标最优SQL语言表达对应的待评估方案作为所述第一个子任务的当前最优SQL语言表达对应的最优执行方案,将所述当前子任务的目标最优SQL语言表达对应的待评估方案的评估执行消耗作为所述最优执行方案的方案执行消耗;否则,在所述执行顺序中,将所述当前子任务的下一个子任务作为当前子任务,返回A3;
从所述第一个子任务的每个最优SQL语言表达对应的最优执行方案中,确定方案执行消耗最小的最优执行方案为最终执行方案。
2.根据权利要求1所述的方法,其特征在于,
所述从每个所述解决方案对应的至少一个SQL语言表达中,确定每个所述解决方案对应的最优SQL语言表达,包括:
针对每个所述解决方案对应的每个SQL语言表达,执行:
分别对当前解决方案的每个SQL语言表达进行编译,确定每个SQL语言表达的CPU占用率、内存的占用率、文件打开数量、打开的进程数、IO的等待时间、执行时间;
分别根据公式一确定当前解决方案的每个SQL语言表达的SQL执行消耗,所述公式一为:
其中,h为当前SQL语言表达的SQL执行消耗,c1为所述当前SQL语言表达的CPU占用率、n1为所述当前SQL语言表达的内存的占用率、w1为所述当前SQL语言表达的文件打开数量、j1为所述当前SQL语言表达的打开的进程数、d1为所述当前SQL语言表达的IO的等待时间、t1为所述当前SQL语言表达的执行时间,a1为CPU占用率的第一预设权重,a2为内存的占用率的第一预设权重,a3为IO的等待时间的第一预设权重,a4为执行时间的第一预设权重,a5为文件打开数量的第一预设权重,a6为打开的进程数的第一预设权重,T1为第一预设时间长度;
将SQL执行消耗最小的SQL语言表达作为所述当前解决方案对应的最优SQL语言表达。
3.根据权利要求1或2所述的方法,其特征在于,
所述A3,包括:
针对所述当前子任务中的每个最优SQL语言表达,执行:
将所述当前子任务中的当前最优SQL语言表达与所述当前子任务之前的每个子任务的目标最优SQL语言表达按照对应的子任务的所述执行顺序进行组合,构成所述当前子任务中的当前最优SQL语言表达对应的待评估方案。
4.根据权利要求3所述的方法,其特征在于,
所述A4,包括:
针对所述当前子任务中的每个最优SQL语言表达对应的待评估方案,执行:
对当前待评估方案进行编译,确定所述当前待评估方案的CPU占用率、内存的占用率、IO的等待时间、文件打开数量、打开的进程数、执行时间;
根据公式二,确定所述当前待评估方案的评估执行消耗,所述公式二为:
其中,H为所述当前待评估方案的评估执行消耗,c2为所述当前待评估方案的CPU占用率、n2为所述当前待评估方案的内存的占用率、w2为所述当前待评估方案的文件打开数量、j2为所述当前待评估方案的打开的进程数、d2为所述当前待评估方案的IO的等待时间、t2为所述当前待评估方案的执行时间,b1为CPU占用率的第二预设权重,b2为内存的占用率的第二预设权重,b3为IO的等待时间的第二预设权重,b4为执行时间的第二预设权重,b5为文件打开数量的第二预设权重,b6为打开的进程数的第二预设权重,T2为第二预设时间长度。
5.根据权利要求2所述的方法,其特征在于,
所述分别对当前解决方案的每个SQL语言表达进行编译,包括:
确定所述当前解决方案的每个SQL语言表达的运行机器;
分别将所述当前解决方案的每个SQL语言表达在对应的运行机器的优化器中运行。
6.一种确定任务的执行方案的装置,其特征在于,包括:
划分单元,用于将待完成任务划分成至少一个子任务;
最优SQL确定单元,用于确定每个所述子任务的至少一个解决方案,确定每个所述子任务的每个所述解决方案的机器语言语句;对每个所述解决方案的机器语言语句进行转换,生成每个所述机器语言语句对应的至少一个SQL语言表达;从每个所述解决方案对应的至少一个SQL语言表达中,确定每个所述解决方案对应的最优SQL语言表达;
顺序确定单元,用于确定所述至少一个子任务的执行顺序;
执行方案确定单元,针对所述执行顺序中第一个子任务的每个所述最优SQL语言表达,分别执行A1-A6:
A1:将第一个子任务的当前最优SQL语言表达作为第一个子任务的目标最优SQL语言表达;
A2:在所述执行顺序中,将所述第一个子任务的下一个子任务作为当前子任务;
A3:根据所述当前子任务中的每个最优SQL语言表达,以及,在所述执行顺序中所述当前子任务之前的每个子任务的目标最优SQL语言表达,确定所述当前子任务中的每个最优SQL语言表达对应的待评估方案;
A4:分别确定所述当前子任务中的每个最优SQL语言表达对应的待评估方案的评估执行消耗;
A5:将最小的评估执行消耗对应的所述当前子任务的最优SQL语言表达作为所述当前子任务的目标最优SQL语言表达;
A6:判断所述当前子任务是否是所述执行顺序中的最后一个子任务,如果是,则将所述当前子任务的目标最优SQL语言表达对应的待评估方案作为所述第一个子任务的当前最优SQL语言表达对应的最优执行方案,将所述当前子任务的目标最优SQL语言表达对应的待评估方案的评估执行消耗作为所述最优执行方案的方案执行消耗;否则,在所述执行顺序中,将所述当前子任务的下一个子任务作为当前子任务,返回A3;
最终方案确定单元,用于从所述第一个子任务的每个最优SQL语言表达对应的最优执行方案中,确定方案执行消耗最小的最优执行方案为最终执行方案。
7.根据权利要求6所述的装置,其特征在于,
所述最优SQL确定单元,在执行所述从每个所述解决方案对应的至少一个SQL语言表达中,确定每个所述解决方案对应的最优SQL语言表达时,具体用于:
针对每个所述解决方案对应的每个SQL语言表达,执行:
分别对当前解决方案的每个SQL语言表达进行编译,确定每个SQL语言表达的CPU占用率、内存的占用率、文件打开数量、打开的进程数、IO的等待时间、执行时间;
分别根据公式一确定当前解决方案的每个SQL语言表达的SQL执行消耗,所述公式一为:
其中,h为当前SQL语言表达的SQL执行消耗,c1为所述当前SQL语言表达的CPU占用率、n1为所述当前SQL语言表达的内存的占用率、w1为所述当前SQL语言表达的文件打开数量、j1为所述当前SQL语言表达的打开的进程数、d1为所述当前SQL语言表达的IO的等待时间、t1为所述当前SQL语言表达的执行时间,a1为CPU占用率的第一预设权重,a2为内存的占用率的第一预设权重,a3为IO的等待时间的第一预设权重,a4为执行时间的第一预设权重,a5为文件打开数量的第一预设权重,a6为打开的进程数的第一预设权重,T1为第一预设时间长度;
将SQL执行消耗最小的SQL语言表达作为所述当前解决方案对应的最优SQL语言表达。
8.根据权利要求6或7所述的装置,其特征在于,
所述执行方案确定单元,在执行A3时,具体用于:
针对所述当前子任务中的每个最优SQL语言表达,执行:
将所述当前子任务中的当前最优SQL语言表达与所述当前子任务之前的每个子任务的目标最优SQL语言表达按照对应的子任务的所述执行顺序进行组合,构成所述当前子任务中的当前最优SQL语言表达对应的待评估方案。
9.根据权利要求8所述的装置,其特征在于,
所述执行方案确定单元,在执行A4时,具体用于:
针对所述当前子任务中的每个最优SQL语言表达对应的待评估方案,执行:
对当前待评估方案进行编译,确定所述当前待评估方案的CPU占用率、内存的占用率、IO的等待时间、文件打开数量、打开的进程数、执行时间;
根据公式二,确定所述当前待评估方案的评估执行消耗,所述公式二为:
其中,H为所述当前待评估方案的评估执行消耗,c2为所述当前待评估方案的CPU占用率、n2为所述当前待评估方案的内存的占用率、w2为所述当前待评估方案的文件打开数量、j2为所述当前待评估方案的打开的进程数、d2为所述当前待评估方案的IO的等待时间、t2为所述当前待评估方案的执行时间,b1为CPU占用率的第二预设权重,b2为内存的占用率的第二预设权重,b3为IO的等待时间的第二预设权重,b4为执行时间的第二预设权重,b5为文件打开数量的第二预设权重,b6为打开的进程数的第二预设权重,T2为第二预设时间长度。
10.根据权利要求7所述的装置,其特征在于,
所述最优SQL确定单元,在执行所述分别对当前解决方案的每个SQL语言表达进行编译时,具体用于:
确定所述当前解决方案的每个SQL语言表达的运行机器;
分别将所述当前解决方案的每个SQL语言表达在对应的运行机器的优化器中运行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810232894.5A CN108520011B (zh) | 2018-03-21 | 2018-03-21 | 一种确定任务的执行方案的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810232894.5A CN108520011B (zh) | 2018-03-21 | 2018-03-21 | 一种确定任务的执行方案的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108520011A CN108520011A (zh) | 2018-09-11 |
CN108520011B true CN108520011B (zh) | 2020-12-04 |
Family
ID=63432929
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810232894.5A Active CN108520011B (zh) | 2018-03-21 | 2018-03-21 | 一种确定任务的执行方案的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108520011B (zh) |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9171041B1 (en) * | 2011-09-29 | 2015-10-27 | Pivotal Software, Inc. | RLE-aware optimization of SQL queries |
US9329899B2 (en) * | 2013-06-24 | 2016-05-03 | Sap Se | Parallel execution of parsed query based on a concurrency level corresponding to an average number of available worker threads |
CN103778185A (zh) * | 2013-12-27 | 2014-05-07 | 北京天融信软件有限公司 | 一种用于数据库审计系统的sql语句解析方法和系统 |
US20160055257A1 (en) * | 2014-08-20 | 2016-02-25 | Sachin Sinha | Method and system for adaptive pre-fetching of pages into a buffer pool |
CN105824957B (zh) * | 2016-03-30 | 2019-09-03 | 电子科技大学 | 分布式内存列式数据库的查询引擎系统及查询方法 |
CN107133281B (zh) * | 2017-04-14 | 2020-12-15 | 浙江鸿程计算机系统有限公司 | 一种基于分组的全局多查询优化方法 |
-
2018
- 2018-03-21 CN CN201810232894.5A patent/CN108520011B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN108520011A (zh) | 2018-09-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11468366B2 (en) | Parallel development and deployment for machine learning models | |
JP7439109B2 (ja) | 量子回路の最適化 | |
Wang et al. | SINGA: Putting deep learning in the hands of multimedia users | |
JP5242378B2 (ja) | パイプライン・オプティマイザ・システム | |
CN108292241A (zh) | 处理计算图 | |
JP2016012285A (ja) | 情報処理装置、情報処理方法、及びプログラム | |
CN113723589A (zh) | 混合精度神经网络 | |
CN116301904B (zh) | 一种用于深度学习编译器的算子优化加速方法及装置 | |
CN115129386A (zh) | 用于神经网络部署和执行的有效优化 | |
Lloyd et al. | Analysis of independent roulette selection in parallel ant colony optimization | |
US11551095B2 (en) | Sharing preprocessing, computations, and hardware resources between multiple neural networks | |
JP2022546271A (ja) | カーネルチューニングパラメータを予測するための方法及び装置 | |
US20230051237A1 (en) | Determining material properties based on machine learning models | |
JP2023007366A (ja) | 分子構造取得方法、装置、電子デバイス及び記憶媒体 | |
US20160224902A1 (en) | Parallel gibbs sampler using butterfly-patterned partial sums | |
CN108520011B (zh) | 一种确定任务的执行方案的方法及装置 | |
CN111448545B (zh) | 并行处理设备和进行并行多值归约的方法 | |
CN111985631B (zh) | 信息处理设备、信息处理方法及计算机可读记录介质 | |
US11704562B1 (en) | Architecture for virtual instructions | |
Zhang et al. | Learning driven parallelization for large-scale video workload in hybrid CPU-GPU cluster | |
Miao et al. | Cuwide: Towards efficient flow-based training for sparse wide models on gpus | |
EP4348507A1 (en) | Scaling deep graph learning in distributed setting | |
Wang et al. | Hetrocv: Auto-tuning framework and runtime for image processing and computer vision applications on heterogeneous platform | |
Sreedhar et al. | Efficient training of convolutional neural nets on large distributed systems | |
US20230153568A1 (en) | Graph neural network accelerator with negative sampling |
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 |