CN114328612A - 查询优化器的数据处理方法、装置及电子设备 - Google Patents

查询优化器的数据处理方法、装置及电子设备 Download PDF

Info

Publication number
CN114328612A
CN114328612A CN202210002870.7A CN202210002870A CN114328612A CN 114328612 A CN114328612 A CN 114328612A CN 202210002870 A CN202210002870 A CN 202210002870A CN 114328612 A CN114328612 A CN 114328612A
Authority
CN
China
Prior art keywords
path
target
paths
random
connection table
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
Application number
CN202210002870.7A
Other languages
English (en)
Inventor
李金鑫
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Kingsoft Cloud Network Technology Co Ltd
Original Assignee
Beijing Kingsoft Cloud Network Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Kingsoft Cloud Network Technology Co Ltd filed Critical Beijing Kingsoft Cloud Network Technology Co Ltd
Priority to CN202210002870.7A priority Critical patent/CN114328612A/zh
Publication of CN114328612A publication Critical patent/CN114328612A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供了一种查询优化器的数据处理方法、装置及电子设备,涉及数据库技术领域,本发明在生成执行计划时,先获取查询语句对应的多个基本表;然后采用随机方式,从目标连接表对应的多条路径中确定一条目标路径;其中,目标连接表由多个基本表组成,路径用于指示对目标连接表中的每个基本表中数据的访问方式,以及各个基本表之间的连接方式和连接顺序;进而由目标路径生成执行计划,以按照执行计划执行查询语句。这样使用相同的查询语句进行多次数据库内核测试时,采用随机方式确定出的目标路径不同,从而生成的执行计划不仅可以包含最优路径,还可以遍历到其他路径,因此提高了测试覆盖率。

Description

