CN107818100B - 一种sql语句执行方法及装置 - Google Patents
一种sql语句执行方法及装置 Download PDFInfo
- Publication number
- CN107818100B CN107818100B CN201610818671.8A CN201610818671A CN107818100B CN 107818100 B CN107818100 B CN 107818100B CN 201610818671 A CN201610818671 A CN 201610818671A CN 107818100 B CN107818100 B CN 107818100B
- Authority
- CN
- China
- Prior art keywords
- input
- sql statement
- target
- output
- compiling
- 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
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/2455—Query execution
- G06F16/24553—Query execution of query operations
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明实施例提供了一种SQL语句执行方法及装置,所述方法包括:接收待执行的目标SQL语句;针对各编译过程,在本地保存的该编译过程输入与输出的对应关系中,查找是否存在与所述目标SQL语句在该编译过程的输入匹配的目标输入;如果存在,将所述目标输入对应的目标输出作为所述目标SQL语句在该编译过程的输出;如果不存在,根据所述目标SQL语句在该编译过程的输入,对所述目标SQL语句进行相应的编译,得到所述目标SQL语句在该编译过程的输出,将该输出作为所述目标SQL语句在下一编译过程的输入;当得到所述目标SQL语句在物理优化阶段输出的物理执行树时,将所述物理执行树输入执行引擎执行。本发明实施例能够提高SQL语句的执行速度。
Description
技术领域
本发明涉及计算机技术领域,特别是涉及一种SQL语句执行方法及装置。
背景技术
SQL(Structured Query Language,结构化查询语言)是对数据库进行操作的一种语言。可以用于存取数据以及查询、更新和管理关系数据库系统。SQL语句的执行通常可以包括编译和执行两个阶段,其中,编译阶段可以包括:词法分析、语法分析、语义分析、逻辑优化、物理优化等一系列过程。也就是说,一条SQL语句从提交到把物理优化得到的物理执行树送入执行引擎执行前的整个过程,都称为编译阶段。
词法分析是编译阶段的第一个过程,负责读入组成源程序的SQL语句,分析出有意义的表达字。语法分析是编译阶段的第二个过程,读入词法分析生成的词法单元创建树形的中间表示,该中间表示给出了词法分析产生的词法单元流的语法结构,常见的有语法树,这也是语法分析的输出。
语义分析,也称为分析,为使用语法分析得到的语法树和符号表中的信息检查源程序是否和语言定义的语义一致。它同时也收集类型信息,并把这些信息保存放在语法树或符号表中,以便在随后使用。语义分析的结果输出一个计划树。
在SQL中,逻辑优化与物理优化统称为优化。逻辑优化依靠迭代使用一些编译规则,比如:常量折叠,布尔简化等等优化计划数,输出逻辑计划树。物理优化依赖相关统计信息,进行执行路径的代价评估,选出最后的执行路径,物理优化输出物理执行树。
可见,一条SQL语句完整的执行时间包括各个编译过程各自所耗费的时间,以及执行所耗费的时间之和。在此过程中,各个编译过程通常耗费较长的时间,从而导致SQL语句的执行速度较慢。因此,如何提高SQL语句的执行速度,成为一个亟待解决的问题。
发明内容
本发明实施例的目的在于提供一种SQL语句执行方法及装置,以提高SQL语句的执行速度。具体技术方案如下:
第一方面,本发明实施例提供了一种结构化查询语言SQL语句执行方法,应用于电子设备,所述电子设备本地保存有SQL语句执行过程中,编译阶段输入与输出的对应关系,所述方法包括:
接收待执行的目标SQL语句;
针对各编译过程,执行下列步骤:
在本地保存的该编译过程输入与输出的对应关系中,查找是否存在与所述目标SQL语句在该编译过程的输入匹配的目标输入;
如果存在,将所述目标输入对应的目标输出作为所述目标SQL语句在该编译过程的输出,并将该输出作为所述目标SQL语句在下一编译过程的输入;
如果不存在,根据所述目标SQL语句在该编译过程的输入,对所述目标SQL语句进行相应的编译,得到所述目标SQL语句在该编译过程的输出,将该输出作为所述目标SQL语句在下一编译过程的输入;
当得到所述目标SQL语句在物理优化阶段输出的物理执行树时,将所述物理执行树输入执行引擎执行。
可选地,所述根据所述目标SQL语句在该编译过程的输入,对所述目标SQL语句进行相应的编译,得到所述目标SQL语句在该编译过程的输出之后,所述方法还包括:
保存所述目标SQL语句在该编译过程的输入与输出的对应关系。
可选地,所述电子设备本地保存有SQL语句执行过程中,预定的编译过程输入与输出的对应关系;所述针对各编译过程,执行下列步骤之前,所述方法还包括:
针对各编译过程,判断本地是否保存有该编译过程输入与输出的对应关系;
所述针对各编译过程,执行下列步骤包括:
针对各编译过程,当确定本地保存有该编译过程输入与输出的对应关系时,执行下列步骤。
可选地,所述电子设备本地保存有SQL语句与物理执行树的对应关系;所述针对各编译过程,执行下列步骤包括:
在本地保存的SQL语句与物理执行树的对应关系中,查找是否存在与所述目标SQL语句匹配的SQL语句;
如果存在,将所查找到的SQL语句对应的物理执行树确定为所述目标SQL语句在物理优化阶段输出的物理执行树;
如果不存在,对所述目标SQL语句进行编译,得到所述目标SQL语句在物理优化阶段输出的物理执行树。
可选地,所述对所述目标SQL语句进行编译,得到所述目标SQL语句在物理优化阶段输出的物理执行树之后,所述方法还包括:
保存所述目标SQL语句与所得到的物理执行树的对应关系。
可选地,所述根据所述目标SQL语句在该编译过程的输入,对所述目标SQL语句进行相应的编译,得到所述目标SQL语句在该编译过程的输出包括:
在本地保存的该编译过程输入与输出的对应关系中,查找与所述目标SQL语句在该编译过程的输入匹配度大于预定阈值且匹配度最高的目的输入;
确定所述目标SQL语句在该编译过程的输入与所述目的输入包含的相同部分,并将该相同部分作为第一输入分片,将所述目标SQL语句在该编译过程的输入中,第一输入分片之外的部分作为第二输入分片;
在所述目的输入对应的目的输出中,识别与所述第一输入分片对应的第一输出分片;
对所述第二输入分片进行相应的编译,得到所述第二输入分片对应的第二输出分片;
对所述第一输出分片和所述第二输出分片进行整合,得到所述目标SQL语句在该编译过程的输出。
第二方面,本发明实施例提供了一种结构化查询语言SQL语句执行装置,应用于电子设备,所述电子设备本地保存有SQL语句执行过程中,编译阶段输入与输出的对应关系,所述装置包括:
接收模块,用于接收待执行的目标SQL语句;
查找模块,用于针对各编译过程,在本地保存的该编译过程输入与输出的对应关系中,查找是否存在与所述目标SQL语句在该编译过程的输入匹配的目标输入;
第一处理模块,用于当所述查找模块查找到存在与所述目标SQL语句在该编译过程的输入匹配的目标输入时,将所述目标输入对应的目标输出作为所述目标SQL语句在该编译过程的输出,并将该输出作为所述目标SQL语句在下一编译过程的输入;
第二处理模块,用于当所述查找模块未查找存在与所述目标SQL语句在该编译过程的输入匹配的目标输入时,根据所述目标SQL语句在该编译过程的输入,对所述目标SQL语句进行相应的编译,得到所述目标SQL语句在该编译过程的输出,将该输出作为所述目标SQL语句在下一编译过程的输入;
执行模块,用于当得到所述目标SQL语句在物理优化阶段输出的物理执行树时,将所述物理执行树输入执行引擎执行。
可选地,所述装置还包括:
第一存储模块,用于保存所述目标SQL语句在该编译过程的输入与输出的对应关系。
可选地,所述电子设备本地保存有SQL语句执行过程中,预定的编译过程输入与输出的对应关系;所述装置还包括:
判断模块,用于针对各编译过程,判断本地是否保存有该编译过程输入与输出的对应关系;如果存在,触发所述查找模块。
可选地,所述电子设备本地保存有SQL语句与物理执行树的对应关系;
所述查找模块,具体用于在本地保存的SQL语句与物理执行树的对应关系中,查找是否存在与所述目标SQL语句匹配的SQL语句;
所述第一处理模块,用于当所述查找模块查找到与所述目标SQL语句匹配的SQL语句时,将所查找到的SQL语句对应的物理执行树确定为所述目标SQL语句在物理优化阶段输出的物理执行树;
所述第二处理模块,用于当所述查找模块未查找到与所述目标SQL语句匹配的SQL语句时,对所述目标SQL语句进行编译,得到所述目标SQL语句在物理优化阶段输出的物理执行树。
可选地,所述装置还包括:
第二存储模块,用于保存所述目标SQL语句与所得到的物理执行树的对应关系。
可选地,所述第二处理模块包括:
查找子模块,用于在本地保存的该编译过程输入与输出的对应关系中,查找与所述目标SQL语句在该编译过程的输入匹配度大于预定阈值且匹配度最高的目的输入;
确定子模块,用于确定所述目标SQL语句在该编译过程的输入与所述目的输入包含的相同部分,并将该相同部分作为第一输入分片,将所述目标SQL语句在该编译过程的输入中,第一输入分片之外的部分作为第二输入分片;
识别子模块,用于在所述目的输入对应的目的输出中,识别与所述第一输入分片对应的第一输出分片;
编译子模块,用于对所述第二输入分片进行相应的编译,得到所述第二输入分片对应的第二输出分片;
整合子模块,用于对所述第一输出分片和所述第二输出分片进行整合,得到所述目标SQL语句在该编译过程的输出。
本发明实施例提供了一种SQL语句执行方法及装置,电子设备本地保存有SQL语句执行过程中,编译阶段输入与输出的对应关系,所述方法包括:接收待执行的目标SQL语句;针对各编译过程,在本地保存的该编译过程输入与输出的对应关系中,查找是否存在与所述目标SQL语句在该编译过程的输入匹配的目标输入;如果存在,将所述目标输入对应的目标输出作为所述目标SQL语句在该编译过程的输出,并将该输出作为所述目标SQL语句在下一编译过程的输入;如果不存在,根据所述目标SQL语句在该编译过程的输入,对所述目标SQL语句进行相应的编译,得到所述目标SQL语句在该编译过程的输出,将该输出作为所述目标SQL语句在下一编译过程的输入;并保存所述目标SQL语句在该编译过程的输入与输出的对应关系;当得到所述目标SQL语句在物理优化阶段输出的物理执行树时,将所述物理执行树输入执行引擎执行。
本发明实施例中,电子设备接收到待执行的目标SQL语句后,针对各编译过程,当查找到本地保存有目标SQL语句在该编译过程的输入对应的目标输入时,电子设备即可将该目标输入对应的目标输出作为目标SQL语句在该编译过程的输出,而不需要在该编译过程对目标SQL语句进行编译,因此,能够提高SQL语句的执行速度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种SQL语句执行方法的流程图;
图2为本发明实施例提供的一种SQL语句执行方法的另一流程图;
图3为本发明实施例提供的一种SQL语句执行方法的另一流程图;
图4为本发明实施例提供的一种SQL语句执行装置的结构示意图。
具体实施方式
为了提高SQL语句的执行速度,本发明实施例提供了一种SQL语句执行方法及装置。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
为了提高SQL语句的执行速度,本发明实施例提供了一种SQL语句执行方法过程,如图1所示,该过程可以包括以下步骤:
S101,接收待执行的目标SQL语句。
本发明实施例提供的方法可以应用于电子设备。具体地,该电子设备可以为台式计算机、便携式计算机、智能移动终端等。
在本发明实施例中,电子设备可以接收待执行的目标SQL语句,以执行该目标SQL语句,获得相应的执行结果。例如,电子设备可以接收用户通过能够执行SQL语句的应用程序输入的目标SQL语句,本发明实施例对此不进行限定。
S102,针对各编译过程,在本地保存的该编译过程输入与输出的对应关系中,查找是否存在与所述目标SQL语句在该编译过程的输入匹配的目标输入;如果存在,执行步骤S103,如果不存在,执行步骤S104。
在本发明实施例中,为了提高SQL语句的执行速度,电子设备可以在本地保存SQL语句执行过程中,编译阶段输入与输出的对应关系。例如,电子设备可以保存SQL语句执行过程中,每个编译过程中输入与输出的对应关系。
具体地,电子设备在执行某SQL语句过程中,当对该SQL语句在任一编译过程的输入进行编译,得到对应的该编译过程的输出后,可以针对该编译过程,对应保存该SQL语句的输入和输出。从而,电子设备可以针对其执行过的SQL语句,分别保存词法分析、语法分析、语义分析、逻辑优化、物理优化过程中,每个过程的输入与输出的对应关系。
这种情况下,当电子设备接收到待执行的目标SQL语句时,针对每个编译过程,可以不直接对该目标SQL语句进行编译,而是在本地保存的该编译过程输入与输出的对应关系中,查找是否存在与该目标SQL语句在该编译过程的输入匹配的目标输入。
例如,电子设备可以首先针对词法分析过程,在本地保存的该编译过程对应的输入与输出对应关系中,查找是否存在与目标SQL语句匹配的目标输入。也就是说,电子设备可以查找是否存在与目标SQL语句完全相同的SQL语句。
同理,针对其他编译过程,当电子设备获取到目标SQL语句在各编译过程对应的输入后,可以在各编译过程对应的输入与输出对应关系中,查找是否存在与目标SQL语句在该编译过程的输入匹配的目标输入。
S103,将所述目标输入对应的目标输出作为所述目标SQL语句在该编译过程的输出,并将该输出作为所述目标SQL语句在下一编译过程的输入。
当针对任一编译过程,电子设备查找到目标SQL语句在该编译过程的输入匹配的目标输入时,其可以将该目标输入对应的目标输出作为目标SQL语句在该编译过程的输出。例如,电子设备可以在本地保存的改编译过程的输入输出对应关系中,获得目标输入对应的目标输出,进而可以将获得的目标输出作为目标SQL语句在该编译过程的输出。
并且,可以将该输出作为目标SQL语句在下一编译过程的输入,进而可以继续对目标SQL语句进行编译,直到完成各个编译过程。
S104,根据所述目标SQL语句在该编译过程的输入,对所述目标SQL语句进行相应的编译,得到所述目标SQL语句在该编译过程的输出,将该输出作为所述目标SQL语句在下一编译过程的输入。
当针对任一编译过程,电子设备未查找到目标SQL语句在该编译过程的输入匹配的目标输入时,其可以对该目标SQL语句进行正常编译。即可以根据目标SQL语句在该编译过程的输入,对目标SQL语句进行相应的编译,得到目标SQL语句在该编译过程的输出。并且,可以将该输出作为目标SQL语句在下一编译过程的输入,进而可以继续对目标SQL语句进行编译,直到完成各个编译过程。
S105,当得到所述目标SQL语句在物理优化阶段输出的物理执行树时,将所述物理执行树输入执行引擎执行。
在本发明实施例中,当针对目标SQL语句,循环执行上述步骤S102-S104,完成各个编译过程后,即可得到目标SQL语句在物理优化阶段输出的物理执行树。
当得到目标SQL语句在物理优化阶段输出的物理执行树后,表明目标SQL语句的编译阶段结束。这种情况下,电子设备可以将得到的物理执行树输入执行引擎执行,以得到目标SQL语句对应的执行结果。
本发明实施例中,电子设备接收到待执行的目标SQL语句后,针对各编译过程,当查找到本地保存有目标SQL语句在该编译过程的输入对应的目标输入时,电子设备即可将该目标输入对应的目标输出作为目标SQL语句在该编译过程的输出,而不需要在该编译过程对目标SQL语句进行编译,因此,能够提高SQL语句的执行速度。
作为本发明实施例的一种实施方式,当针对任一编译过程,电子设备未查找到与目标SQL语句在该编译过程的输入匹配的目标输入,其根据目标SQL语句在该编译过程的输入,对目标SQL语句进行相应的编译,得到目标SQL语句在该编译过程的输出后,为了使电子设备中保存更多的输入输出对应关系,在后续SQL语句执行过程中,提高SQL语句执行速度,电子设备可以保存该目标SQL语句在该编译过程的输入与输出的对应关系。
这种情况下,当后续接收到与目标SQL语句相同的SQL语句时,即可查找到各编译过程中,与该SQL语句输入对应的输出,节省了对该SQL语句进行编译的时间,从而提高SQL语句执行速度。
作为本发明实施例的一种实施方式,电子设备本地可以保存SQL语句执行过程中,预定的编译过程输入与输出的对应关系。
例如,在各编译过程中,其中一些编译过程可能耗时较长,另一些编译过程可能耗时较短。这种情况下,为了避免耗时较短的编译过程中,查找与SQL语句的输入匹配的目标输入耗费时间大于实际的编译过程耗费时间,影响SQL语句的执行速度,电子设备可以仅保存耗时较长编译过程的输入与输出的对应关系。
这种情况下,当电子设备获得目标SQL语句在任一编译过程的输入时,其可以判断本地是否保存有该编译过程输入与输出的对应关系。如果有,则在本地保存的该编译过程输入与输出的对应关系中,查找是否存在与所述目标SQL语句在该编译过程的输入匹配的目标输入。
本实施例中,电子设备仅保存预定的编译过程输入与输出的对应关系,也就是说,针对耗时较长的编译过程,可以通过查找与目标SQL语句在该编译过程的输入对应的目标输入,并将该目标输入对应的目标输出作为目标SQL语句在该编译过程的输出,来节省目标SQL语句的编译时间;而针对耗时较短的编译过程,还对目标SQL语句进行正常的编译,避免耗时较短的编译过程中,查找与SQL语句的输入匹配的目标输入耗费时间大于实际的编译过程耗费时间,影响SQL语句的执行速度,从而可以进一步地提高SQL语句执行速度。
作为本发明实施例的一种实施方式,对于相同的SQL语句,其每个编译过程输出的结果应该都相同。也就是说,当输入编译阶段的SQL语句相同时,完成各个编译过程后,输出的物理执行树也相同。因此,为了进一步提高SQL语句的执行速度,电子设备可以保存SQL语句与物理执行树的对应关系。
如图2所示,本发明实施例提供的一种SQL语句执行方法过程,可以包括以下步骤:
S201,接收待执行的目标SQL语句。
本步骤与图1所示实施例中步骤S101基本相同,在此不再赘述。
S202,在本地保存的SQL语句与物理执行树的对应关系中,查找是否存在与所述目标SQL语句匹配的SQL语句;如果存在,执行步骤S203,如果不存在,执行步骤S204。
本实施例中,当电子设备接收到待执行的目标SQL语句时,可以不直接对该目标SQL语句进行编译,而是在本地保存的SQL语句与物理执行树的对应关系中,查找是否存在与目标SQL语句匹配的SQL语句。
例如,电子设备可以在本地保存的SQL语句与物理执行树的对应关系中,查找是否存在与目标SQL语句完全相同的SQL语句,如果是,则将该SQL语句确定为与目标SQL语句匹配的SQL语句。
S203,将所查找到的SQL语句对应的物理执行树确定为所述目标SQL语句在物理优化阶段输出的物理执行树。
当电子设备查找到与目标SQL语句匹配的SQL语句时,其可以进一步获得该SQL语句对应的物理执行树,进而可以将获得的物理执行树确定为目标SQL语句在物理优化阶段输出的物理执行树。
S204,对所述目标SQL语句进行编译,得到所述目标SQL语句在物理优化阶段输出的物理执行树。
当电子设备未查找到与目标SQL语句匹配的SQL语句时,其可以对该目标SQL语句进行正常编译。即可以依次对目标SQL语句进行词法分析、语法分析、语义分析、逻辑优化、物理优化,直到得到目标SQL语句在物理优化阶段输出的物理执行树。
S205,当得到所述目标SQL语句在物理优化阶段输出的物理执行树时,将所述物理执行树输入执行引擎执行。
本步骤与图1所示实施例中步骤S105基本相同,在此不再赘述。
本实施例中,电子设备可以保存各SQL语句与物理执行树的对应关系,当接收到待执行的目标SQL语句,查找到本地保存有目标SQL语句对应的物理执行树时,电子设备即可将查找到的物理执行树作为目标SQL语句在物理优化阶段输出的物理执行树,而不需要对目标SQL语句进行编译,因此,能够提高SQL语句的执行速度。
作为本发明实施例的一种实施方式,当电子设备未查找到与目标SQL语句匹配的SQL语句,其对目标SQL语句进行编译,得到目标SQL语句在物理优化阶段输出的物理执行树后,为了使电子设备中保存更多的SQL语句与物理执行树的对应关系,在后续SQL语句执行过程中,提高SQL语句执行速度,电子设备可以保存该目标SQL语句与所得到的物理执行树的对应关系。
这种情况下,当后续接收到与目标SQL语句相同的SQL语句时,即可查找到对应的物理执行树,节省了对该SQL语句进行编译的时间,从而提高SQL语句执行速度。
作为本发明实施例的一种实施方式,如图3所示,针对任一编译过程,电子设备未查找到与目标SQL语句在该编译过程的输入匹配的目标输入,其根据目标SQL语句在该编译过程的输入,对目标SQL语句进行相应的编译,得到所述目标SQL语句在该编译过程的输出可以包括:
S301,在本地保存的该编译过程输入与输出的对应关系中,查找与所述目标SQL语句在该编译过程的输入匹配度大于预定阈值且匹配度最高的目的输入。
在本发明实施例中,当电子设备针对当前的编译过程,未查找到与目标SQL语句在该编译过程的输入匹配的目标输入时,表明本地保存的该编译过程的输入输出对应关系中,不存在与目标SQL语句在该编译过程的输入完全相同的目标输入。但是,由于目标SQL语句在该编译过程的输入通常是由多个部分组成的,可能存在与目标SQL语句在该编译过程的输入部分相同的输入。例如,目标SQL语句在逻辑优化过程中输入的是计划树,而计划树可以由多个节点组成,可能存在与目标SQL语句在该编译过程的输入部分节点相同的输入。
在本发明实施例中,电子设备可以在本地保存的该编译过程输入与输出的对应关系中,查找与目标SQL语句在该编译过程的输入匹配度大于预定阈值,如50%、60%、80%等,且匹配度最高的目的输入。
例如,电子设备可以将目标SQL语句在该编译过程的输入与本地保存的该编译过程的所有的输入分别进行对比,计算得到目标SQL语句在该编译过程的输入与本地保存的该编译过程的各输入的匹配度,确定匹配度大于预定阈值的输入。并且,当确定的输入有多个时,将匹配度最高的输入确定为目的输入。
S302,确定所述目标SQL语句在该编译过程的输入与所述目的输入包含的相同部分,并将该相同部分作为第一输入分片,将所述目标SQL语句在该编译过程的输入中,第一输入分片之外的部分作为第二输入分片。
当电子设备查找到与目标SQL语句在该编译过程的输入匹配度大于预定阈值且匹配度最高的目的输入后,其可以确定目标SQL语句在该编译过程的输入与该目的输入包含的相同部分,并将该相同部分作为第一输入分片,将目标SQL语句在该编译过程的输入中,第一输入分片之外的部分作为第二输入分片。
例如,当输入为语法树、计划树、逻辑计划树等时,电子设备可以依次比较目标SQL语句在该编译过程的输入与目的输入的每个节点,确定相同的节点为第一输入分片,不相同的节点为第二输入分片。
S303,在所述目的输入对应的目的输出中,识别与所述第一输入分片对应的第一输出分片。
当电子设备确定出目标SQL语句在该编译过程的输入包括的第一输入分片和第二输入分片后,其可以分别确定第一输入分片和第二输入分片对应的输出分片。
具体地,针对第一输入分片,电子设备可以在目的输入对应的目的输出中,识别与第一输入分片对应的第一输出分片。例如,电子设备可以确定第一输入分片所在节点,并识别目的输出中,对应的输出节点,并将识别的输出节点作为第一输入分片对应的第一输出分片。
S304,对所述第二输入分片进行相应的编译,得到所述第二输入分片对应的第二输出分片。
针对第二输入分片,电子设备可以单独对其进行编译,得到第二输入分片对应的第二输出分片。
S305,对所述第一输出分片和所述第二输出分片进行整合,得到所述目标SQL语句在该编译过程的输出。
得到第一输入分片对应的第一输出分片,以及第二输入分片对应的第二输出分片后,电子设备可以对第一输出分片和第二输出分片进行整合,得到目标SQL语句在该编译过程的输出。
例如,电子设备可以按照第一输入分片和第二输入分片的位置关系,将第一输出分片和第二输出分片置于与第一输入分片和第二输入分片对应的位置,得到目标SQL语句在该编译过程的输出。
本实施例中,电子设备对目标SQL语句进行编译时,可以通过识别与目标SQL语句在该编译过程的输入匹配度大于预定阈值且匹配度最高的目的输入,进而可以确定目标SQL语句在该编译过程的输入与该目的输入包含的相同部分为第一输入分片,不同部分为第二输入分片,并仅对第二输入分片单独进行编译,从而能够提高SQL语句的编译速度。
相应于上面的方法实施例,本发明实施例还提供了相应的装置实施例。
图4为本发明实施例提供的一种SQL语句执行装置,应用于电子设备,所述电子设备本地保存有SQL语句执行过程中,编译阶段输入与输出的对应关系,所述装置包括:
接收模块410,用于接收待执行的目标SQL语句;
查找模块420,用于针对各编译过程,在本地保存的该编译过程输入与输出的对应关系中,查找是否存在与所述目标SQL语句在该编译过程的输入匹配的目标输入;
第一处理模块430,用于当所述查找模块查找到存在与所述目标SQL语句在该编译过程的输入匹配的目标输入时,将所述目标输入对应的目标输出作为所述目标SQL语句在该编译过程的输出,并将该输出作为所述目标SQL语句在下一编译过程的输入;
第二处理模块440,用于当所述查找模块未查找存在与所述目标SQL语句在该编译过程的输入匹配的目标输入时,根据所述目标SQL语句在该编译过程的输入,对所述目标SQL语句进行相应的编译,得到所述目标SQL语句在该编译过程的输出,将该输出作为所述目标SQL语句在下一编译过程的输入;
执行模块450,用于当得到所述目标SQL语句在物理优化阶段输出的物理执行树时,将所述物理执行树输入执行引擎执行。
本发明实施例中,电子设备接收到待执行的目标SQL语句后,针对各编译过程,当查找到本地保存有目标SQL语句在该编译过程的输入对应的目标输入时,电子设备即可将该目标输入对应的目标输出作为目标SQL语句在该编译过程的输出,而不需要在该编译过程对目标SQL语句进行编译,因此,能够提高SQL语句的执行速度。
作为本发明实施例的一种实施方式,所述装置还包括:
第一存储模块(图中未示出),用于保存所述目标SQL语句在该编译过程的输入与输出的对应关系。
作为本发明实施例的一种实施方式,所述电子设备本地保存有SQL语句执行过程中,预定的编译过程输入与输出的对应关系;所述装置还包括:
判断模块(图中未示出),用于针对各编译过程,判断本地是否保存有该编译过程输入与输出的对应关系;如果存在,触发所述查找模块420。
作为本发明实施例的一种实施方式,所述电子设备本地保存有SQL语句与物理执行树的对应关系;
所述查找模块420,具体用于在本地保存的SQL语句与物理执行树的对应关系中,查找是否存在与所述目标SQL语句匹配的SQL语句;
所述第一处理模块430,用于当所述查找模块查找到与所述目标SQL语句匹配的SQL语句时,将所查找到的SQL语句对应的物理执行树确定为所述目标SQL语句在物理优化阶段输出的物理执行树;
所述第二处理模块440,用于当所述查找模块未查找到与所述目标SQL语句匹配的SQL语句时,对所述目标SQL语句进行编译,得到所述目标SQL语句在物理优化阶段输出的物理执行树。
作为本发明实施例的一种实施方式,所述装置还包括:
第二存储模块(图中未示出),用于保存所述目标SQL语句与所得到的物理执行树的对应关系。
作为本发明实施例的一种实施方式,所述装置还包括:
查找子模块(图中未示出),用于在本地保存的该编译过程输入与输出的对应关系中,查找与所述目标SQL语句在该编译过程的输入匹配度大于预定阈值且匹配度最高的目的输入;
确定子模块(图中未示出),用于确定所述目标SQL语句在该编译过程的输入与所述目的输入包含的相同部分,并将该相同部分作为第一输入分片,将所述目标SQL语句在该编译过程的输入中,第一输入分片之外的部分作为第二输入分片;
识别子模块(图中未示出),用于在所述目的输入对应的目的输出中,识别与所述第一输入分片对应的第一输出分片;
编译子模块(图中未示出),用于对所述第二输入分片进行相应的编译,得到所述第二输入分片对应的第二输出分片;
整合子模块(图中未示出),用于对所述第一输出分片和所述第二输出分片进行整合,得到所述目标SQL语句在该编译过程的输出。
对于装置/系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (12)
1.一种结构化查询语言SQL语句执行方法,其特征在于,应用于电子设备,所述电子设备本地保存有SQL语句执行过程中,编译阶段输入与输出的对应关系,所述方法包括:
接收待执行的目标SQL语句;
针对各编译过程,执行下列步骤:
在本地保存的该编译过程输入与输出的对应关系中,查找是否存在与所述目标SQL语句在该编译过程的输入匹配的目标输入;
如果存在,将所述目标输入对应的目标输出作为所述目标SQL语句在该编译过程的输出,并将该输出作为所述目标SQL语句在下一编译过程的输入;
如果不存在,根据所述目标SQL语句在该编译过程的输入,对所述目标SQL语句进行相应的编译,得到所述目标SQL语句在该编译过程的输出,将该输出作为所述目标SQL语句在下一编译过程的输入;
当得到所述目标SQL语句在物理优化阶段输出的物理执行树时,将所述物理执行树输入执行引擎执行。
2.根据权利要求1所述的方法,其特征在于,所述根据所述目标SQL语句在该编译过程的输入,对所述目标SQL语句进行相应的编译,得到所述目标SQL语句在该编译过程的输出之后,所述方法还包括:
保存所述目标SQL语句在该编译过程的输入与输出的对应关系。
3.根据权利要求1所述的方法,其特征在于,所述电子设备本地保存有SQL语句执行过程中,耗时大于阈值的编译过程输入与输出的对应关系;所述针对各编译过程,执行下列步骤之前,所述方法还包括:
针对各编译过程,判断本地是否保存有该编译过程输入与输出的对应关系;
所述针对各编译过程,执行下列步骤包括:
针对各编译过程,当确定本地保存有该编译过程输入与输出的对应关系时,执行下列步骤。
4.根据权利要求1所述的方法,其特征在于,所述电子设备本地保存有SQL语句与物理执行树的对应关系;所述针对各编译过程,执行下列步骤包括:
在本地保存的SQL语句与物理执行树的对应关系中,查找是否存在与所述目标SQL语句匹配的SQL语句;
如果存在,将所查找到的SQL语句对应的物理执行树确定为所述目标SQL语句在物理优化阶段输出的物理执行树;
如果不存在,对所述目标SQL语句进行编译,得到所述目标SQL语句在物理优化阶段输出的物理执行树。
5.根据权利要求4所述的方法,其特征在于,所述对所述目标SQL语句进行编译,得到所述目标SQL语句在物理优化阶段输出的物理执行树之后,所述方法还包括:
保存所述目标SQL语句与所得到的物理执行树的对应关系。
6.根据权利要求1所述的方法,其特征在于,所述根据所述目标SQL语句在该编译过程的输入,对所述目标SQL语句进行相应的编译,得到所述目标SQL语句在该编译过程的输出包括:
在本地保存的该编译过程输入与输出的对应关系中,查找与所述目标SQL语句在该编译过程的输入匹配度大于预定阈值且匹配度最高的目的输入;
确定所述目标SQL语句在该编译过程的输入与所述目的输入包含的相同部分,并将该相同部分作为第一输入分片,将所述目标SQL语句在该编译过程的输入中,第一输入分片之外的部分作为第二输入分片;
在所述目的输入对应的目的输出中,识别与所述第一输入分片对应的第一输出分片;
对所述第二输入分片进行相应的编译,得到所述第二输入分片对应的第二输出分片;
对所述第一输出分片和所述第二输出分片进行整合,得到所述目标SQL语句在该编译过程的输出。
7.一种结构化查询语言SQL语句执行装置,其特征在于,应用于电子设备,所述电子设备本地保存有SQL语句执行过程中,编译阶段输入与输出的对应关系,所述装置包括:
接收模块,用于接收待执行的目标SQL语句;
查找模块,用于针对各编译过程,在本地保存的该编译过程输入与输出的对应关系中,查找是否存在与所述目标SQL语句在该编译过程的输入匹配的目标输入;
第一处理模块,用于当所述查找模块查找到存在与所述目标SQL语句在该编译过程的输入匹配的目标输入时,将所述目标输入对应的目标输出作为所述目标SQL语句在该编译过程的输出,并将该输出作为所述目标SQL语句在下一编译过程的输入;
第二处理模块,用于当所述查找模块未查找到存在与所述目标SQL语句在该编译过程的输入匹配的目标输入时,根据所述目标SQL语句在该编译过程的输入,对所述目标SQL语句进行相应的编译,得到所述目标SQL语句在该编译过程的输出,将该输出作为所述目标SQL语句在下一编译过程的输入;
执行模块,用于当得到所述目标SQL语句在物理优化阶段输出的物理执行树时,将所述物理执行树输入执行引擎执行。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
第一存储模块,用于保存所述目标SQL语句在该编译过程的输入与输出的对应关系。
9.根据权利要求7所述的装置,其特征在于,所述电子设备本地保存有SQL语句执行过程中,耗时大于阈值的编译过程输入与输出的对应关系;所述装置还包括:
判断模块,用于针对各编译过程,判断本地是否保存有该编译过程输入与输出的对应关系;如果存在,触发所述查找模块。
10.根据权利要求7所述的装置,其特征在于,所述电子设备本地保存有SQL语句与物理执行树的对应关系;
所述查找模块,具体用于在本地保存的SQL语句与物理执行树的对应关系中,查找是否存在与所述目标SQL语句匹配的SQL语句;
所述第一处理模块,用于当所述查找模块查找到与所述目标SQL语句匹配的SQL语句时,将所查找到的SQL语句对应的物理执行树确定为所述目标SQL语句在物理优化阶段输出的物理执行树;
所述第二处理模块,用于当所述查找模块未查找到与所述目标SQL语句匹配的SQL语句时,对所述目标SQL语句进行编译,得到所述目标SQL语句在物理优化阶段输出的物理执行树。
11.根据权利要求10所述的装置,其特征在于,所述装置还包括:
第二存储模块,用于保存所述目标SQL语句与所得到的物理执行树的对应关系。
12.根据权利要求7所述的装置,其特征在于,所述第二处理模块包括:
查找子模块,用于在本地保存的该编译过程输入与输出的对应关系中,查找与所述目标SQL语句在该编译过程的输入匹配度大于预定阈值且匹配度最高的目的输入;
确定子模块,用于确定所述目标SQL语句在该编译过程的输入与所述目的输入包含的相同部分,并将该相同部分作为第一输入分片,将所述目标SQL语句在该编译过程的输入中,第一输入分片之外的部分作为第二输入分片;
识别子模块,用于在所述目的输入对应的目的输出中,识别与所述第一输入分片对应的第一输出分片;
编译子模块,用于对所述第二输入分片进行相应的编译,得到所述第二输入分片对应的第二输出分片;
整合子模块,用于对所述第一输出分片和所述第二输出分片进行整合,得到所述目标SQL语句在该编译过程的输出。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610818671.8A CN107818100B (zh) | 2016-09-12 | 2016-09-12 | 一种sql语句执行方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610818671.8A CN107818100B (zh) | 2016-09-12 | 2016-09-12 | 一种sql语句执行方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107818100A CN107818100A (zh) | 2018-03-20 |
CN107818100B true CN107818100B (zh) | 2019-12-20 |
Family
ID=61601182
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610818671.8A Active CN107818100B (zh) | 2016-09-12 | 2016-09-12 | 一种sql语句执行方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107818100B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111309757B (zh) * | 2020-05-14 | 2020-09-01 | 深圳市赢时胜信息技术股份有限公司 | 一种HBase的SQL解释器和优化方法 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102467570A (zh) * | 2010-11-17 | 2012-05-23 | 日电(中国)有限公司 | 用于分布式数据仓库的连接查询系统和方法 |
CN102799622A (zh) * | 2012-06-19 | 2012-11-28 | 北京大学 | 基于MapReduce扩展框架的分布式SQL查询方法 |
CN102955802A (zh) * | 2011-08-25 | 2013-03-06 | 阿里巴巴集团控股有限公司 | 从数据报表中获取数据的方法和装置 |
CN103049506A (zh) * | 2012-12-12 | 2013-04-17 | 华南理工大学 | 移动设备的数据缓存方法及其系统 |
CN104391895A (zh) * | 2014-11-12 | 2015-03-04 | 珠海世纪鼎利通信科技股份有限公司 | 一种基于云计算的sql语句处理系统 |
US9280585B2 (en) * | 2013-04-03 | 2016-03-08 | International Business Machines Corporation | Method and apparatus for optimizing the evaluation of semantic web queries |
CN105518676A (zh) * | 2013-07-31 | 2016-04-20 | 甲骨文国际公司 | 查询任意半结构化数据的通用的sql增强以及高效地支持这样的增强的技术 |
CN105787044A (zh) * | 2016-02-26 | 2016-07-20 | 广州品唯软件有限公司 | 一种基于MySQL的SQL解析器及其解析方法 |
CN105824957A (zh) * | 2016-03-30 | 2016-08-03 | 电子科技大学 | 分布式内存列式数据库的查询引擎系统及查询方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9355145B2 (en) * | 2011-01-25 | 2016-05-31 | Hewlett Packard Enterprise Development Lp | User defined function classification in analytical data processing systems |
-
2016
- 2016-09-12 CN CN201610818671.8A patent/CN107818100B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102467570A (zh) * | 2010-11-17 | 2012-05-23 | 日电(中国)有限公司 | 用于分布式数据仓库的连接查询系统和方法 |
CN102955802A (zh) * | 2011-08-25 | 2013-03-06 | 阿里巴巴集团控股有限公司 | 从数据报表中获取数据的方法和装置 |
CN102799622A (zh) * | 2012-06-19 | 2012-11-28 | 北京大学 | 基于MapReduce扩展框架的分布式SQL查询方法 |
CN103049506A (zh) * | 2012-12-12 | 2013-04-17 | 华南理工大学 | 移动设备的数据缓存方法及其系统 |
US9280585B2 (en) * | 2013-04-03 | 2016-03-08 | International Business Machines Corporation | Method and apparatus for optimizing the evaluation of semantic web queries |
CN105518676A (zh) * | 2013-07-31 | 2016-04-20 | 甲骨文国际公司 | 查询任意半结构化数据的通用的sql增强以及高效地支持这样的增强的技术 |
CN104391895A (zh) * | 2014-11-12 | 2015-03-04 | 珠海世纪鼎利通信科技股份有限公司 | 一种基于云计算的sql语句处理系统 |
CN105787044A (zh) * | 2016-02-26 | 2016-07-20 | 广州品唯软件有限公司 | 一种基于MySQL的SQL解析器及其解析方法 |
CN105824957A (zh) * | 2016-03-30 | 2016-08-03 | 电子科技大学 | 分布式内存列式数据库的查询引擎系统及查询方法 |
Non-Patent Citations (1)
Title |
---|
PL/SQL引擎若干关键技术的研究与实现;石文渊;《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》;20061115;第I138-501页 * |
Also Published As
Publication number | Publication date |
---|---|
CN107818100A (zh) | 2018-03-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20190146985A1 (en) | Natural language question answering method and apparatus | |
CN108549538B (zh) | 一种代码检测方法、装置、存储介质及测试终端 | |
CN108710662B (zh) | 语言转换方法和装置、存储介质、数据查询系统和方法 | |
CN106843840B (zh) | 一种基于相似度分析的源代码版本演化注释复用方法 | |
US20140325491A1 (en) | Transformation of computer programs and eliminating errors | |
CN113672628A (zh) | 数据血缘分析方法、终端设备及介质 | |
US20130262090A1 (en) | System and method for reducing semantic ambiguity | |
CN113821496B (zh) | 数据库迁移方法、系统、设备及计算机可读存储介质 | |
US20140379753A1 (en) | Ambiguous queries in configuration management databases | |
JP2022115815A (ja) | 拡張プログラミング言語コーパスに基づく意味コード検索 | |
KR101709055B1 (ko) | 오픈 웹 질의응답을 위한 질문분석 장치 및 방법 | |
CN113901083B (zh) | 基于多解析器的异构数据源操作资源解析定位方法和设备 | |
CN110263121B (zh) | 表格数据处理方法、装置、电子装置及计算机可读存储介质 | |
US20080301096A1 (en) | Techniques to manage metadata fields for a taxonomy system | |
KR20210056131A (ko) | 법령 분야 질의 응답 방법 및 장치 | |
CN112000690B (zh) | 解析结构化操作语句的方法和装置 | |
CN107818100B (zh) | 一种sql语句执行方法及装置 | |
EA037156B1 (ru) | Способ поиска в тексте совпадений с шаблонами | |
CN116383412B (zh) | 基于知识图谱的功能点扩增方法和系统 | |
CN116360788A (zh) | 结构化文本编程语言的编译方法、编译器及电子设备 | |
Tukaram | Design and development of software tool for code clone search, detection, and analysis | |
Asiler et al. | HyGraph: a subgraph isomorphism algorithm for efficiently querying big graph databases | |
CN114817498A (zh) | 用户意图识别方法、装置、设备及存储介质 | |
CN114691197A (zh) | 代码分析方法、装置、电子设备和存储介质 | |
CN113064982A (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 | ||
GR01 | Patent grant |