算子融合方法及相关装置与流程

文档序号:38869376发布日期:2024-08-02 02:41阅读:12来源:国知局
算子融合方法及相关装置与流程

本技术涉及数据库,尤其涉及算子融合方法及相关装置。


背景技术:

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算子的其中一个表的关联键与该哈希分组聚合hash groupby算子的分组键相同,以及该聚合函数的公式满足线性可拆分;运行该执行计划。

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算子所在节点输出的数据表的过程中,该方法还包括:根据该聚合函数的公式更新该聚合函数的结果值,该数据表中记录的该聚合函数的结果值为更新后的结果值。

21、结合第一方面,在一种实现方式中,该数据表中记录的该聚合函数的结果值,还根据该哈希表中记录的相同的分组键值的数量确定。

22、结合第一方面,在一种实现方式中,获取sql查询语句,具体包括:获取第一设备发送的sql查询语句;运行该执行计划之后,该方法还包括:将运行该执行计划得到的查询结果发送给该第一设备。

23、可以看出,本技术实施例提供的算子融合方法涉及包括客户端设备和服务器的通信系统,客户端设备可以将sql查询语句发送给服务器,服务器再对sql查询语句进行算子融合,并根据融合后的执行计划进行聚合查询,计算查询结果,并将查询结果返回给客户端设备。其中,采用算子融合后的执行计划进行聚合查询,可以缩短客户端设备获取到查询结果的时间,提升用户的体验感。

24、第二方面,本技术提供了一种电子设备,其特征在于,包括存储器,一个或多个处理器,以及一个或多个程序;该一个或多个处理器在执行该一个或多个程序时,使得该电子设备实现如第一方面或第一方面的任一实现方式所描述的方法。

25、第三方面,本技术提供了一种计算机可读存储介质,包括指令,当该指令在电子设备上运行时,使得该电子设备执行如第一方面或第一方面的任一实现方式所描述的方法。

26、第四方面,本技术提供了一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行如第一方面或第一方面的任一实现方式所描述的方法。

27、本技术实施例提供的算子融合方法能够在sql查询语句满足融合条件的情况下,对该sql查询语句对应的执行计划进行算子融合,使得运行执行计划进行分组聚合查询时,能够通过运行该融合后的算子缩短查询步骤,提升查询性能,加快查询速度。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1