CN112035523A - 一种并行度的确定方法、装置、设备及存储介质 - Google Patents
一种并行度的确定方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN112035523A CN112035523A CN202010865389.1A CN202010865389A CN112035523A CN 112035523 A CN112035523 A CN 112035523A CN 202010865389 A CN202010865389 A CN 202010865389A CN 112035523 A CN112035523 A CN 112035523A
- Authority
- CN
- China
- Prior art keywords
- plan
- sub
- parallelism
- output data
- current sub
- 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
- 238000000034 method Methods 0.000 title claims abstract description 59
- 238000004364 calculation method Methods 0.000 claims description 11
- 238000004590 computer program Methods 0.000 claims description 6
- 238000004458 analytical method Methods 0.000 claims description 2
- 230000008569 process Effects 0.000 abstract description 22
- 230000006870 function Effects 0.000 description 7
- 238000007726 management method Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 3
- 101150044561 SEND1 gene Proteins 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24532—Query optimisation of parallel queries
-
- 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
- G06F16/24534—Query rewriting; Transformation
- G06F16/24542—Plan optimisation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Operations Research (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明实施例公开了一种并行度的确定方法、装置、设备及存储介质。该方法包括:确定执行计划树所包含的各子计划的初始并行度;根据当前子计划的初始并行度,调度当前子计划;当前子计划调度完成时,如果当前子计划的实际输出数据行数满足预设条件,根据当前子计划的实际输出数据行数调整执行计划树中与当前子计划关联且未被调度的子计划的初始并行度;继续调度下一个子计划,直至执行计划树所包含的子计划调度完毕。上述方案在调度执行过程中,根据已调度子计划的实际输出数据行数动态调整与其关联且未被调度的子计划的并行度,有效解决了现有技术无法灵活调整并行度的问题,实现了对***资源的有效利用,提升了执行效率。
Description
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种并行度的确定方法、装置、设备及存储介质。
背景技术
随着大数据时代的到来,***处理的数据量越来越大,如何从海量数据中获取需要的数据并及时作相应处理成为一个难题。
在数据库管理***中,并行执行是解决该难题的有效手段。所谓并行执行是同时开启多个线程或进程来共同完成一个任务。在数据库管理***中,并行度决定了同时开启线程或进程的数量,是影响并行执行效率和稳定性的关键因素。例如并行度太大意味着单个任务处理的数据量较小,以至于每个执行单元的能力得不到充分利用,同时存在资源被占用、调度开销大等弊端;并行度太小又会导致单个任务过重,***CPU压力过大,硬件资源得不到充分利用且***响应时间过大。因此如何有效确定并行度是数据库管理***面对分析型应用场景需要解决的重要问题。
传统的并行度确定方式得到的并行度通常比较固定,灵活性较差。
发明内容
本发明实施例提供一种并行度的确定方法、装置、设备及存储介质,提高并行度调度的灵活性。
第一方面,本发明实施例提供了一种并行度的确定方法,包括:
确定执行计划树所包含的各子计划的初始并行度,所述执行计划树通过对用户输入的查询语句解析生成;
根据当前子计划的初始并行度,调度所述当前子计划;
所述当前子计划调度完成时,如果所述当前子计划的实际输出数据行数满足预设条件,根据所述当前子计划的实际输出数据行数调整所述执行计划树中与所述当前子计划关联且未被调度的子计划的初始并行度;
继续调度下一个子计划,直至所述执行计划树所包含的子计划调度完毕。
第二方面,本发明实施例还提供了一种并行度的确定装置,包括:
并行度确定模块,用于确定执行计划树所包含的各子计划的初始并行度,所述执行计划树通过对用户输入的查询语句解析生成;
调度模块,用于根据当前子计划的初始并行度,调度所述当前子计划;
并行度调整模块,用于所述当前子计划调度完成时,如果所述当前子计划的实际输出数据行数满足预设条件,根据所述当前子计划的实际输出数据行数调整所述执行计划树中与所述当前子计划关联且未被调度的子计划的初始并行度;
所述调度模块,用于继续调度下一个子计划,直至所述执行计划树所包含的子计划调度完毕。
第三方面,本发明实施例还提供了一种计算机设备,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如第一方面所述的并行度的确定方法。
第四方面,本发明实施例还提供了一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现如第一方面所述的并行度的确定方法。
本发明实施例提供一种并行度的确定方法、装置、设备及存储介质,通过确定执行计划树所包含的各子计划的初始并行度,所述执行计划树通过对用户输入的查询语句解析生成;根据当前子计划的初始并行度,调度所述当前子计划;所述当前子计划调度完成时,如果所述当前子计划的实际输出数据行数满足预设条件,根据所述当前子计划的实际输出数据行数调整所述执行计划树中与所述当前子计划关联且未被调度的子计划的初始并行度;继续调度下一个子计划,直至所述执行计划树所包含的子计划调度完毕。上述方案在调度执行过程中,根据已调度子计划的实际输出数据行数动态调整与其关联且未被调度的子计划的并行度,有效解决了现有技术无法灵活调整并行度的问题,实现了对***资源的有效利用,提升了执行效率。
附图说明
图1为本发明实施例一提供的一种并行度的确定方法的流程图;
图2为本发明实施例一提供的一种执行计划树的示意图;
图3为本发明实施例二提供的一种并行度的确定方法的流程图;
图4为本发明实施例三提供的一种并行度的确定装置的结构图;
图5为本发明实施例四提供的一种计算机设备的结构图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作(或步骤)描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。此外,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
实施例一
图1为本发明实施例一提供的一种并行度的确定方法的流程图,本实施例可适用于并行查询数据的情况,该方法可以由并行度的确定装置来执行,该装置可以由软件和/或硬件的方式来实现,并可集成在具备数据处理功能的计算机设备中。参考图1,该方法可以包括如下步骤:
S110、确定执行计划树所包含的各子计划的初始并行度,所述执行计划树通过对用户输入的查询语句解析生成。
查询语句用于查询数据库中符合查询条件的数据,本实施例对查询语句的形式以及查询条件不进行限定,例如可以是SELECT*FROM T1,T2,T3 WHERE T1.C1=T2.D1 ANDT2.D2=T3.E2 AND T1.C2<>10,表示查询三个数据表T1、T2和T3的数据,查询条件为T1.C1=T2.D1 AND T2.D2=T3.E2 AND T1.C2<>10。执行计划树用于指示查询语句的执行顺序,可以对查询语句进行词法、语法和语义解析,生成执行计划树。通常情况下,一个查询语句可以对应多个可行的执行计划树,本实施例从多个执行计划树中选择代价最小的作为执行依据。
示例性的,参考图2,图2为本发明实施例一提供的一种执行计划树的示意图。该执行计划树是通过解析上述查询语句得到的代价最小的执行计划树。其中,TABLE SCAN为表扫描操作符,用于扫描数据表的数据,例如TABLE SCAN(T1)表示扫描数据表T1中的数据。FILTER为过滤操作符,SEND表示发送数据操作符,RECV表示接收数据操作符,JOIN表示连接操作符,HASH JOIN表示哈希连接操作符。
子计划是基于接收数据操作符和发送数据操作符对执行计划树拆分得到的部分执行过程,每个子计划包含一个发送数据操作符,一个或多个接收数据操作符,例如图2所示的执行计划树包括5个子计划,考虑到表扫描操作符是从数据存储页中获取数据,接收数据操作符是接收其他操作符发送的数据,本实施例将表扫描操作符视为一种特殊的接收数据操作符。按照图2所示的执行计划树,可以先分别执行子计划3和子计划2,然后对子计划3和子计划2的输出结果执行哈希连接,并将输出结果发送给子计划4,最终由子计划4对子计划1和子计划5的输出结果执行哈希连接,输出查询结果。各子计划的输出结果即各子计划中发送数据操作符SEND的输出结果,例如子计划2的输出结果为发送数据操作符SEND1的输出结果。
并行度是同时启动用于执行子计划的线程或进程的数量,每个子计划具有独立的并行度。影响并行度的因素有很多,例如子计划的代价、子计划中接收数据操作符的输出数据行数、***当前可用的资源信息以及对该用户的资源限制信息等。在一个示例中,可以根据子计划所包含的接收数据操作符的数据输出行数结合***当前可用的资源信息以及对用户的资源限制信息确定并行度。其中,***当前可用的资源信息可以是***当前可用资源占总的可用资源的百分比,对用户的资源限制信息可以在用户登录***的时候基于用户的权限确定。初始并行度是基于接收数据操作符的估算数据输出行数结合***当前可用的资源信息以及对用户的资源限制信息确定的。示例性的,如图2所示,子计划2的初始并行度为2,子计划3和子计划5的初始并行度为3,子计划1的初始并行度为4,子计划4的初始并行度为6。
S120、根据当前子计划的初始并行度,调度所述当前子计划。
如图2所示的执行计划中各子计划的调度顺序可以是启动子计划1和子计划2,两者形成数据流水;子计划2执行结束后调度子计划3,此时子计划1和子计划3形成数据流水;当子计划1第一次输出结果时,子计划4被调度;子计划3执行结束后,子计划1也会结束,此时可以调度子计划5,子计划4和子计划5形成新的数据流水。具体的,可以按照调度顺序,根据当前子计划的初始并行度启动一组线程,实现对当前子计划的调度。
需要说明的是,调度时总是确保生产者子计划和消费者子计划被同时启动,本实施例将相互关联且位于执行计划树下层的子计划称为生产者子计划,将位于上层的子计划称为消费者子计划。生产者子计划和消费者子计划是相对的,在一个执行计划树中,生产者子计划也可以作为消费者子计划,消费者子计划也可以作为生产者子计划。例如图2的子计划2和子计划3相对于子计划1是生产者子计划,子计划1相对于子计划2和子计划3是消费者子计划。再如,子计划1相对于子计划4是生产者子计划,子计划4相对于子计划1是消费者子计划。
S130、所述当前子计划调度完成时,如果所述当前子计划的实际输出数据行数满足预设条件,根据所述当前子计划的实际输出数据行数调整所述执行计划树中与所述当前子计划关联且未被调度的子计划的初始并行度。
上层子计划的并行度受其生产者子计划的输出数据行数的影响,例如图2中子计划1的并行度受子计划2输出数据行数的影响,子计划4的并行度受子计划1输出数据行数的影响。当前子计划调度完成后,即可得到当前子计划的实际输出数据行数,当前子计划的实际输出数据行数为当前子计划中发送数据操作符的实际输出数据行数,例如子计划3的实际输出数据行数为子计划3中发送数据操作符SEND2的实际输出数据行数。
预设条件可以根据实际情况设定,例如可以是(C'-C)/C>k,其中,C'为当前子计划的实际输出数据行数,C为当前子计划的估算输出数据行数,k为设定阈值。具体的,当当前子计划的实际输出数据行数满足上述条件时,重新确定与当前子计划关联且未被调度的子计划的并行度,作为调整后的初始并行度。重新确定子计划并行度的过程与上述初始并行度的确定过程类似。如图2所示,假定子计划2执行结束后其实际输出数据行数满足上述条件,则修正子计划1和子计划4中各操作符的估算数据输出行数,由于子计划1已被调度,而子计划4尚未被调度,则根据子计划4中接收数据操作符RECV1修正后的估算数据输出行数重新确定子计划4的并行度,实现了对未调度子计划并行度的动态调整,充分利用了***资源。
S140、继续调度下一个子计划,直至所述执行计划树所包含的子计划调度完毕。
本发明实施例一提供一种并行度的确定方法,通过确定执行计划树所包含的各子计划的初始并行度,所述执行计划树通过对用户输入的查询语句解析生成;根据当前子计划的初始并行度,调度所述当前子计划;所述当前子计划调度完成时,如果所述当前子计划的实际输出数据行数满足预设条件,根据所述当前子计划的实际输出数据行数调整所述执行计划树中与所述当前子计划关联且未被调度的子计划的初始并行度;继续调度下一个子计划,直至所述执行计划树所包含的子计划调度完毕。该方法在调度执行过程中,根据已调度子计划的实际输出数据行数动态调整与其关联且未被调度的子计划的并行度,有效解决了现有技术无法灵活调整并行度的问题,实现了对***资源的有效利用,提升了执行效率。
实施例二
图3为本发明实施例二提供的一种并行度的确定方法的流程图,本实施例是在上述实施例的基础上进行优化,参考图3,该方法可以包括如下步骤:
S210、根据所述执行计划树中各操作符对应的输出行数估算公式,确定所述操作符的估算输出数据行数。
初始并行度根据子计划所包含操作符的估算数据输出行数确定,因此在确定初始并行度之前需要先确定执行计划树中各操作符的估算输出数据行数。其中,执行计划树包含的操作符可以预先确定,本实施例对操作符的确定过程不进行限定。执行计划树所包含的每个子计划至少包括数据交换操作符,数据交换操作符包括一个发送数据操作符和至少一个接收数据操作符。除了数据交换操作符,各子计划还可以根据需要包含其他操作符,例如图2中的子计划2除了包括数据交换操作符,还包括过滤操作符,子计划1和子计划4还包括哈希连接操作符。
输出行数估算公式用于估算子计划中各操作符的输出数据行数,是数据库管理***的一项重要功能,不同的操作符可以对应不同的输出行数估算公式。例如对于投影、排序、窗口函数以及发送数据操作符、接收数据操作符,它们并不会更改接收到的数据行数,可以认为输出数据行数等于输入数据行数;再如对于过滤操作符,其输出数据行数可以等于输入数据行数与选择率的乘积,选择率可以针对过滤条件根据统计信息或经验值估算得到;再如连接操作符的输出数据行数可以根据左右孩子操作符的输出数据行数,结合连接条件和连接条件中列的统计信息计算得到。
由于不同的数据库管理***对输出数据行数的估算方式不同,本实施例对输出数据估算公式的具体实现不进行限定。实际应用时,可以根据执行计划树中各子计划包含的操作符以及采用的数据库管理***,选择合适的输出行数估算公式,进而根据选择的输出行数估算公式从执行计划树的最底层开始估算对应操作符的输出数据行数,得到估算输出数据行数。示例性的,参考图2,可以从子计划2的表扫描操作符TABLE SCAN开始估算其输出数据行数,然后估算过滤操作操作符FILTER的输出数据行数,最后得到发送数据操作符SEND1的估算输出数据行数;同样,子计划3也从表扫描操作符TABLE SCAN开始估算其输出数据行数,最终得到发送数据操作符SEND2的估算输出数据行数;之后可以估算子计划1中每个操作符的输出数据行数,直至完成整个执行计划树的所有操作符输出数据行数的估算。
S220、根据各子计划所包含的接收数据操作符的估算输出数据行数、***当前可用的资源信息以及对所述用户的资源限制信息,确定各子计划的初始并行度。
可选的,可以根据并行度计算公式以及各子计划所包含的接收数据操作符的估算输出数据行数、***当前可用的资源信息以及对所述用户的资源限制信息,确定各子计划的初始并行度;
所述并行度计算公式为:
PARALLEL(X)=f_parallel(C1,C2,...,Cn,R1,R2)
其中,X表示子计划,PARALLEL(X)表示子计划X的并行度,Cn为接收数据操作符的估算输出数据行数,n为接收数据操作符的数量,R1为***当前可用的资源信息,R2为对所述用户的资源限制信息。当然还可以采用其他并行度计算公式,本实施例不进行限定。示例性的,参考图2,子计划2的并行度可以表示为PARALLEL(子计划2)=f_parallel(C1,R1,R2),其中,C1为子计划2中表扫描操作符TABLE SCAN(T1)的估算输出数据行数。子计划1的并行度可以表示为PARALLEL(子计划1)=f_parallel(C1,C2,R1,R2),其中,C1和C2分别为子计划1中接收数据操作符RECV1和接收数据操作符RECV2的估算输出数据行数。
S230、根据当前子计划的初始并行度,调度所述当前子计划。
S240、所述当前子计划调度完成时,所述当前子计划的实际输出数据行数是否满足预设条件,若是,执行S250,否则执行S260。
本实施例的预设条件以当前子计划的实际输出数据行数和其估算输出数据行数的差值与其估算输出数据行数的比值大于设定阈值为例,设定阈值的大小可以根据需要选择。当前子计划调度完成后,如果其实际输出数据行数满足上述预设条件,则动态调整未被调度的子计划的初始并行度,否则,继续调度下一个子计划。
S250、根据所述当前子计划的实际输出数据行数调整所述执行计划树中与所述当前子计划关联且未被调度的子计划的初始并行度。
本实施例在执行过程中根据已调度子计划的实际输出结果动态调整尚未调度的子计划的并行度,能够更加有效的利用***资源,提升执行效率,而且不会对整个执行计划树的执行造成影响。在一个示例中,可以通过如下方式调整与所述当前子计划关联且未被调度的子计划的初始并行度:
从所述当前子计划的根节点操作符开始向上遍历所述执行计划树,确定所述执行计划树中与所述当前子计划关联的子计划;
根据所述当前子计划的实际输出数据行数修正与所述当前子计划关联的子计划的估算输出数据行数;
根据修正后的估算输出数据行数、***当前可用的资源信息以及对所述用户的资源限制信息,确定与所述当前子计划关联且未被调度的子计划的并行度,作为调整后的初始并行度。
具体的,当当前子计划的实际输出数据行数满足预设条件时,从当前子计划的根节点操作符开始向上遍历执行计划树,确定上层子计划中与当前子计划关联的子计划,其中,根节点操作符是当前子计划中最上层的操作符。例如当前子计划为子计划2,其根节点操作符为发送数据操作符SEND1,则从发送数据操作符SEND1开始向上遍历执行计划树,得到与当前子计划关联且位于当前子计划的上层的子计划包括子计划1和子计划4,其中子计划4尚未被调度。根据当前子计划的实际输出数据行数修正遍历到的子计划中各操作符的估算数据输出行数,修正过程与估算数据输出行数的确定过程类似。如果当前遍历到的子计划尚未被调度,则调用上述的并行度计算公式,根据修正后的估算输出数据行数调整其初始并行度,调整过程与初始并行度的确定过程类似。
示例性的,假定子计划2执行结束后,其实际输出数据行数满足预设条件,则递归计算子计划1和子计划4中每个操作符修正后的估算数据输出行数,由于子计划1已被调度,其并行度不会更改,而子计划4尚未被调度,则根据并行度计算公式重新计算子计划4的并行度,PARALLEL(子计划4)=f_parallel(C1’,C2,R1’,R2’),其中C1’为子计划4中修正后的接收数据操作符RECV1的估算输出数据行数,也即子计划1的估算输出数据行数,C2为之前估算的子计划5的估算输出数据行数,R1’为修正后的***当前可用的资源信息,R2’为修正后的对所述用户的资源限制信息。
S260、继续调度下一个子计划,直至所述执行计划树所包含的子计划调度完毕。
本发明实施例二提供一种并行度的确定方法,在上述实施例的基础上,根据已调度子计划的实际输出结果动态调整与其关联且尚未调度的子计划的并行度,有效解决了现有技术在执行过程中并行度保持不变,无法根据实际情况动态调整的问题,能够更加有效的利用***资源,提升了执行效率,且不会对整个执行计划树的执行造成影响。
本实施例中各子计划的具体调度管理可以由各自的子调度管理器(Sub QueryCoordinator,SQC)负责,SQC按照指定的并行度启动一组线程,当这一组线程全部工作结束后SQC向总调度管理器(Query Coordinator,QC)报告,以使QC根据SQC反馈的当前子计划的实输出数据行数动态调整尚未调度的子计划的并行度。
实施例三
图4为本发明实施例三提供的一种并行度的确定装置的结构图,该装置可以执行上述实施例的并行度的确定方法,参考图4,该装置包括:
并行度确定模块31,用于确定执行计划树所包含的各子计划的初始并行度,所述执行计划树通过对用户输入的查询语句解析生成;
调度模块32,用于根据当前子计划的初始并行度,调度所述当前子计划;
并行度调整模块33,用于所述当前子计划调度完成时,如果所述当前子计划的实际输出数据行数满足预设条件,根据所述当前子计划的实际输出数据行数调整所述执行计划树中与所述当前子计划关联且未被调度的子计划的初始并行度。
调度模块32,还用于继续调度下一个子计划,直至所述执行计划树所包含的子计划调度完毕。
本发明实施例三提供一种并行度的确定装置,通过确定执行计划树所包含的各子计划的初始并行度,所述执行计划树通过对用户输入的查询语句解析生成;根据当前子计划的初始并行度,调度所述当前子计划;所述当前子计划调度完成时,如果所述当前子计划的实际输出数据行数满足预设条件,根据所述当前子计划的实际输出数据行数调整所述执行计划树中与所述当前子计划关联且未被调度的子计划的初始并行度;继续调度下一个子计划,直至所述执行计划树所包含的子计划调度完毕。该装置在调度执行过程中,根据已调度子计划的实际输出数据行数动态调整与其关联且未被调度的子计划的并行度,有效解决了现有技术无法灵活调整并行度的问题,实现了对***资源的有效利用,提升了执行效率。
在上述实施例的基础上,并行度确定模块31,包括:
行数确定单元,用于根据所述执行计划树中各操作符对应的输出行数估算公式,确定所述操作符的估算输出数据行数;
并行度确定单元,用于根据各子计划所包含的接收数据操作符的估算输出数据行数、***当前可用的资源信息以及对所述用户的资源限制信息,确定各子计划的初始并行度。
在上述实施例的基础上,并行度调整模块33,具体用于:
如果所述当前子计划的实际输出数据行数和所述当前子计划的估算输出数据行数的差值与所述估算输出数据行数的比值大于设定阈值,从所述当前子计划的根节点操作符开始向上遍历所述执行计划树,确定所述执行计划树中与所述当前子计划关联的子计划;
根据所述当前子计划的实际输出数据行数修正与所述当前子计划关联的子计划的估算输出数据行数;
根据修正后的估算输出数据行数、***当前可用的资源信息以及对所述用户的资源限制信息,确定与所述当前子计划关联且未被调度的子计划的并行度,作为调整后的初始并行度。
在上述实施例的基础上,所述并行度确定单元,具体用于:
根据并行度计算公式以及各子计划所包含的接收数据操作符的估算输出数据行数、***当前可用的资源信息以及对所述用户的资源限制信息,确定各子计划的初始并行度;
所述并行度计算公式为:
PARALLEL(X)=f_parallel(C1,C2,...,Cn,R1,R2)
其中,X表示子计划,PARALLEL(X)表示子计划X的并行度,Cn为接收操作符的估算输出数据行数,n为接收数据操作符的数量,R1为***当前可用的资源信息,R2为对所述用户的资源限制信息。
本发明实施例提供的并行度的确定装置可以用于执行上述实施例提供的并行度的确定方法,具备相应的功能和有益效果。
实施例四
图5为本发明实施例四提供的一种计算机设备的结构图,参考图5,该计算机设备包括处理器41、存储器42、输入装置43和输出装置44,计算机设备中处理器41的数量可以是一个或多个,图5中以一个处理器41为例,计算机设备中的处理器41、存储器42、输入装置43和输出装置44可以通过总线或其他方式连接,图5中以通过总线连接为例。
存储器42作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的并行度的确定方法对应的程序指令/模块。处理器41通过运行存储在存储器42中的软件程序、指令以及模块,从而执行计算机设备的各种功能应用以及数据处理,即实现上述实施例的并行度的确定方法。
存储器42主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器42可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器42可进一步包括相对于处理器41远程设置的存储器,这些远程存储器可以通过网络连接至计算机设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置43可用于接收输入的数字或字符信息,以及产生与计算机设备的用户设置以及功能控制有关的键信号输入。输出装置44可包括显示屏等显示设备、扬声器以及蜂鸣器等音频设备。
本发明实施例提供的计算机设备与上述实施例提供的并行度的确定方法属于同一发明构思,未在本实施例中详尽描述的技术细节可参见上述实施例,并且本实施例具备执行并行度的确定方法相同的有益效果。
实施例五
本发明实施例五提供了一种存储介质,其上存储有计算机程序,该程序被处理器执行时用于执行并行度的确定方法,该方法包括:
确定执行计划树所包含的各子计划的初始并行度,所述执行计划树通过对用户输入的查询语句解析生成;
根据当前子计划的初始并行度,调度所述当前子计划;
所述当前子计划调度完成时,如果所述当前子计划的实际输出数据行数满足预设条件,根据所述当前子计划的实际输出数据行数调整所述执行计划树中与所述当前子计划关联且未被调度的子计划的初始并行度;
继续调度下一个子计划,直至所述执行计划树所包含的子计划调度完毕。
本发明实施例的存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(Random Access Memory,RAM)、只读存储器(Read Only Memory,ROM)、可擦式可编程只读存储器(Erasable ProgrammableRead Only Memory,EPROM)、闪存、光纤、便携式CD-ROM、光存储器件、磁存储器件、或者上述的任意合适的组合。计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于:电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、无线电频率(Radio Frequency,RF)等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)——连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (10)
1.一种并行度的确定方法,其特征在于,包括:
确定执行计划树所包含的各子计划的初始并行度,所述执行计划树通过对用户输入的查询语句解析生成;
根据当前子计划的初始并行度,调度所述当前子计划;
所述当前子计划调度完成时,如果所述当前子计划的实际输出数据行数满足预设条件,根据所述当前子计划的实际输出数据行数调整所述执行计划树中与所述当前子计划关联且未被调度的子计划的初始并行度;
继续调度下一个子计划,直至所述执行计划树所包含的子计划调度完毕。
2.根据权利要求1所述的方法,其特征在于,所述确定执行计划树所包含的各子计划的初始并行度,包括:
根据所述执行计划树中各操作符对应的输出行数估算公式,确定所述操作符的估算输出数据行数;
根据各子计划所包含的接收数据操作符的估算输出数据行数、***当前可用的资源信息以及对所述用户的资源限制信息,确定各子计划的初始并行度。
3.根据权利要求1所述的方法,其特征在于,所述如果所述当前子计划的实际输出数据行数满足预设条件,根据所述当前子计划的实际输出数据行数调整所述执行计划树中与所述当前子计划关联且未被调度的子计划的初始并行度,包括:
如果所述当前子计划的实际输出数据行数和所述当前子计划的估算输出数据行数的差值与所述估算输出数据行数的比值大于设定阈值,从所述当前子计划的根节点操作符开始向上遍历所述执行计划树,确定所述执行计划树中与所述当前子计划关联的子计划;
根据所述当前子计划的实际输出数据行数修正与所述当前子计划关联的子计划的估算输出数据行数;
根据修正后的估算输出数据行数、***当前可用的资源信息以及对所述用户的资源限制信息,确定与所述当前子计划关联且未被调度的子计划的并行度,作为调整后的初始并行度。
4.根据权利要求2所述的方法,其特征在于,所述根据各子计划所包含的接收数据操作符的估算输出数据行数、***当前可用的资源信息以及对所述用户的资源限制信息,确定各子计划的初始并行度,包括:
根据并行度计算公式以及各子计划所包含的接收数据操作符的估算输出数据行数、***当前可用的资源信息以及对所述用户的资源限制信息,确定各子计划的初始并行度;
所述并行度计算公式为:
PARALLEL(X)=f_parallel(C1,C2,...,Cn,R1,R2)
其中,X表示子计划,PARALLEL(X)表示子计划X的并行度,Cn为接收数据操作符的估算输出数据行数,n为接收数据操作符的数量,R1为***当前可用的资源信息,R2为对所述用户的资源限制信息。
5.一种并行度的确定装置,其特征在于,包括:
并行度确定模块,用于确定执行计划树所包含的各子计划的初始并行度,所述执行计划树通过对用户输入的查询语句解析生成;
调度模块,用于根据当前子计划的初始并行度,调度所述当前子计划;
并行度调整模块,用于所述当前子计划调度完成时,如果所述当前子计划的实际输出数据行数满足预设条件,根据所述当前子计划的实际输出数据行数调整所述执行计划树中与所述当前子计划关联且未被调度的子计划的初始并行度;
所述调度模块,还用于继续调度下一个子计划,直至所述执行计划树所包含的子计划调度完毕。
6.根据权利要求5所述的装置,其特征在于,所述并行度确定模块,包括:
行数确定单元,用于根据所述执行计划树中各操作符对应的输出行数估算公式,确定所述操作符的估算输出数据行数;
并行度确定单元,用于根据各子计划所包含的接收数据操作符的估算输出数据行数、***当前可用的资源信息以及对所述用户的资源限制信息,确定各子计划的初始并行度。
7.根据权利要求5所述的装置,其特征在于,所述并行度调整模块,具体用于:
如果所述当前子计划的实际输出数据行数和所述当前子计划的估算输出数据行数的差值与所述估算输出数据行数的比值大于设定阈值,从所述当前子计划的根节点操作符开始向上遍历所述执行计划树,确定所述执行计划树中与所述当前子计划关联的子计划;
根据所述当前子计划的实际输出数据行数修正与所述当前子计划关联的子计划的估算输出数据行数;
根据修正后的估算输出数据行数、***当前可用的资源信息以及对所述用户的资源限制信息,确定与所述当前子计划关联且未被调度的子计划的并行度,作为调整后的初始并行度。
8.根据权利要求6所述的装置,其特征在于,所述并行度确定单元,具体用于:
根据并行度计算公式以及各子计划所包含的接收数据操作符的估算输出数据行数、***当前可用的资源信息以及对所述用户的资源限制信息,确定各子计划的初始并行度;
所述并行度计算公式为:
PARALLEL(X)=f_parallel(C1,C2,...,Cn,R1,R2)
其中,X表示子计划,PARALLEL(X)表示子计划X的并行度,Cn为接收数据操作符的估算输出数据行数,n为接收数据操作符的数量,R1为***当前可用的资源信息,R2为对所述用户的资源限制信息。
9.一种计算机设备,其特征在于,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-4中任一项所述的并行度的确定方法。
10.一种存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-4中任一项所述的并行度的确定方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010865389.1A CN112035523B (zh) | 2020-08-25 | 2020-08-25 | 一种并行度的确定方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010865389.1A CN112035523B (zh) | 2020-08-25 | 2020-08-25 | 一种并行度的确定方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112035523A true CN112035523A (zh) | 2020-12-04 |
CN112035523B CN112035523B (zh) | 2024-07-09 |
Family
ID=73580068
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010865389.1A Active CN112035523B (zh) | 2020-08-25 | 2020-08-25 | 一种并行度的确定方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112035523B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024078080A1 (zh) * | 2022-10-14 | 2024-04-18 | 华为技术有限公司 | 数据库查询方法、装置、设备及介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030055813A1 (en) * | 2001-05-15 | 2003-03-20 | Microsoft Corporation | Query optimization by sub-plan memoization |
CN105518674A (zh) * | 2013-09-05 | 2016-04-20 | 华为技术有限公司 | 优化对称资源上的并行查询执行的机制 |
US20170104627A1 (en) * | 2015-10-08 | 2017-04-13 | International Business Machines Corporation | Automated etl resource provisioner |
CN107025225A (zh) * | 2016-01-30 | 2017-08-08 | 华为技术有限公司 | 一种终端数据库的并行执行方法和装置 |
CN108121792A (zh) * | 2017-12-20 | 2018-06-05 | 第四范式(北京)技术有限公司 | 基于任务并行处理数据流的方法、装置、设备及存储介质 |
CN110100241A (zh) * | 2016-12-16 | 2019-08-06 | 华为技术有限公司 | 一种用于编译串行和并行数据库查询执行计划的数据库***和方法 |
KR20200063962A (ko) * | 2018-11-28 | 2020-06-05 | 서울대학교산학협력단 | 분산 처리 시스템 및 이의 동작 방법 |
CN111506602A (zh) * | 2020-04-20 | 2020-08-07 | 上海达梦数据库有限公司 | 数据查询方法、装置、设备和存储介质 |
-
2020
- 2020-08-25 CN CN202010865389.1A patent/CN112035523B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030055813A1 (en) * | 2001-05-15 | 2003-03-20 | Microsoft Corporation | Query optimization by sub-plan memoization |
CN105518674A (zh) * | 2013-09-05 | 2016-04-20 | 华为技术有限公司 | 优化对称资源上的并行查询执行的机制 |
US20170104627A1 (en) * | 2015-10-08 | 2017-04-13 | International Business Machines Corporation | Automated etl resource provisioner |
CN107025225A (zh) * | 2016-01-30 | 2017-08-08 | 华为技术有限公司 | 一种终端数据库的并行执行方法和装置 |
CN110100241A (zh) * | 2016-12-16 | 2019-08-06 | 华为技术有限公司 | 一种用于编译串行和并行数据库查询执行计划的数据库***和方法 |
CN108121792A (zh) * | 2017-12-20 | 2018-06-05 | 第四范式(北京)技术有限公司 | 基于任务并行处理数据流的方法、装置、设备及存储介质 |
KR20200063962A (ko) * | 2018-11-28 | 2020-06-05 | 서울대학교산학협력단 | 분산 처리 시스템 및 이의 동작 방법 |
CN111506602A (zh) * | 2020-04-20 | 2020-08-07 | 上海达梦数据库有限公司 | 数据查询方法、装置、设备和存储介质 |
Non-Patent Citations (3)
Title |
---|
MALIK T: "A Black-Box Approach to Query Cardinality Estimation", THIRD BIENNIAL CONFERENCE ON INNOVATIVE DATA SYSTEMS RESEARCH, 10 January 2007 (2007-01-10), pages 56 * |
许新华;胡世港;唐胜群;刘华东;: "数据库查询优化技术的历史、现状与未来", 计算机工程与应用, no. 18, 21 June 2009 (2009-06-21) * |
高***;李战怀;刘文洁;: "一种高效准确的基于查询结果的基数估计策略", 西北工业大学学报, vol. 36, no. 4, 15 August 2018 (2018-08-15), pages 769 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024078080A1 (zh) * | 2022-10-14 | 2024-04-18 | 华为技术有限公司 | 数据库查询方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112035523B (zh) | 2024-07-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2822236B1 (en) | Network bandwidth distribution method and terminal | |
US9686152B2 (en) | Techniques for tracking resource usage statistics per transaction across multiple layers of protocols | |
WO2019179250A1 (zh) | 调度方法、调度器、存储介质及*** | |
CN111782355B (zh) | 一种基于混合负载的云计算任务调度方法及*** | |
US20070079021A1 (en) | Selective I/O prioritization by system process/thread and foreground window identification | |
CN111435354A (zh) | 数据导出方法、装置、存储介质及电子设备 | |
US8392577B2 (en) | Reduction of message flow between bus-connected consumers and producers | |
CN111240864A (zh) | 异步任务处理方法、装置、设备及计算机可读存储介质 | |
CN114339135A (zh) | 一种负载均衡方法、装置、电子设备和存储介质 | |
CN108959571B (zh) | Sql语句的运算方法、装置、终端设备及存储介质 | |
CN112035523B (zh) | 一种并行度的确定方法、装置、设备及存储介质 | |
RU2407170C2 (ru) | Способ интерфейсной адаптации телевизионного межсетевого протокола с устройством хранения данных потока данных | |
CN112363914B (zh) | 一种并行测试资源配置寻优的方法、计算设备及存储介质 | |
CN116248699B (zh) | 多副本场景下的数据读取方法、装置、设备及存储介质 | |
CN116974994A (zh) | 一种基于集群的高效能文件协作*** | |
CN111917595A (zh) | ***升级方法、装置、智能设备以及存储介质 | |
CN114884893B (zh) | 一种转发和控制可定义的协同流量调度方法与*** | |
CN114090617A (zh) | 一种计划执行方法、装置、数据库节点及介质 | |
CN112399470A (zh) | LoRa通信方法、LoRa网关、LoRa***、计算机可读存储介质 | |
CN112804162A (zh) | 一种调度方法、装置、终端设备和存储介质 | |
CN111625524B (zh) | 数据处理方法、装置、设备及存储介质 | |
CN115987905B (zh) | 一种多通道流控方法、***、设备及存储介质 | |
CN105765569A (zh) | 一种数据分发方法,装载机及存储*** | |
CN117221245A (zh) | 一种消息发送方法、装置、电子设备及存储介质 | |
CN116431552A (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 |