查询优化器的数据处理方法、装置及电子设备制造方法及图纸

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

【技术实现步骤摘要】
查询优化器的数据处理方法、装置及电子设备


[0001]本专利技术涉及数据库
,尤其是涉及一种查询优化器的数据处理方法、装置及电子设备。

技术介绍

[0002]查询优化器是负责生成SQL(Structured Query Language,结构化查询语言)语句的有效执行计划的数据库引擎组件。
[0003]在数据库实际使用中,查询优化器会根据SQL语句对应的查询树,生成多个路径,并保留最优路径,由最优路径生成执行计划,其中路径代表了对查询树中每个基本表中数据的访问方式以及基本表之间的连接方式和连接顺序。然而在数据库内核测试中,仅凭借一条最优路径生成的执行计划来验证SQL语句的执行结果的正确性,测试覆盖率较低,无法保证数据库内核中各个模块的正确性。

技术实现思路

[0004]本专利技术的目的在于提供一种查询优化器的数据处理方法、装置及电子设备,以提高测试覆盖率。
[0005]第一方面,本专利技术实施例提供了一种查询优化器的数据处理方法,所述方法包括:
[0006]获取查询语句对应的多个基本表;
[0007]采用随机方式,从目标连接表对应的多条路径中确定一条目标路径;其中,所述目标连接表由多个所述基本表组成,所述路径用于指示对所述目标连接表中的每个所述基本表中数据的访问方式,以及各个所述基本表之间的连接方式和连接顺序;
[0008]由所述目标路径生成执行计划,以按照所述执行计划执行所述查询语句。
[0009]进一步地,所述采用随机方式,从目标连接表对应的多条路径中确定一条目标路径,包括:
[0010]根据预设的随机模式,从所述目标连接表对应的多条路径中确定一条目标路径;
[0011]其中,所述随机模式包括第一随机模式、第二随机模式、第三随机模式或第四随机模式,所述第一随机模式表示从所述目标连接表对应的所有路径中随机选取所述目标路径,所述第二随机模式表示基于路径的总代价从所述目标连接表对应的所有路径中随机选取所述目标路径,所述第三随机模式表示基于路径的启动代价从所述目标连接表对应的所有路径中随机选取所述目标路径,所述第四随机模式表示基于路径的总代价和启动代价从所述目标连接表对应的所有路径中随机选取所述目标路径。
[0012]进一步地,所述随机模式为第一随机模式,所述根据预设的随机模式,从所述目标连接表对应的多条路径中确定一条目标路径,包括:
[0013]以所述基本表为节点构建所述目标路径的第一层;在所述第一层中,对于每个所述基本表,保存采用预设的随机算法从该基本表对应的多种访问方式中确定的一种访问方式;
[0014]以由两个所述基本表组成的第二连接表为节点构建所述目标路径的第二层;在所述第二层中,将所述第一层中的各个所述基本表两两连接,得到每个所述第二连接表对应的多条第二路径,并保存采用所述随机算法从每个所述第二连接表对应的多条第二路径中确定的一条第二路径,其中,每个所述第二连接表对应的不同第二路径所对应的连接方式不同;
[0015]以由k个所述基本表组成的第k连接表为节点构建所述目标路径的第k层;在所述第k层中,将第m
k
层中的各个第m
k
连接表与第n
k
层中的各个第n
k
连接表两两连接,得到每个所述第k连接表对应的多条第k路径,并保存采用所述随机算法从每个所述第k连接表对应的多条第k路径中确定的一条第k路径,其中,每个所述第k连接表对应的不同第k路径所对应的连接顺序不同,k为大于2且小于N的整数,N为所述基本表的数量,m
k
和n
k
均为随机选取的正整数,且m
k
+n
k
=k,当m
k
或n
k
为1时,对应的第一连接表为所述基本表;
[0016]以由N个所述基本表组成的目标连接表为节点构建所述目标路径的第N层;在所述第N层中,将第m
N
层中的各个第m
N
连接表与第n
N
层中的各个第n
N
连接表两两连接,得到所述目标连接表对应的多条路径,并保存采用所述随机算法从所述目标连接表对应的多条路径中确定的一条目标路径,其中,m
N
和n
N
均为正整数,且m
N
+n
N
=N。
[0017]进一步地,所述随机模式为第二随机模式,所述根据预设的随机模式,从所述目标连接表对应的多条路径中确定一条目标路径,包括:
[0018]获取由多个所述基本表组成的目标连接表对应的多条路径;
[0019]计算得到每条所述路径的总代价;
[0020]将多条所述路径中满足预设的第一代价要求的路径确定为第一待选路径;其中,所述第一代价要求为总代价小于第一预设值,或者属于总代价最小的前第一预设数量条路径或前第一预设百分比的路径;
[0021]从各条所述第一待选路径中随机选取一条目标路径。
[0022]进一步地,所述随机模式为第三随机模式,所述根据预设的随机模式,从所述目标连接表对应的多条路径中确定一条目标路径,包括:
[0023]获取由多个所述基本表组成的目标连接表对应的多条路径;
[0024]计算得到每条所述路径的启动代价;
[0025]将多条所述路径中满足预设的第二代价要求的路径确定为第二待选路径;其中,所述第二代价要求为启动代价小于第二预设值,或者属于启动代价最小的前第二预设数量条路径或前第二预设百分比的路径;
[0026]从各条所述第二待选路径中随机选取一条目标路径。
[0027]进一步地,所述随机模式为第四随机模式,所述根据预设的随机模式,从所述目标连接表对应的多条路径中确定一条目标路径,包括:
[0028]获取由多个所述基本表组成的目标连接表对应的多条路径;
[0029]计算得到每条所述路径的总代价和启动代价;
[0030]将多条所述路径中满足预设的第三代价要求的路径确定为第三待选路径;其中,所述第三代价要求为总代价小于第一预设值且启动代价小于第二预设值,或者属于总代价最小的前第一预设数量条路径或前第一预设百分比的路径且属于启动代价最小的前第二预设数量条路径或前第二预设百分比的路径;
[0031]从各条所述第三待选路径中随机选取一条目标路径。
[0032]进一步地,在采用随机方式,从目标连接表对应的多条路径中确定一条目标路径之前,所述方法还包括:
[0033]判断是否启动预设的随机模式;
[0034]当判断结果为是时,执行所述采用随机方式,从目标连接表对应的多条路径中确定一条目标路径的步骤。
[0035]第二方面,本专利技术实施例还提供了一种查询优化器的数据处理装置,所述装置包括:
[0036]获取模块,用于获取查询语句对应的多个基本表;
[0037]选取模块,用于采用随机方式,从目标连接表对应的多本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种查询优化器的数据处理方法,其特征在于,所述方法包括:获取查询语句对应的多个基本表;采用随机方式,从目标连接表对应的多条路径中确定一条目标路径;其中,所述目标连接表由多个所述基本表组成,所述路径用于指示对所述目标连接表中的每个所述基本表中数据的访问方式,以及各个所述基本表之间的连接方式和连接顺序;由所述目标路径生成执行计划,以按照所述执行计划执行所述查询语句。2.根据权利要求1所述的方法,其特征在于,所述采用随机方式,从目标连接表对应的多条路径中确定一条目标路径,包括:根据预设的随机模式,从所述目标连接表对应的多条路径中确定一条目标路径;其中,所述随机模式包括第一随机模式、第二随机模式、第三随机模式或第四随机模式,所述第一随机模式表示从所述目标连接表对应的所有路径中随机选取所述目标路径,所述第二随机模式表示基于路径的总代价从所述目标连接表对应的所有路径中随机选取所述目标路径,所述第三随机模式表示基于路径的启动代价从所述目标连接表对应的所有路径中随机选取所述目标路径,所述第四随机模式表示基于路径的总代价和启动代价从所述目标连接表对应的所有路径中随机选取所述目标路径。3.根据权利要求2所述的方法,其特征在于,所述随机模式为第一随机模式,所述根据预设的随机模式,从所述目标连接表对应的多条路径中确定一条目标路径,包括:以所述基本表为节点构建所述目标路径的第一层;在所述第一层中,对于每个所述基本表,保存采用预设的随机算法从该基本表对应的多种访问方式中确定的一种访问方式;以由两个所述基本表组成的第二连接表为节点构建所述目标路径的第二层;在所述第二层中,将所述第一层中的各个所述基本表两两连接,得到每个所述第二连接表对应的多条第二路径,并保存采用所述随机算法从每个所述第二连接表对应的多条第二路径中确定的一条第二路径,其中,每个所述第二连接表对应的不同第二路径所对应的连接方式不同;以由k个所述基本表组成的第k连接表为节点构建所述目标路径的第k层;在所述第k层中,将第m
k
层中的各个第m
k
连接表与第n
k
层中的各个第n
k
连接表两两连接,得到每个所述第k连接表对应的多条第k路径,并保存采用所述随机算法从每个所述第k连接表对应的多条第k路径中确定的一条第k路径,其中,每个所述第k连接表对应的不同第k路径所对应的连接顺序不同,k为大于2且小于N的整数,N为所述基本表的数量,m
k
和n
k
均为随机选取的正整数,且m
k
+n
k
=k,当m
k
或n
k
为1时,对应的第一连接表为所述基本表;以由N个所述基本表组成的目标连接表为节点构建所述目标路径的第N层;在所述第N层中,将第m
N
层中的各个第m
N
连接表与第n
N
层中的各个第n
N
连接表两两连接,得到所述目标连接表对应的多条路径,并保存采用所述随机算法从所述目标连接表对应的多...

【专利技术属性】
技术研发人员:李金鑫
申请(专利权)人:北京金山云网络技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1