CN108874954A - 一种数据库查询的优化方法、介质及设备 - Google Patents
一种数据库查询的优化方法、介质及设备 Download PDFInfo
- Publication number
- CN108874954A CN108874954A CN201810571798.3A CN201810571798A CN108874954A CN 108874954 A CN108874954 A CN 108874954A CN 201810571798 A CN201810571798 A CN 201810571798A CN 108874954 A CN108874954 A CN 108874954A
- Authority
- CN
- China
- Prior art keywords
- operator
- processor
- directed acyclic
- acyclic graph
- data
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种数据库查询的优化方法、介质及设备。所述方法,包括:获取用户输入的数据查询语句;根据所述数据查询语句中每个操作符的依赖关系,生成以所述操作符为节点的有向无环图;根据所述有向无环图,确定所述操作符的操作顺序和执行每个所述操作符的处理器;根据确定的所述操作顺序和所述处理器,查询相应的数据。通过确定最合理的操作顺序和处理器,能够在数据并发状态下,提高数据查询的速度,进而优化数据查询过程。
Description
技术领域
本发明涉及数据库查询技术领域,具体涉及一种数据库查询的优化方法、介质及设备。
背景技术
随着信息化的不断发展,在各个领域,数据都呈现出爆炸性增长的趋势,在查询数据时,经常会遇到多并发的情况。现有技术中,当在并发状态下,不能按照最优的操作顺序执行相应的操作符,不能为操作符分配合理的计算资源,查询速度较慢。
发明内容
针对现有技术中的缺陷,本发明提供一种数据库查询的优化方法、介质及设备,能够在数据并发状态下,提高数据查询的速度,进而优化数据查询过程。
第一方面,本发明提供了一种数据库查询的优化方法,包括:
获取用户输入的数据查询语句;
根据所述数据查询语句中每个操作符的依赖关系,生成以所述操作符为节点的有向无环图;
根据所述有向无环图,确定所述操作符的操作顺序和执行每个所述操作符的处理器;
根据确定的所述操作顺序和所述处理器,查询相应的数据。
可选的,根据所述有向无环图,确定所述操作符的操作顺序和执行每个所述操作符的处理器,包括:
确定所述有向无环图的关键路径;
评估执行所述操作符的不同处理器之间的通信代价;
根据所述关键路径和/或通信代价,确定所述操作符的操作顺序和执行每个所述操作符的处理器。
可选的,所述确定所述有向无环图的关键路径,包括:
评估所述有向无环图中每个节点的所述操作符的最慢速度;
根据每个节点的所述最慢速度,确定所述有向无环图的关键路径。
可选的,所述评估所述有向无环图中每个节点的所述操作符的最慢速度,包括:
采用机器学习算法、随机森林算法和随机游走算法中的一种或多种,评估所述有向无环图中每个节点的所述操作符的最慢速度。
第二方面,本发明提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现第一方面中的一种数据库查询的优化方法。
第三方面,本发明提供一种数据库查询的优化设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现第一方面中的一种数据库查询的优化方法。
本发明提供一种数据库查询的优化方法,通过获取用户输入的数据查询语句,再根据数据查询语句中每个操作符的依赖关系,能够生成等价的以操作符为节点的有向无环图,进而根据有向无环图,能够确定操作符的操作顺序和相应的执行处理器,最后,可以根据分配的处理器和操作顺序,查询相应的数据。通过确定最合理的操作顺序和处理器,能够在数据并发状态下,提高数据查询的速度,进而优化数据查询过程。
本发明提供一种计算机可读存储介质和一种数据库查询的优化设备,与上述一种数据库查询的优化方法出于相同的发明构思,具有相同的有益效果。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍。在所有附图中,类似的元件或部分一般由类似的附图标记标识。附图中,各元件或部分并不一定按照实际的比例绘制。
图1为本发明提供的一种数据库查询的优化方法的流程图;
图2为本发明提供的一种有向无环图的示例图。
具体实施方式
下面将结合附图对本发明技术方案的实施例进行详细的描述。以下实施例仅用于更加清楚地说明本发明的技术方案,因此只是作为示例,而不能以此来限制本发明的保护范围。
需要注意的是,除非另有说明,本申请使用的技术术语或者科学术语应当为本发明所属领域技术人员所理解的通常意义。
本发明提供了一种数据库查询的优化方法、介质及设备。下面结合附图对本发明的实施例进行说明。
第一实施例:
请参考图1,图1为本发明具体实施例提供的一种数据库查询的优化方法的流程图,本实施例提供的一种数据库查询的优化方法,包括:
步骤S101:获取用户输入的数据查询语句。
步骤S102:根据所述数据查询语句中每个操作符的依赖关系,生成以所述操作符为节点的有向无环图。
步骤S103:根据所述有向无环图,确定所述操作符的操作顺序和执行每个所述操作符的处理器。
步骤S104:根据确定的所述操作顺序和所述处理器,查询相应的数据。
本发明适用于计算机并发处理SQL查询语句,也就是当关系数据量大于计算机并发数。
通过获取用户输入的数据查询语句,再根据数据查询语句中每个操作符的依赖关系,能够生成等价的以操作符为节点的有向无环图,进而根据有向无环图,能够确定操作符的操作顺序和相应的执行处理器,最后,可以根据分配的处理器和操作顺序,查询相应的数据。通过确定最合理的操作顺序和处理器,能够在数据并发状态下,提高数据查询的速度,进而优化数据查询过程。
对于一个数据查询语句,可以包括多个操作符,例如:选择、投影、笛卡尔积、关联、集合减以及扩展的聚合、排序等中的一种或多种。
在获取用户输入的数据查询语句后,可以采用语法分析器对SQL语句进行解析,将SQL语句分解成一个等价的关系代数操作符序列,再根据每个操作符之间的依赖关系,建立操作符之间的有向无环图。
其中,操作符之间的依赖关系是指操作符的输入数据和输出数据之间的依赖关系。例如,A操作符的输出数据为B操作符的输入数据,也就是说,只有在A操作符计算完结果后,利用A操作符的输出数据,B操作符才能开始计算。
在建立好有向无环图后,有向无环图的顶点表示操作符,连接边表示输入输出数据的依赖关系。例如,一条从A操作指向B操作的边,代表A操作的结果需要被作为B操作的输入,隐含A和B的先后执行顺序必须A在B前。
在本发明提供的一个具体实施例中,根据所述有向无环图,确定所述操作符的操作顺序和执行每个所述操作符的处理器,包括:确定所述有向无环图的关键路径;评估执行所述操作符的不同处理器之间的通信代价;根据所述关键路径和/或通信代价,确定所述操作符的操作顺序和执行每个所述操作符的处理器。
由于操作符之间存在类似代数系统的交换律与结合律等等价变化规则,例如,A操作=B操作=C操作的执行顺序,等价于B操作=A操作=C操作,可以认为A操作和B操作为符合交换律,因此,对于一个给定的SQL语句,在单线程顺序执行的情况下,存在多种不同的操作执行序列,推广至一般并行情况下,单一操作在多线程上并行执行,以及多操作并行执行,这样,对于一个给定的有向无环图,需要确定有向无环图的关键路径。
根据给定计算资源,合理给有向无环图的每一个节点分配计算资源与操作顺序,形成一个多机的时序图,即分配预计所需耗时时间到有向无环图的节点上,其中,时序图中最长的一条路径,即总耗时最大的一个序列,即关键路径,关键路径决定了整个查询完成所需的总时间。其中,计算资源是指执行操作符的处理器。
为了节省查询时间,需要找到最优的关键路径,根据该关键路径确定操作符的操作顺序和执行每个所述操作符的处理器。
在确定关键路径时,可以包括:评估所述有向无环图中每个节点的所述操作符的最慢速度;根据每个节点的所述最慢速度,确定所述有向无环图的关键路径。
所述评估所述有向无环图中每个节点的所述操作符的最慢速度,可以包括:采用机器学习算法、随机森林算法和随机游走算法中的一种或多种,评估所述有向无环图中每个节点的所述操作符的最慢速度。
对于一个给定的SQL语句,单机执行时,能够保证任何一个操作执行时,均具有之前所有操作产生的所有信息,所以可以减少冗余计算,但在并发环境下,如果增加并行度,除非数据同步导致的互相等待,可能部分计算存在冗余,因此,在确定操作符的操作顺序和执行每个所述操作符的处理器时,需要考虑执行的并行度和可能的冗余计算的平衡。
当评估完每个节点的最慢速度后,根据评估的每个节点的最慢速度,判断有向无环图中耗时最长的一条路径,将该路径作为关键路径。根据该关键路径,分配计算资源,确定每个操作符的执行顺序,减少冗余计算,提高计算速度。
例如,如图2所示,对于一个SQL语句,包括:A、B、C三个操作符,其中,C依赖A和B的结果,A和B之间没有依赖关系,在并行的情况下,可以将A和B并行计算。当并发的线程数据为n,且n远大于2时,可以给A分配更多线程,虽然A的耗时会减少,必然导致B可用线程减少,操作的耗时增大,会导致关键路径变为B到C,耗时为最长的一条路径,总查询时长反而变大。因此,在确定每个操作符的处理器,分配计算资源时,需要平衡每个操作符分配的资源,减少关键路径耗时。
在确定操作符的操作顺序和执行每个操作符的处理器时,还需要考虑处理器之间的通信代价。
对于单机处理查询语句时,单机顺序不涉及跨网络传输,不需要考虑通信代价。而在大规模并行计算时,数据大量在网络传输,容易造成传输瓶颈,操作符之间的依赖关系和操作符在不同的计算节点的分配,会影响查询时间,需要考虑不同处理器之间的通信代价。
例如,如图2所示的有向无环图,包括:A、B、C三个操作符,其中,C依赖A和B的结果,A和B之间没有依赖关系,当只有两个并行计算节点(x,y)的时候,若A在x上进行计算,且输出数据量小,B在y上进行计算,结果数据量大,如果C操作符只能在单机上完成,且C操作符在x撒花姑娘进行计算时,需要将较大的B操作符的输出数据从y传输到x,开销较大;反之,C在y上进行计算时,效率较高,传输数据量小,因此,可以确定C操作符在y上计算。
因此,通过考虑通信代价,能够减少整体SQL语句查询时间。
在确定操作符的所述操作顺序和所述处理器时,可以考虑关键路径,也可以考虑通信代价,也可以同时考虑关键路径和通信代价,这都在本发明的保护范围内。同时考虑关键路径和通信代价,相较于单独考虑关键路径和通信代价,能够确定最合理的操作顺序和分配最合理的处理器。通过利用确定的操作符的操作顺序和处理器查询相应的数据结果,能够减少整体SQL语句查询时间,提高查询效率,减少计算冗余。
以上,为本发明提供的一种数据库查询的优化方法。
第二实施例:
在上述的第一实施例中,提供了一种数据库查询的优化方法,结合上述第一实施例,本发明第二实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述第一实施例提供的一种数据库查询的优化方法。
由上述技术方案可知,本实施例提供的计算机可读存储介质,能够在处理器的控制下,获取用户输入的数据查询语句,再根据数据查询语句中每个操作符的依赖关系,生成等价的以操作符为节点的有向无环图,进而根据有向无环图,能够确定操作符的操作顺序和相应的执行处理器,最后,可以根据分配的处理器和操作顺序,查询相应的数据。通过确定最合理的操作顺序和处理器,能够在数据并发状态下,提高数据查询的速度,进而优化数据查询过程。
第三实施例:
结合第一实施例提供的一种数据库查询的优化方法,本发明还提供一种数据库查询的优化设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述第一实施例提供的一种数据库查询的优化方法。
由上述技术方案可知,本实施例提供的计算机设备,通过获取用户输入的数据查询语句,再根据数据查询语句中每个操作符的依赖关系,能够生成等价的以操作符为节点的有向无环图,进而根据有向无环图,能够确定操作符的操作顺序和相应的执行处理器,最后,可以根据分配的处理器和操作顺序,查询相应的数据。通过确定最合理的操作顺序和处理器,能够在数据并发状态下,提高数据查询的速度,进而优化数据查询过程。
本发明的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。
Claims (6)
1.一种数据库查询的优化方法,其特征在于,包括:
获取用户输入的数据查询语句;
根据所述数据查询语句中每个操作符的依赖关系,生成以所述操作符为节点的有向无环图;
根据所述有向无环图,确定所述操作符的操作顺序和执行每个所述操作符的处理器;
根据确定的所述操作顺序和所述处理器,查询相应的数据。
2.根据权利要求1所述的方法,其特征在于,根据所述有向无环图,确定所述操作符的操作顺序和执行每个所述操作符的处理器,包括:
确定所述有向无环图的关键路径;
评估执行所述操作符的不同处理器之间的通信代价;
根据所述关键路径和/或通信代价,确定所述操作符的操作顺序和执行每个所述操作符的处理器。
3.根据权利要求2所述的方法,其特征在于,所述确定所述有向无环图的关键路径,包括:
评估所述有向无环图中每个节点的所述操作符的最慢速度;
根据每个节点的所述最慢速度,确定所述有向无环图的关键路径。
4.根据权利要求3所述的方法,其特征在于,所述评估所述有向无环图中每个节点的所述操作符的最慢速度,包括:
采用机器学习算法、随机森林算法和随机游走算法中的一种或多种,评估所述有向无环图中每个节点的所述操作符的最慢速度。
5.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1-4之一所述的方法。
6.一种数据库查询的优化设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1-4之一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810571798.3A CN108874954A (zh) | 2018-06-04 | 2018-06-04 | 一种数据库查询的优化方法、介质及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810571798.3A CN108874954A (zh) | 2018-06-04 | 2018-06-04 | 一种数据库查询的优化方法、介质及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108874954A true CN108874954A (zh) | 2018-11-23 |
Family
ID=64336473
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810571798.3A Pending CN108874954A (zh) | 2018-06-04 | 2018-06-04 | 一种数据库查询的优化方法、介质及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108874954A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111190918A (zh) * | 2019-12-25 | 2020-05-22 | 中科驭数(北京)科技有限公司 | 基于计算流图的数据库访问方法及装置 |
CN111209302A (zh) * | 2020-01-02 | 2020-05-29 | 中科驭数(北京)科技有限公司 | 数据库访问的并行执行方法及装置 |
CN111538714A (zh) * | 2020-04-24 | 2020-08-14 | 咪咕文化科技有限公司 | 一种指令执行方法、装置、电子设备和存储介质 |
WO2020230116A1 (en) * | 2019-05-13 | 2020-11-19 | Redis Labs Ltd. | Methods, systems, and media for resolving graph database queries |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103064955A (zh) * | 2012-12-28 | 2013-04-24 | 华为技术有限公司 | 查询规划方法及装置 |
CN104834650A (zh) * | 2014-02-12 | 2015-08-12 | 清华大学 | 一种有效查询任务生成方法及系统 |
CN105786808A (zh) * | 2014-12-15 | 2016-07-20 | 阿里巴巴集团控股有限公司 | 一种用于分布式执行关系型计算指令的方法与设备 |
US20170316055A1 (en) * | 2014-12-01 | 2017-11-02 | Nec Corporation | Multiple query optimization in sql-on-hadoop systems |
CN107798044A (zh) * | 2016-07-18 | 2018-03-13 | Sap欧洲公司 | 层次窗口数据库查询进行 |
-
2018
- 2018-06-04 CN CN201810571798.3A patent/CN108874954A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103064955A (zh) * | 2012-12-28 | 2013-04-24 | 华为技术有限公司 | 查询规划方法及装置 |
CN104834650A (zh) * | 2014-02-12 | 2015-08-12 | 清华大学 | 一种有效查询任务生成方法及系统 |
US20170316055A1 (en) * | 2014-12-01 | 2017-11-02 | Nec Corporation | Multiple query optimization in sql-on-hadoop systems |
CN105786808A (zh) * | 2014-12-15 | 2016-07-20 | 阿里巴巴集团控股有限公司 | 一种用于分布式执行关系型计算指令的方法与设备 |
CN107798044A (zh) * | 2016-07-18 | 2018-03-13 | Sap欧洲公司 | 层次窗口数据库查询进行 |
Non-Patent Citations (2)
Title |
---|
ALEKSANDAR VITOROBIC等: "Squall: Scalable Real-time Analytics", 《PROCEEDINGS OF THE VLDB ENDOWMENT》 * |
金正淑: "查询优化在分布式数据库系统中的应用", 《信息科技》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020230116A1 (en) * | 2019-05-13 | 2020-11-19 | Redis Labs Ltd. | Methods, systems, and media for resolving graph database queries |
US11416550B2 (en) | 2019-05-13 | 2022-08-16 | Redis, LTD | Methods, systems, and media for resolving database queries using algebraic expressions using matrix-matrix multiplication |
CN111190918A (zh) * | 2019-12-25 | 2020-05-22 | 中科驭数(北京)科技有限公司 | 基于计算流图的数据库访问方法及装置 |
CN111209302A (zh) * | 2020-01-02 | 2020-05-29 | 中科驭数(北京)科技有限公司 | 数据库访问的并行执行方法及装置 |
CN111538714A (zh) * | 2020-04-24 | 2020-08-14 | 咪咕文化科技有限公司 | 一种指令执行方法、装置、电子设备和存储介质 |
CN111538714B (zh) * | 2020-04-24 | 2023-10-17 | 咪咕文化科技有限公司 | 一种指令执行方法、装置、电子设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10713248B2 (en) | Query engine selection | |
CN108874954A (zh) | 一种数据库查询的优化方法、介质及设备 | |
US8209703B2 (en) | Apparatus and method for dataflow execution in a distributed environment using directed acyclic graph and prioritization of sub-dataflow tasks | |
US11023443B2 (en) | Collaborative planning for accelerating analytic queries | |
US20090265306A1 (en) | Index Maintenance in a Multi-Node Database | |
US8938443B2 (en) | Runtime optimization of spatiotemporal events processing | |
Yakovets et al. | WAVEGUIDE: Evaluating SPARQL Property Path Queries. | |
US20240104031A1 (en) | Forwarding incoming io to scm namespaces | |
Salehpour et al. | A comparative analysis of knowledge graph query performance | |
Mennicke et al. | Fast dual simulation processing of graph database queries | |
Chen et al. | Modeling design iteration in product design and development and its solution by a novel artificial bee colony algorithm | |
Alemi et al. | CCFinder: using Spark to find clustering coefficient in big graphs | |
Aironi et al. | Tackling the linear sum assignment problem with graph neural networks | |
CN116401277A (zh) | 数据处理方法、装置、系统、设备及介质 | |
Wang et al. | Optimal selection method of process patents for technology transfer using fuzzy linguistic computing | |
US20170053223A1 (en) | Determining Payload Estimate | |
US10740331B2 (en) | Query execution apparatus, method, and system for processing data, query containing a composite primitive | |
Baldazzi et al. | Datalog-based Reasoning with Heuristics over Knowledge Graphs. | |
Jamadagni et al. | GoDB: From batch processing to distributed querying over property graphs | |
Jakubův et al. | Towards a unified ordering for superposition-based automated reasoning | |
Sarathchandra et al. | Resource aware scheduler for distributed stream processing in cloud native environments | |
Hou et al. | Efficient anomaly detection in property graphs | |
Gaur et al. | Modelling database server sizing for concurrent users using coloured Petri-nets | |
Park et al. | Machine Learning-based Selection of Graph Partitioning Strategy Using the Characteristics of Graph Data and Algorithm | |
Yang et al. | Distributed query engine for multiple-query optimization over data stream |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20181123 |
|
RJ01 | Rejection of invention patent application after publication |