查询优化器的数据处理方法、装置及电子设备
技术领域
本发明涉及数据库技术领域,尤其是涉及一种查询优化器的数据处理方法、装置及电子设备。
背景技术
查询优化器是负责生成SQL(Structured Query Language,结构化查询语言)语句的有效执行计划的数据库引擎组件。
在数据库实际使用中,查询优化器会根据SQL语句对应的查询树,生成多个路径,并保留最优路径,由最优路径生成执行计划,其中路径代表了对查询树中每个基本表中数据的访问方式以及基本表之间的连接方式和连接顺序。然而在数据库内核测试中,仅凭借一条最优路径生成的执行计划来验证SQL语句的执行结果的正确性,测试覆盖率较低,无法保证数据库内核中各个模块的正确性。
发明内容
本发明的目的在于提供一种查询优化器的数据处理方法、装置及电子设备,以提高测试覆盖率。
第一方面,本发明实施例提供了一种查询优化器的数据处理方法,所述方法包括:
获取查询语句对应的多个基本表;
采用随机方式,从目标连接表对应的多条路径中确定一条目标路径;其中,所述目标连接表由多个所述基本表组成,所述路径用于指示对所述目标连接表中的每个所述基本表中数据的访问方式,以及各个所述基本表之间的连接方式和连接顺序;
由所述目标路径生成执行计划,以按照所述执行计划执行所述查询语句。
进一步地,所述采用随机方式,从目标连接表对应的多条路径中确定一条目标路径,包括:
根据预设的随机模式,从所述目标连接表对应的多条路径中确定一条目标路径;
其中,所述随机模式包括第一随机模式、第二随机模式、第三随机模式或第四随机模式,所述第一随机模式表示从所述目标连接表对应的所有路径中随机选取所述目标路径,所述第二随机模式表示基于路径的总代价从所述目标连接表对应的所有路径中随机选取所述目标路径,所述第三随机模式表示基于路径的启动代价从所述目标连接表对应的所有路径中随机选取所述目标路径,所述第四随机模式表示基于路径的总代价和启动代价从所述目标连接表对应的所有路径中随机选取所述目标路径。
进一步地,所述随机模式为第一随机模式,所述根据预设的随机模式,从所述目标连接表对应的多条路径中确定一条目标路径,包括:
以所述基本表为节点构建所述目标路径的第一层;在所述第一层中,对于每个所述基本表,保存采用预设的随机算法从该基本表对应的多种访问方式中确定的一种访问方式;
以由两个所述基本表组成的第二连接表为节点构建所述目标路径的第二层;在所述第二层中,将所述第一层中的各个所述基本表两两连接,得到每个所述第二连接表对应的多条第二路径,并保存采用所述随机算法从每个所述第二连接表对应的多条第二路径中确定的一条第二路径,其中,每个所述第二连接表对应的不同第二路径所对应的连接方式不同;
以由k个所述基本表组成的第k连接表为节点构建所述目标路径的第k层;在所述第k层中,将第mk层中的各个第mk连接表与第nk层中的各个第nk连接表两两连接,得到每个所述第k连接表对应的多条第k路径,并保存采用所述随机算法从每个所述第k连接表对应的多条第k路径中确定的一条第k路径,其中,每个所述第k连接表对应的不同第k路径所对应的连接顺序不同,k为大于2且小于N的整数,N为所述基本表的数量,mk和nk均为随机选取的正整数,且mk+nk=k,当mk或nk为1时,对应的第一连接表为所述基本表;
以由N个所述基本表组成的目标连接表为节点构建所述目标路径的第N层;在所述第N层中,将第mN层中的各个第mN连接表与第nN层中的各个第nN连接表两两连接,得到所述目标连接表对应的多条路径,并保存采用所述随机算法从所述目标连接表对应的多条路径中确定的一条目标路径,其中,mN和nN均为正整数,且mN+nN=N。
进一步地,所述随机模式为第二随机模式,所述根据预设的随机模式,从所述目标连接表对应的多条路径中确定一条目标路径,包括:
获取由多个所述基本表组成的目标连接表对应的多条路径;
计算得到每条所述路径的总代价;
将多条所述路径中满足预设的第一代价要求的路径确定为第一待选路径;其中,所述第一代价要求为总代价小于第一预设值,或者属于总代价最小的前第一预设数量条路径或前第一预设百分比的路径;
从各条所述第一待选路径中随机选取一条目标路径。
进一步地,所述随机模式为第三随机模式,所述根据预设的随机模式,从所述目标连接表对应的多条路径中确定一条目标路径,包括:
获取由多个所述基本表组成的目标连接表对应的多条路径;
计算得到每条所述路径的启动代价;
将多条所述路径中满足预设的第二代价要求的路径确定为第二待选路径;其中,所述第二代价要求为启动代价小于第二预设值,或者属于启动代价最小的前第二预设数量条路径或前第二预设百分比的路径;
从各条所述第二待选路径中随机选取一条目标路径。
进一步地,所述随机模式为第四随机模式,所述根据预设的随机模式,从所述目标连接表对应的多条路径中确定一条目标路径,包括:
获取由多个所述基本表组成的目标连接表对应的多条路径;
计算得到每条所述路径的总代价和启动代价;
将多条所述路径中满足预设的第三代价要求的路径确定为第三待选路径;其中,所述第三代价要求为总代价小于第一预设值且启动代价小于第二预设值,或者属于总代价最小的前第一预设数量条路径或前第一预设百分比的路径且属于启动代价最小的前第二预设数量条路径或前第二预设百分比的路径;
从各条所述第三待选路径中随机选取一条目标路径。
进一步地,在采用随机方式,从目标连接表对应的多条路径中确定一条目标路径之前,所述方法还包括:
判断是否启动预设的随机模式;
当判断结果为是时,执行所述采用随机方式,从目标连接表对应的多条路径中确定一条目标路径的步骤。
第二方面,本发明实施例还提供了一种查询优化器的数据处理装置,所述装置包括:
获取模块,用于获取查询语句对应的多个基本表;
选取模块,用于采用随机方式,从目标连接表对应的多条路径中确定一条目标路径;其中,所述目标连接表由多个所述基本表组成,所述路径用于指示对所述目标连接表中的每个所述基本表中数据的访问方式,以及各个所述基本表之间的连接方式和连接顺序;
生成模块,用于由所述目标路径生成执行计划,以按照所述执行计划执行所述查询语句。
第三方面,本发明实施例还提供了一种电子设备,包括存储器、处理器,所述存储器中存储有可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现第一方面所述的查询优化器的数据处理方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行第一方面所述的查询优化器的数据处理方法。
本发明实施例提供的查询优化器的数据处理方法、装置及电子设备,应用于数据库内核测试,在生成执行计划时,先获取查询语句对应的多个基本表;然后采用随机方式,从目标连接表对应的多条路径中确定一条目标路径;其中,目标连接表由多个基本表组成,路径用于指示对目标连接表中的每个基本表中数据的访问方式,以及各个基本表之间的连接方式和连接顺序;进而由目标路径生成执行计划,以按照执行计划执行查询语句。这样使用相同的查询语句进行多次数据库内核测试时,采用随机方式确定出的目标路径不同,从而生成的执行计划不仅可以包含最优路径,还可以遍历到其他路径,因此提高了测试覆盖率。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为关系型数据库中的一条SQL语句的执行流程示意图;
图2为本发明实施例提供的一种查询优化器的数据处理方法的流程示意图;
图3为本发明实施例提供的一种查询优化器的数据处理装置的结构示意图;
图4为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合实施例对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,关系型数据库中的一条SQL语句的执行流程如下:SQL语句传递到语法分析器Parser进行词法分析、语法分析和语义检查,并为复杂的命令(如SELECT/INSERT/DELETE/UPDATE等)构建查询树,交给查询优化器中的查询重写模块;查询重写模块按照SQL语句所涉及的规则和视图对查询树进行查询重写,生成新的查询树;查询优化器中的生成路径模块根据重写过的查询树,采用动态规划算法或遗传算法等,生成最优路径;最后,查询优化器中的生成计划模块由最优路径生成执行计划,并将其传递到查询执行模块Executor执行,得到执行结果。
对于SQL语句的处理,就是获取一个(或者一系列)元组,然后将这个元组返回给用户或者以其为基础进行插入、更新、删除操作,因此执行计划用于告诉查询执行模块如何取到要操作的元组。执行计划要操作的元组可以来自于一个基本表或者由一系列基本表连接而成的连接表,这些基本表连接成连接表的关系可以从逻辑上表示成一个二叉树结构(即连接树),由于表之间不同的连接方式和连接顺序,同一组基本表形成连接表的连接树会有多个,每一颗连接树在数据库中都称为一条路径。因此,路径在查询的规划和执行过程中表示了从一组基本表生成最终连接表的方式,代表了对查询树中每个基本表中数据的访问方式以及基本表之间的连接方式和连接顺序。而查询优化器的工作就是从一系列等效的路径中选取效率最高的路径,并形成执行计划。
由于单个基本表的访问方式、两个表间的连接方式以及多个表间的连接顺序都有多种,因此访问一个基本表或多个表的路径也会有多种,每个路径都可能是上述访问方式、连接方式和连接顺序的一种组合。查询执行模块只需要执行效率最高的路径,因此查询优化器需要考虑所有的路径,并从中挑选出最优路径来生成执行计划,这个生成并挑选最优路径的工作由路径生成算法完成。
目前查询优化器通常采用CBO(Cost-Based Optimization,基于代价的优化)优化器,CBO优化器会挑选出总代价最小或启动代价最小的路径作为最优路径,其中,总代价是指SQL语句从开始执行到结束的所有代价,启动代价是指从SQL语句开始执行到查询执行模块返回第一条元组的代价,总代价包括启动代价和执行代价。
CBO优化器只会保留等效路径(同一组基本表所形成的连接表对应的多条路径)中代价最优的一条路径,其他非最优路径不会用来生成执行计划,因此在数据库内核测试中,仅凭借一条最优路径生成的执行计划来验证SQL语句的执行结果的正确性,测试覆盖率较低,无法保证数据库内核中各个模块的正确性。基于此,本发明实施例提供的一种查询优化器的数据处理方法、装置及电子设备,通过引入随机数开关,在多次数据库内核测试中使相同SQL语句可以按照相应参数生成多种路径,验证各种路径对应执行计划执行后结果的等价性、正确性,可以提高内核测试的代码覆盖率和测试场景覆盖率,即提高测试覆盖率。
为便于对本实施例进行理解,首先对本发明实施例所公开的一种查询优化器的数据处理方法进行详细介绍。
本发明实施例提供了一种查询优化器的数据处理方法,该方法应用于数据库内核测试,该方法可以由具有数据处理能力的电子设备执行,该电子设备上安装有查询优化器,查询优化器可以在CBO优化器中引入物理优化阶段的随机数开关得到,适用的路径生成算法包括动态规划算法和遗传算法。参见图2所示的一种查询优化器的数据处理方法的流程示意图,该方法主要包括如下步骤S202~步骤S206:
步骤S202,获取查询语句对应的多个基本表。
查询语句可以是SQL语句。基本表也称为基本关系,基本表可以是一个范围表或者是一个子查询。获取查询语句对应的多个基本表的具体过程可以参照相关现有技术,例如可以获取语法分析模器对SQL语句解析后得到的扫描范围表(查询对象的信息),从扫描范围表中获取所有基本表。
步骤S204,采用随机方式,从目标连接表对应的多条路径中确定一条目标路径;其中,目标连接表由多个基本表组成,路径用于指示对目标连接表中的每个基本表中数据的访问方式,以及各个基本表之间的连接方式和连接顺序。
在一些可能的实施例中,可以在现有的CBO优化器中引入随机数开关,随机数开关用于输出随机种子,通过随机种子和预设的随机算法来随机选取目标路径;其中,随机算法可以根据实际需求选择,这里对随机算法不做限定。当随机数开关打开时,例如随机数开关输出的随机种子为非0值时,按照预设的随机模式来随机选择一条路径;当随机数开关关闭时,例如随机数开关输出的随机种子为0时,可以按照CBO优化器的原代码执行,即执行基于代价选择最优路径的过程。可选地,随机模式下,随机种子可以为大于0且小于INT32的正整数,例如随机种子为1~100之间的数值。对于同一查询语句,随机种子不同时,随机选出的目标路径通常是不同的。
基于此,在执行步骤S204之前,上述方法还包括判断是否启动预设的随机模式,例如通过判断随机数开关输出的随机种子是否为0,来判断是否启动预设的随机模式,若随机种子不为0,则随机模式的判断结果为是,若随机种子为0,则随机模式的判断结果为否;当随机模式的判断结果为是时,执行步骤S204:采用随机方式,从目标连接表对应的多条路径中确定一条目标路径;当随机模式的判断结果为否时,执行基于代价选择最优路径的步骤。
在一些可能的实施例中,上述随机模式可以包括第一随机模式、第二随机模式、第三随机模式或第四随机模式,第一随机模式表示从目标连接表对应的所有路径中随机选取目标路径,第二随机模式表示基于路径的总代价从目标连接表对应的所有路径中随机选取目标路径,第三随机模式表示基于路径的启动代价从目标连接表对应的所有路径中随机选取目标路径,第四随机模式表示基于路径的总代价和启动代价从目标连接表对应的所有路径中随机选取目标路径。后续将对上述四种随机模式进行详细介绍。
步骤S206,由目标路径生成执行计划。
由目标路径生成执行计划的具体过程可以参照相关现有技术,这里不再赘述。
本发明实施例提供的查询优化器的数据处理方法,应用于数据库内核测试,在生成执行计划时,先获取查询语句对应的多个基本表;然后采用随机方式,从目标连接表对应的多条路径中确定一条目标路径;其中,目标连接表由多个基本表组成,路径用于指示对目标连接表中的每个基本表中数据的访问方式,以及各个基本表之间的连接方式和连接顺序;进而由目标路径生成执行计划,以按照执行计划执行查询语句。这样使用相同的查询语句进行多次数据库内核测试时,采用随机方式确定出的目标路径不同,从而生成的执行计划不仅可以包含最优路径,还可以遍历到其他路径,因此提高了测试覆盖率。
为了便于理解,本发明实施例还提供了基于上述四种随机模式随机选取目标路径的具体过程,如下:
1、第一随机模式
方式一:先获取由多个基本表组成的目标连接表对应的多条路径,再基于随机种子从多条路径中随机选取目标路径。
这种方式能够覆盖所有的路径。
方式二:
1)以基本表为节点构建目标路径的第一层;在第一层中,对于每个基本表,保存采用预设的随机算法从该基本表对应的多种访问方式中确定的一种访问方式。其中,随机算法可以根据实际需求选择,访问方式可以包括顺序扫描、TID(Tuple Identifier,元组标识符)扫描、索引扫描等多种方式,其中,索引扫描包括只读索引扫描。
2)以由两个基本表组成的第二连接表为节点构建目标路径的第二层;在第二层中,将第一层中的各个基本表两两连接,得到每个第二连接表对应的多条第二路径,并保存采用随机算法从每个第二连接表对应的多条第二路径中确定的一条第二路径,其中,每个第二连接表对应的不同第二路径所对应的连接方式不同。连接方式可以包括嵌套循环连接、归并连接、Hash连接等多种方式。
······
k)以由k个基本表组成的第k连接表为节点构建目标路径的第k层;在第k层中,将第mk层中的各个第mk连接表与第nk层中的各个第nk连接表两两连接,得到每个第k连接表对应的多条第k路径,并保存采用随机算法从每个第k连接表对应的多条第k路径中确定的一条第k路径,其中,每个第k连接表对应的不同第k路径所对应的连接顺序不同,k为大于2且小于N的整数,N为基本表的数量,mk和nk均为随机选取的正整数,且mk+nk=k,当mk或nk为1时,对应的第一连接表为基本表。连接顺序可以包括左连接、右连接、布希连接等多种方式。
······
N)以由N个基本表组成的目标连接表为节点构建目标路径的第N层;在第N层中,将第mN层中的各个第mN连接表与第nN层中的各个第nN连接表两两连接,得到目标连接表对应的多条路径,并保存采用随机算法从目标连接表对应的多条路径中确定的一条目标路径,其中,目标连接表包括全部的基本表,mN和nN均为正整数,且mN+nN=N。
这种方式能够覆盖所有的路径,且不需要获取目标连接表对应的全部路径,与上述方式一相比,降低了计算量,提高了测试效率。
2、第二随机模式
方式一:获取由多个基本表组成的目标连接表对应的多条路径;计算得到每条路径的总代价;将多条路径中满足预设的第一代价要求的路径确定为第一待选路径;其中,第一代价要求为总代价小于第一预设值;从各条第一待选路径中随机选取一条目标路径。第一预设值可以根据实际需求设置,这里不做限定。
方式二:获取由多个基本表组成的目标连接表对应的多条路径;计算得到每条路径的总代价;将多条路径中满足预设的第一代价要求的路径确定为第一待选路径;其中,第一代价要求为属于总代价最小的前第一预设数量条路径;从各条第一待选路径中随机选取一条目标路径。第一预设数量可以根据实际需求设置,这里不做限定,例如若第一预设数量为50,则将属于总代价最小的前50条路径作为第一待选路径。
方式三:获取由多个基本表组成的目标连接表对应的多条路径;计算得到每条路径的总代价;将多条路径中满足预设的第一代价要求的路径确定为第一待选路径;其中,第一代价要求为属于总代价最小的前第一预设百分比的路径;从各条第一待选路径中随机选取一条目标路径。第一预设百分比可以根据实际需求设置,这里不做限定,例如若第一预设百分比为60%,则将属于总代价最小的前60%的路径作为第一待选路径。
采用上述第二随机模式随机选取目标路径时,考虑了总代价的影响。
3、第三随机模式
方式一:获取由多个基本表组成的目标连接表对应的多条路径;计算得到每条路径的启动代价;将多条路径中满足预设的第二代价要求的路径确定为第二待选路径;其中,第二代价要求为启动代价小于第二预设值;从各条第二待选路径中随机选取一条目标路径。第二预设值可以根据实际需求设置,这里不做限定;通常情况下,第二预设值小于上述第一预设值。
方式二:获取由多个基本表组成的目标连接表对应的多条路径;计算得到每条路径的启动代价;将多条路径中满足预设的第二代价要求的路径确定为第二待选路径;其中,第二代价要求为属于启动代价最小的前第二预设数量条路径;从各条第二待选路径中随机选取一条目标路径。第二预设数量可以根据实际需求设置,这里不做限定。
方式三:获取由多个基本表组成的目标连接表对应的多条路径;计算得到每条路径的启动代价;将多条路径中满足预设的第二代价要求的路径确定为第二待选路径;其中,第二代价要求为属于启动代价最小的前第二预设百分比的路径;从各条第二待选路径中随机选取一条目标路径。第二预设百分比可以根据实际需求设置,这里不做限定。
采用上述第三随机模式随机选取目标路径时,考虑了启动代价的影响。
4、第四随机模式
第四随机模式结合了上述第二随机模式和第三随机模式,具体实现方式可以包括:
方式一:获取由多个基本表组成的目标连接表对应的多条路径;计算得到每条路径的总代价和启动代价;将多条路径中满足预设的第三代价要求的路径确定为第三待选路径;其中,第三代价要求为总代价小于第一预设值且启动代价小于第二预设值;从各条第三待选路径中随机选取一条目标路径。
方式二:获取由多个基本表组成的目标连接表对应的多条路径;计算得到每条路径的总代价和启动代价;将多条路径中满足预设的第三代价要求的路径确定为第三待选路径;其中,第三代价要求为属于总代价最小的前第一预设数量条路径且属于启动代价最小的前第二预设数量条路径;从各条第三待选路径中随机选取一条目标路径。
方式三:获取由多个基本表组成的目标连接表对应的多条路径;计算得到每条路径的总代价和启动代价;将多条路径中满足预设的第三代价要求的路径确定为第三待选路径;其中,第三代价要求为属于总代价最小的前第一预设百分比的路径且属于启动代价最小的前第二预设百分比的路径;从各条第三待选路径中随机选取一条目标路径。
方式四:获取由多个基本表组成的目标连接表对应的多条路径;计算得到每条路径的总代价和启动代价;将多条路径中满足预设的第三代价要求的路径确定为第三待选路径;其中,第三代价要求为属于总代价最小的前第一预设数量条路径且属于启动代价最小的前第二预设百分比的路径;从各条第三待选路径中随机选取一条目标路径。
方式五:获取由多个基本表组成的目标连接表对应的多条路径;计算得到每条路径的总代价和启动代价;将多条路径中满足预设的第三代价要求的路径确定为第三待选路径;其中,第三代价要求为属于总代价最小的前第一预设百分比的路径且属于启动代价最小的前第二预设数量条路径;从各条第三待选路径中随机选取一条目标路径。
采用上述第四随机模式随机选取目标路径时,考虑了总代价和启动代价的影响。
为了便于理解,以第一随机模式的方式二,查询优化器中物理优化阶段采用的路径生成算法为动态规划算法(通常通过动态规划算法对于小于12张基本表的连接求解目标路径)为例,假设用户有A、B、C、D四张表做连接,动态规划算法的运行过程表如下表1所示。
表1
Figure BDA0003455500340000141
Figure BDA0003455500340000151
本实施例中,在上述每一层随机保留可能的路径。具体地,第一层中的每个基本表,只保留通过随机种子和预设的随机算法随机选取的一种访问方式,例如,{A},{B}均保留顺序扫描,{C},{D}均保留索引扫描。第二层中的每个第二连接表,只保留通过随机种子和随机算法随机选取的一种连接方式对应的第二路径,例如{AB}保留嵌套循环连接,{AC}保留归并连接等。第三层中的每个第三连接表,只保留通过随机种子和随机算法随机选取的一种连接顺序对应的第三路径,例如{ABC}保留{AB,C},{ABD}保留{A,BD}等。第四层中的目标连接表,只保留通过随机种子和随机算法随机选取的一种连接顺序对应的目标路径,例如{ABCD}保留{B,ABD}。
这样通过引入针对动态规划算法的物理优化阶段的随机数开关,对每个基本表的扫描方式、两表的连接方式、多表的连接顺序的优化结果的保存引入随机成分,使多表连接的运算执行路径不仅包含最优路径还可以遍历到其他路径,即相同的SQL语句在随机数开关的控制下可以保留与最优路径等价但可能不同的路径,生成不同的执行计划,因此提高了内核测试的代码覆盖率和测试场景覆盖率。
对应于上述的查询优化器的数据处理方法,本发明实施例还提供了一种查询优化器的数据处理装置,该装置应用于数据库内核测试。参见图3所示的一种查询优化器的数据处理装置的结构示意图,该装置包括:
获取模块32,用于获取查询语句对应的多个基本表;
选取模块34,用于采用随机方式,从目标连接表对应的多条路径中确定一条目标路径;其中,目标连接表由多个基本表组成,路径用于指示对目标连接表中的每个基本表中数据的访问方式,以及各个基本表之间的连接方式和连接顺序;
生成模块36,用于由目标路径生成执行计划,以按照执行计划执行查询语句。
本发明实施例提供的查询优化器的数据处理装置,在生成执行计划时,先获取查询语句对应的多个基本表;然后采用随机方式,从目标连接表对应的多条路径中确定一条目标路径;其中,目标连接表由多个基本表组成,路径用于指示对目标连接表中的每个基本表中数据的访问方式,以及各个基本表之间的连接方式和连接顺序;进而由目标路径生成执行计划,以按照执行计划执行查询语句。这样使用相同的查询语句进行多次数据库内核测试时,采用随机方式确定出的目标路径不同,从而生成的执行计划不仅可以包含最优路径,还可以遍历到其他路径,因此提高了测试覆盖率。
可选地,上述选取模块34具体用于:根据预设的随机模式,从目标连接表对应的多条路径中确定一条目标路径;其中,随机模式包括第一随机模式、第二随机模式、第三随机模式或第四随机模式,第一随机模式表示从目标连接表对应的所有路径中随机选取目标路径,第二随机模式表示基于路径的总代价从目标连接表对应的所有路径中随机选取目标路径,第三随机模式表示基于路径的启动代价从目标连接表对应的所有路径中随机选取目标路径,第四随机模式表示基于路径的总代价和启动代价从目标连接表对应的所有路径中随机选取目标路径。
在一些可能的实施例中,上述随机模式为第一随机模式,上述选取模块34具体用于:
以基本表为节点构建目标路径的第一层;在第一层中,对于每个基本表,保存采用预设的随机算法从该基本表对应的多种访问方式中确定的一种访问方式;
以由两个基本表组成的第二连接表为节点构建目标路径的第二层;在第二层中,将第一层中的各个基本表两两连接,得到每个第二连接表对应的多条第二路径,并保存采用随机算法从每个第二连接表对应的多条第二路径中确定的一条第二路径,其中,每个第二连接表对应的不同第二路径所对应的连接方式不同;
以由k个基本表组成的第k连接表为节点构建目标路径的第k层;在第k层中,将第mk层中的各个第mk连接表与第nk层中的各个第nk连接表两两连接,得到每个第k连接表对应的多条第k路径,并保存采用随机算法从每个第k连接表对应的多条第k路径中确定的一条第k路径,其中,每个第k连接表对应的不同第k路径所对应的连接顺序不同,k为大于2且小于N的整数,N为基本表的数量,mk和nk均为随机选取的正整数,且mk+nk=k,当mk或nk为1时,对应的第一连接表为基本表;
以由N个基本表组成的目标连接表为节点构建目标路径的第N层;在第N层中,将第mN层中的各个第mN连接表与第nN层中的各个第nN连接表两两连接,得到目标连接表对应的多条路径,并保存采用随机算法从目标连接表对应的多条路径中确定的一条目标路径,其中,mN和nN均为正整数,且mN+nN=N。
在另一些可能的实施例中,上述随机模式为第二随机模式,上述选取模块34具体用于:
获取由多个基本表组成的目标连接表对应的多条路径;
计算得到每条路径的总代价;
将多条路径中满足预设的第一代价要求的路径确定为第一待选路径;其中,第一代价要求为总代价小于第一预设值,或者属于总代价最小的前第一预设数量条路径或前第一预设百分比的路径;
从各条第一待选路径中随机选取一条目标路径。
在另一些可能的实施例中,上述随机模式为第三随机模式,上述选取模块34具体用于:
获取由多个基本表组成的目标连接表对应的多条路径;
计算得到每条路径的启动代价;
将多条路径中满足预设的第二代价要求的路径确定为第二待选路径;其中,第二代价要求为启动代价小于第二预设值,或者属于启动代价最小的前第二预设数量条路径或前第二预设百分比的路径;
从各条第二待选路径中随机选取一条目标路径。
在另一些可能的实施例中,上述随机模式为第四随机模式,上述选取模块34具体用于:
获取由多个基本表组成的目标连接表对应的多条路径;
计算得到每条路径的总代价和启动代价;
将多条路径中满足预设的第三代价要求的路径确定为第三待选路径;其中,第三代价要求为总代价小于第一预设值且启动代价小于第二预设值,或者属于总代价最小的前第一预设数量条路径或前第一预设百分比的路径且属于启动代价最小的前第二预设数量条路径或前第二预设百分比的路径;
从各条第三待选路径中随机选取一条目标路径。
可选地,上述装置还包括与选取模块34连接的判断模块,用于判断是否启动预设的随机模式;上述选取模块34用于当判断模块的判断结果为是时,采用随机方式,从目标连接表对应的多条路径中确定一条目标路径。
本实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
参见图4,本发明实施例还提供一种电子设备100,包括:处理器40,存储器41,总线42和通信接口43,所述处理器40、通信接口43和存储器41通过总线42连接;处理器40用于执行存储器41中存储的可执行模块,例如计算机程序。
其中,存储器41可能包含随机存取存储器(Random Access Memory,简称RAM),也可能还包括非易失性存储器(non-volatile memory,简称NVM),例如至少一个磁盘存储器。通过至少一个通信接口43(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。
总线42可以是工业标准体系结构(Industry Standard Architecture,简称ISA)总线、外设部件互连标准(Peripheral Component Interconnect,简称PCI)总线或扩展工业标准结构(Extended Industry Standard Architecture,简称EISA)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
其中,存储器41用于存储程序,所述处理器40在接收到执行指令后,执行所述程序,前述本发明实施例任一实施例揭示的流程定义的装置所执行的方法可以应用于处理器40中,或者由处理器40实现。
处理器40可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器40中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器40可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital SignalProcessing,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)、现成可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器41,处理器40读取存储器41中的信息,结合其硬件完成上述方法的步骤。
本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行前面方法实施例中所述的查询优化器的数据处理方法。该计算机可读存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,简称ROM)、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
在这里示出和描述的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制,因此,示例性实施例的其他示例可以具有不同的值。
附图中的流程图和框图显示了根据本发明的多个实施例的方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (10)

