System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及数据库,尤其涉及算子融合方法及相关装置。
技术介绍
1、当今世界是一个充满着数据的互联网世界,数据库相当于一个按照数据结构来组织、存储和管理数据的电子仓库,它的存储空间很大,可以存放上亿条数据。其中,可以通过查询语句从数据库的表中检索数据。例如,select*from employees,可以实现从employees表中查询员工的信息。
2、随着数据查询需求的不断增长,如何提升查询语句的查询效率,是目前亟待解决的问题。
技术实现思路
1、本申请提供了算子融合方法及相关装置,实现了针对sql查询语句的算子融合,简化分组聚合查询的步骤,加快查询速度。
2、第一方面,本申请提供了一种算子融合方法,该方法包括:获取sql查询语句,该sql查询语句中包括连接join子句、分组聚合groupby子句以及聚合函数,该连接join子句位于该分组聚合groupby子句之前;根据该sql查询语句确定执行计划,其中,在该sql查询语句满足融合条件的情况下,该sql查询语句的执行计划中包括哈希分组连接hashgroupjoin算子,该哈希分组连接hashgroupjoin算子用于实现该连接join子句、分组聚合groupby子句以及该聚合函数的查询功能,该连接join子句对应的物理算子为哈希连接hash join算子,该分组聚合group by子句对应的物理算子为哈希分组聚合hash groupby算子,该融合条件包括:该哈希连接hash join算子的其中一个表的关联键
3、实施本申请实施例提供的方法,可以在sql查询语句满足融合条件的情况下,将该sql查询语句的执行计划中包含的多个算子融合成一个算子,简化执行计划,缩短运行执行计划时的执行步骤,加快查询速度,提升查询性能。
4、结合第一方面,在一种实现方式中,满足线性可拆分的聚合函数满足以下公式:
5、f(x1,x2,x3,…,xn)=f(x1,x2,x3,…)+f(…,xn)
6、其中,f()表示聚合函数,x1,x2,x3,…,xn表示使用聚合函数进行计算的n个数值。
7、也就是说,将多个算子融合成一个算子后进行聚合函数的计算时,可以将聚合函数拆分成多个子函数进行同时运算,缩短聚合函数的计算时间。
8、结合第一方面,在一种实现方式中,运行该执行计划,具体包括:运行该哈希分组连接hashgroupjoin算子;运行该哈希分组连接hashgroupjoin算子,具体包括:利用第一表构建哈希表,该第一表为该哈希分组连接hashgroupjoin算子所在节点的一个子节点输出的数据表,该哈希表用于记录该第一表中记录的该哈希连接hash join算子的分组键对应的分组键值,以及相同的分组键值的数量,该聚合函数的初始值,并且,该哈希表中记录的分组键值不包括重复的分组键值;利用第二表探测哈希表,通过该关联键计算该哈希表中的该聚合函数的结果值,该第二表为该哈希分组连接hashgroupjoin算子所在节点的另一个子节点输出的数据表;根据该连接join子句对应的连接类型,利用该哈希表确定该哈希分组连接hashgroupjoin算子所在节点输出的数据表,该数据表用于记录该第一表中记录的部分或全部该哈希连接hash join算子的关联键对应的关联键值,以及该聚合函数的结果值。
9、运行算子融合后的执行计划具体包括三个步骤:1)构建哈希表;2)探测哈希表;3)扫描哈希表。其中,运行该融合算子只需要构建并维护一个哈希表,即可同时完成sql查询语句中的分组聚合以及连接操作,加快了数据库的数据查询速度,提升了数据库的查询性能。
10、结合第一方面,在一种实现方式中,利用第二表探测哈希表,通过该关联键计算该哈希表中的该聚合函数的结果值,具体包括:读取该第二表中的每一条记录,并在读取其中一条记录时,查找该哈希表中,与该记录满足关联键对应的关联条件的记录,并利用该哈希表中满足该关联条件的记录,计算该聚合函数的结果值。
11、也就是说,在探测哈希表的过程中,可以通过关联匹配计算哈希表中记录的聚合函数的结果值。
12、结合第一方面,在一种实现方式中,当该连接join子句对应的连接类型为内连接时,该数据表中包含该第一表和该第二表中满足关联键对应的关联条件的记录,不包含该第一表和该第二表中不满足关联键对应的关联条件的记录;当该连接join子句对应的连接类型为外连接时,该数据表中包含该第一表和第二表中满足关联键对应的关联条件的记录,还包含该第一表和/或该第二表中不满足关联键对应的关联条件的记录,并且,该不满足关联键对应的关联条件的记录对应的聚合函数的结果值为空值。
13、也就是说,扫描哈希表是为了根据该融合算子涉及的连接类型,从哈希表中得到运行该融合算子时,输出的相应结构的数据表。从而保证运行融合算子输出的数据表的结构与连接类型对应的结构相匹配。
14、结合第一方面,在一种实现方式中,该第一表和该第二表为非普通表。
15、也就是说,哈希分组连接hashgroupjoin算子所在节点的子节点可以不是普通表扫描算子,可以是其他物理算子,放宽了算子融合技术的约束条件,拓宽了算子融合的适用性。
16、结合第一方面,在一种实现方式中,该第一表为该哈希分组连接hashgroupjoin算子所在节点的左子节点输出的数据表,该第二表为该哈希分组连接hashgroupjoin算子所在节点的右子节点输出的数据表;或者,该第一表为该哈希分组连接hashgroupjoin算子所在节点的右子节点输出的数据表,该第二表为该哈希分组连接hashgroupjoin算子所在节点的左子节点输出的数据表。
17、可以看出,本申请实施例对哈希分组连接hashgroupjoin算子中用于构建哈希表的子节点不作限制,可以使用哈希分组连接hashgroupjoin算子的左子节点输出的数据表构建哈希表,则使用哈希分组连接hashgroupjoin算子的右子节点输出的数据表探测哈希表,相应的,也可以使用哈希分组连接hashgroupjoin算子的右子节点输出的数据表构建哈希表,则使用哈希分组连接hashgroupjoin算子的左子节点输出的数据表探测哈希表。可见,本申请实施例提供的算子融合方法在运行融合算子上的灵活性大,限制少。
18、结合第一方面,在一种实现方式中,该关联键不要求为表的主键。
19、也就是说,管连接可以为表的主键,也可以不是表的主键,进一步放宽了算子融合技术的约束,拓宽了算子融合技术在数据库查询中的适用范围。
20、结合第一方面,在一种实现方式中,确定该哈希分组连接hashgroupjoin算子所在节点输出的数据表的过程中,该方法还包括:根据该聚合函数的公式更新该聚合函数的结果值,该数据表中记录的该聚合本文档来自技高网...
【技术保护点】
1.一种算子融合方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,满足线性可拆分的聚合函数满足以下公式:
3.根据权利要求1或2所述的方法,其特征在于,运行所述执行计划,具体包括:
4.根据权利要求3所述的方法,其特征在于,利用第二表探测哈希表,通过所述关联键计算所述哈希表中的所述聚合函数的结果值,具体包括:
5.根据权利要求3或4所述的方法,其特征在于,
6.根据权利要求3-5任一项所述的方法,其特征在于,所述第一表和所述第二表为非普通表。
7.根据权利要求3-6任一项所述的方法,其特征在于,
8.根据权利要求3-7任一项所述的方法,其特征在于,所述关联键不要求为表的主键。
9.根据权利要求3-8任一项所述的方法,其特征在于,确定所述哈希分组连接HASHGROUPJOIN算子所在节点输出的数据表的过程中,所述方法还包括:
10.根据权利要求3-9任一项所述的方法,其特征在于,所述数据表中记录的所述聚合函数的结果值,还根据所述哈希表中记录的相同的分
11.根据权利要求3-10任一项所述的方法,其特征在于,获取SQL查询语句,具体包括:
12.一种电子设备,其特征在于,包括存储器,一个或多个处理器,以及一个或多个程序;所述一个或多个处理器在执行所述一个或多个程序时,使得所述电子设备实现如权利要求1至11任一项所述的方法。
13.一种计算机可读存储介质,包括指令,其特征在于,当所述指令在电子设备上运行时,使得所述电子设备执行如权利要求1至11任一项所述的方法。
14.一种计算机程序产品,其特征在于,当所述计算机程序产品在计算机上运行时,使得计算机执行如权利要求1至11任一项所述的方法。
...【技术特征摘要】
1.一种算子融合方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,满足线性可拆分的聚合函数满足以下公式:
3.根据权利要求1或2所述的方法,其特征在于,运行所述执行计划,具体包括:
4.根据权利要求3所述的方法,其特征在于,利用第二表探测哈希表,通过所述关联键计算所述哈希表中的所述聚合函数的结果值,具体包括:
5.根据权利要求3或4所述的方法,其特征在于,
6.根据权利要求3-5任一项所述的方法,其特征在于,所述第一表和所述第二表为非普通表。
7.根据权利要求3-6任一项所述的方法,其特征在于,
8.根据权利要求3-7任一项所述的方法,其特征在于,所述关联键不要求为表的主键。
9.根据权利要求3-8任一项所述的方法,其特征在于,确定所述哈希分组连接hashgroupjoi...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。