本发明涉及数据库技术,特别是涉及一种数据库带物化的嵌套循环连接的优化方法、介质与设备。
背景技术:
1、嵌套循环连接是一种基本的连接方式。嵌套循环连接是通过两层循环,用第一张表t1做驱动节点,第二张表t2做被驱动节点,t1的每一条记录跟t2的每一条记录作比较,符合条件的就输出。
2、对于包含物化节点的嵌套循环连接,嵌套循环连接中的join条件无法下推到物化节点,会导致t1里的每一条记录,都需要与物化后的t2每一条记录做比较,效率较低。
技术实现思路
1、本发明的一个目的是提升嵌套循环连接的效率。
2、本发明一个进一步的目的是降低嵌套循环连接的资源消耗。
3、本发明一个进一步的目的是提升数据库的性能。
4、特别地,本发明提供了一种数据库带物化的嵌套循环连接的优化方法,其包括:
5、获取嵌套循环连接;
6、判断嵌套循环连接是否符合优化条件;
7、若是,则调用优化器创建包含物化索引节点的第一路径和包含物化节点的第二路径,物化索引节点能够在物化节点的基础上对被物化的数据生成索引;
8、判断执行第一路径的代价是否小于执行第二路径的代价,
9、在执行第一路径的代价小于执行第二路径的代价的情况下,调用优化器根据第一路径生成第一执行计划;
10、调用执行器执行第一执行计划。
11、可选地,判断嵌套循环连接是否符合优化条件的步骤包括:
12、判断嵌套循环连接的连接条件是否满足预设类型索引的查找条件;
13、若是,则判定符合优化条件;
14、预设类型索引包括:hash索引和btree索引。
15、可选地,判断嵌套循环连接是否符合优化条件的步骤之后还包括:
16、在嵌套循环连接不符合优化条件的情况下,调用优化器创建包含物化节点的第二路径,并根据包含物化节点的第二路径生成第二执行计划;
17、调用执行器执行第二执行计划。
18、可选地,调用执行器执行第一执行计划的步骤包括:
19、扫描嵌套循环连接中驱动节点的驱动数据;
20、判断是否为第一次以物化索引方式扫描嵌套循环连接中的被驱动节点;
21、若是,则扫描获取被驱动节点的被驱动数据;
22、将被驱动数据物化至内存中;
23、根据物化后的被驱动数据构建内存索引;
24、根据驱动数据通过内存索引逐一匹配满足嵌套循环连接中连接条件的被驱动数据;
25、将匹配结果返回至客户端。
26、可选地,判断是否为第一次以物化索引方式扫描嵌套循环连接中的被驱动节点的步骤之后还包括:
27、若否,则查询被驱动节点在内存中的内存索引;
28、根据驱动数据通过内存索引逐一匹配满足嵌套循环连接中连接条件的被驱动数据;
29、将匹配结果返回至客户端。
30、可选地,判断执行第一路径的代价是否小于执行第二路径的代价的步骤之后还包括:
31、在执行第一路径的代价大于执行第二路径的代价的情况下,调用优化器根据第二路径生成第二执行计划;
32、调用执行器执行第二执行计划。
33、可选地,判断执行第一路径的代价是否小于执行第二路径的代价的步骤之前包括:估算执行第一路径的代价和执行第二路径的代价;
34、估算执行第一路径的代价的步骤包括:估算执行物化索引节点所消耗的代价。
35、可选地,估算执行物化索引节点所消耗的代价的步骤包括:
36、估算构建索引所消耗的代价以及查找索引所消耗的代价。
37、根据本发明的另一个方面,还提供了一种机器可读存储介质,其上存储有机器可执行程序,机器可执行程序被处理器执行时实现上述任一种的数据库带物化的嵌套循环连接的优化方法。
38、根据本发明的又一个方面,还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并在处理器上运行的机器可执行程序,并且处理器执行机器可执行程序时实现上述任一种的数据库带物化的嵌套循环连接的优化方法。
39、本发明的数据库带物化的嵌套循环连接的优化方法,在处理嵌套循环连接的过程中,通过创建物化索引节点根据嵌套循环连接中的连接条件对被驱动节点中的数据物化之后再创建索引,随后驱动节点中的数据在进行匹配的过程中,会根据索引进行查询。通过此方法,能够将连接条件下推至目标节点,使得目标节点具备快速索引的能力,从而加速此类嵌套循环连接的执行速度,降低资源消耗,提升数据库的性能。
40、进一步地,本发明的数据库带物化的嵌套循环连接的优化方法,在获取嵌套循环连接之后,判断嵌套循环连接中的连接条件是否满足预设类型索引的查找条件,其中预设类型的索引包括hash索引和btree索引,当连接条件满足任一预设类型索引的查找条件时,调用优化器创建包含物化索引节点的第一路径和包含物化节点的第二路径;估算并判断执行第一路径的代价是否小于执行第二路径的代价,若是,则调用优化器根据第一路径生成第一执行计划,随后调用执行器执行第一执行计划。通过此方法,能够筛选出符合条件的嵌套循环连接,并且找到代价最小的执行路径从而生成最优执行计划,从而提升数据库执行嵌套循环连接的效率,提升数据库的性能。
41、根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。
1.一种数据库带物化的嵌套循环连接的优化方法,包括:
2.根据权利要求1所述的数据库带物化的嵌套循环连接的优化方法,其中,所述判断所述嵌套循环连接是否符合优化条件的步骤包括:
3.根据权利要求1所述的数据库带物化的嵌套循环连接的优化方法,其中,所述判断所述嵌套循环连接是否符合优化条件的步骤之后还包括:
4.根据权利要求1所述的数据库带物化的嵌套循环连接的优化方法,其中,所述调用执行器执行所述第一执行计划的步骤包括:
5.根据权利要求4所述的数据库带物化的嵌套循环连接的优化方法,其中,所述判断是否为第一次以物化索引方式扫描所述嵌套循环连接中的被驱动节点的步骤之后还包括:
6.根据权利要求1所述的数据库带物化的嵌套循环连接的优化方法,其中,所述判断执行所述第一路径的代价是否小于执行所述第二路径的代价的步骤之后还包括:
7.根据权利要求1所述的数据库带物化的嵌套循环连接的优化方法,其中,所述判断执行所述第一路径的代价是否小于执行所述第二路径的代价的步骤之前包括:估算执行所述第一路径的代价和执行所述第二路径的代价;
8.根据权利要求7所述的数据库带物化的嵌套循环连接的优化方法,其中,所述估算执行所述物化索引节点所消耗的代价的步骤包括:
9.一种机器可读存储介质,其上存储有机器可执行程序,所述机器可执行程序被处理器执行时实现根据权利要求1至8任一项所述的数据库带物化的嵌套循环连接的优化方法。
10.一种计算机设备,包括存储器、处理器及存储在所述存储器上并在所述处理器上运行的机器可执行程序,并且所述处理器执行所述机器可执行程序时实现根据权利要求1至8任一项所述的数据库带物化的嵌套循环连接的优化方法。