1.一种查询优化器的数据处理方法,其特征在于,所述方法包括:
获取查询语句对应的多个基本表;
采用随机方式,从目标连接表对应的多条路径中确定一条目标路径;其中,所述目标连接表由多个所述基本表组成,所述路径用于指示对所述目标连接表中的每个所述基本表中数据的访问方式,以及各个所述基本表之间的连接方式和连接顺序;
由所述目标路径生成执行计划,以按照所述执行计划执行所述查询语句。
2.根据权利要求1所述的方法,其特征在于,所述采用随机方式,从目标连接表对应的多条路径中确定一条目标路径,包括:
根据预设的随机模式,从所述目标连接表对应的多条路径中确定一条目标路径;
其中,所述随机模式包括第一随机模式、第二随机模式、第三随机模式或第四随机模式,所述第一随机模式表示从所述目标连接表对应的所有路径中随机选取所述目标路径,所述第二随机模式表示基于路径的总代价从所述目标连接表对应的所有路径中随机选取所述目标路径,所述第三随机模式表示基于路径的启动代价从所述目标连接表对应的所有路径中随机选取所述目标路径,所述第四随机模式表示基于路径的总代价和启动代价从所述目标连接表对应的所有路径中随机选取所述目标路径。
3.根据权利要求2所述的方法,其特征在于,所述随机模式为第一随机模式,所述根据预设的随机模式,从所述目标连接表对应的多条路径中确定一条目标路径,包括:
以所述基本表为节点构建所述目标路径的第一层;在所述第一层中,对于每个所述基本表,保存采用预设的随机算法从该基本表对应的多种访问方式中确定的一种访问方式;
以由两个所述基本表组成的第二连接表为节点构建所述目标路径的第二层;在所述第二层中,将所述第一层中的各个所述基本表两两连接,得到每个所述第二连接表对应的多条第二路径,并保存采用所述随机算法从每个所述第二连接表对应的多条第二路径中确定的一条第二路径,其中,每个所述第二连接表对应的不同第二路径所对应的连接方式不同;
以由k个所述基本表组成的第k连接表为节点构建所述目标路径的第k层;在所述第k层中,将第mk层中的各个第mk连接表与第nk层中的各个第nk连接表两两连接,得到每个所述第k连接表对应的多条第k路径,并保存采用所述随机算法从每个所述第k连接表对应的多条第k路径中确定的一条第k路径,其中,每个所述第k连接表对应的不同第k路径所对应的连接顺序不同,k为大于2且小于N的整数,N为所述基本表的数量,mk和nk均为随机选取的正整数,且mk+nk=k,当mk或nk为1时,对应的第一连接表为所述基本表;
以由N个所述基本表组成的目标连接表为节点构建所述目标路径的第N层;在所述第N层中,将第mN层中的各个第mN连接表与第nN层中的各个第nN连接表两两连接,得到所述目标连接表对应的多条路径,并保存采用所述随机算法从所述目标连接表对应的多条路径中确定的一条目标路径,其中,mN和nN均为正整数,且mN+nN=N。
4.根据权利要求2所述的方法,其特征在于,所述随机模式为第二随机模式,所述根据预设的随机模式,从所述目标连接表对应的多条路径中确定一条目标路径,包括:
获取由多个所述基本表组成的目标连接表对应的多条路径;
计算得到每条所述路径的总代价;
将多条所述路径中满足预设的第一代价要求的路径确定为第一待选路径;其中,所述第一代价要求为总代价小于第一预设值,或者属于总代价最小的前第一预设数量条路径或前第一预设百分比的路径;
从各条所述第一待选路径中随机选取一条目标路径。
5.根据权利要求2所述的方法,其特征在于,所述随机模式为第三随机模式,所述根据预设的随机模式,从所述目标连接表对应的多条路径中确定一条目标路径,包括:
获取由多个所述基本表组成的目标连接表对应的多条路径;
计算得到每条所述路径的启动代价;
将多条所述路径中满足预设的第二代价要求的路径确定为第二待选路径;其中,所述第二代价要求为启动代价小于第二预设值,或者属于启动代价最小的前第二预设数量条路径或前第二预设百分比的路径;
从各条所述第二待选路径中随机选取一条目标路径。
6.根据权利要求2所述的方法,其特征在于,所述随机模式为第四随机模式,所述根据预设的随机模式,从所述目标连接表对应的多条路径中确定一条目标路径,包括:
获取由多个所述基本表组成的目标连接表对应的多条路径;
计算得到每条所述路径的总代价和启动代价;
将多条所述路径中满足预设的第三代价要求的路径确定为第三待选路径;其中,所述第三代价要求为总代价小于第一预设值且启动代价小于第二预设值,或者属于总代价最小的前第一预设数量条路径或前第一预设百分比的路径且属于启动代价最小的前第二预设数量条路径或前第二预设百分比的路径;
从各条所述第三待选路径中随机选取一条目标路径。
7.根据权利要求1所述的方法,其特征在于,在采用随机方式,从目标连接表对应的多条路径中确定一条目标路径之前,所述方法还包括:
判断是否启动预设的随机模式;
当判断结果为是时,执行所述采用随机方式,从目标连接表对应的多条路径中确定一条目标路径的步骤。
8.一种查询优化器的数据处理装置,其特征在于,所述装置包括:
获取模块,用于获取查询语句对应的多个基本表;
选取模块,用于采用随机方式,从目标连接表对应的多条路径中确定一条目标路径;其中,所述目标连接表由多个所述基本表组成,所述路径用于指示对所述目标连接表中的每个所述基本表中数据的访问方式,以及各个所述基本表之间的连接方式和连接顺序;
生成模块,用于由所述目标路径生成执行计划,以按照所述执行计划执行所述查询语句。
9.一种电子设备,包括存储器、处理器,所述存储器中存储有可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1-7中任一项所述的方法。
10.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,其特征在于,所述计算机程序被处理器运行时执行权利要求1-7中任一项所述的方法。
CN202210002870.7A 2022-01-04 2022-01-04 查询优化器的数据处理方法、装置及电子设备 Pending CN114328612A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210002870.7A CN114328612A (zh) 2022-01-04 2022-01-04 查询优化器的数据处理方法、装置及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210002870.7A CN114328612A (zh) 2022-01-04 2022-01-04 查询优化器的数据处理方法、装置及电子设备

Publications (1)

Publication Number Publication Date
CN114328612A true CN114328612A (zh) 2022-04-12

Family

ID=81022621

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210002870.7A Pending CN114328612A (zh) 2022-01-04 2022-01-04 查询优化器的数据处理方法、装置及电子设备

Country Status (1)

Country Link
CN (1) CN114328612A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115114325A (zh) * 2022-06-24 2022-09-27 腾讯科技(深圳)有限公司 数据查询方法、装置、电子设备以及存储介质
CN115203248A (zh) * 2022-09-14 2022-10-18 云和恩墨(北京)信息技术有限公司 数据库表空间的快速查询方法及装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115114325A (zh) * 2022-06-24 2022-09-27 腾讯科技(深圳)有限公司 数据查询方法、装置、电子设备以及存储介质
CN115114325B (zh) * 2022-06-24 2023-04-18 腾讯科技(深圳)有限公司 数据查询方法、装置、电子设备以及存储介质
CN115203248A (zh) * 2022-09-14 2022-10-18 云和恩墨(北京)信息技术有限公司 数据库表空间的快速查询方法及装置

Similar Documents

Publication Publication Date Title
CN110321344B (zh) 关联数据的信息查询方法、装置、计算机设备及存储介质
JP7021228B2 (ja) ブロックチェーンベースのデータ記憶および照会方法およびデバイス
CN110795455B (zh) 依赖关系解析方法、电子装置、计算机设备及可读存储介质
US8332389B2 (en) Join order for a database query
CN114328612A (zh) 查询优化器的数据处理方法、装置及电子设备
CN105975617A (zh) 一种多分区表查询处理的方法和装置
US10726006B2 (en) Query optimization using propagated data distinctness
CN112988782B (zh) Hive支持交互式查询的方法、装置及存储介质
US20130159347A1 (en) Automatic and dynamic design of cache groups
CN109299101B (zh) 数据检索方法、装置、服务器和存储介质
CN111125199B (zh) 一种数据库访问方法、装置及电子设备
CN111858607A (zh) 数据处理方法、装置、电子设备和计算机可读介质
CN116881287A (zh) 一种数据查询方法及相关设备
CN108549666B (zh) 一种数据表的排序方法、装置、设备及存储介质
CN115114325B (zh) 数据查询方法、装置、电子设备以及存储介质
CN116610694A (zh) 一种基于列和访问语句关系的规则校验方法和系统
CN114490724B (zh) 处理数据库查询语句的方法和装置
WO2023030461A1 (zh) 一种分布式数据库检测方法及装置
US20240045868A1 (en) Method and device for accelerating database operation
CN114547083A (zh) 数据处理方法、装置及电子设备
CN112765286A (zh) 一种基于关系数据库的查询方法及装置
CN112749189A (zh) 数据查询方法及装置
US11409746B2 (en) Method and apparatus for processing query using N-ary join operators
CN116680299B (zh) 数据库查询方法、系统、存储介质以及设备
JP7242343B2 (ja) 分析装置及び分析方法

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