基于哈希连接的探测方法、装置、设备及存储介质制造方法及图纸

技术编号:28373603 阅读:15 留言:0更新日期:2021-05-08 00:00
本申请公开了一种基于哈希连接的探测方法、装置、设备及存储介质,具体包括创建第一表格的哈希表,哈希表包括哈希槽;确定第一表格中各参考列数据在哈希表中对应的哈希槽;根据各参考列数据的哈希槽是否冲突选择相应的存储方式依次将各参考列数据所属的整行数据存储至对应的哈希槽,并根据存储结果设置各哈希槽的冲突标记;根据冲突标记和第二表格中的数据进行哈希探测,第二表格与第一表格哈希连接。在本方案中,根据哈希槽冲突与否选择不同的存储方式存储数据,并基于冲突标记进行哈希探测,可以解决现有技术中哈希连接存在的问题,提高哈希连接的性能。

【技术实现步骤摘要】
基于哈希连接的探测方法、装置、设备及存储介质
本申请实施例涉及关系型数据库领域,尤其涉及一种基于哈希连接的探测方法、装置、设备及存储介质。
技术介绍
连接操作是数据库中的基本操作,用于从两个关系的笛卡尔积中选取属性之间满足一定条件的元组,现有的连接技术有很多,比如,嵌套循环连接算法、基于归并排序的连接算法、基于哈希的连接算法、基于索引的连接算法等,不同的算法在不同应用场景下有不同的性能。当两个表做连接查询,且有等值连接条件时,哈希连接是实现两个表连接的一种高效的实现方式。例如,通过SELECT*FROMT1,T2WHERET1.C1=T2.D2;语句查询哈希连接,可以选用数据较少的表作为左表,比如,T1作为左表,有C1和C2两个列,T2作为右表,有D1和D2两个列。T1表的数据如下:表1基于T1构造哈希表,采用T2表进行探测,输出满足条件(T1.C1=T2.D2)的结果。其中,构造哈希表的过程如下:1、根据配置参数创建一张固定大小的哈希表;2、使用数据库内部函数(比如bfd_int64、bfd_dec、bfd_time等)将T1.C1的实际值value计算得到哈希键值key;3、通过哈希函数计算键值key在哈希表中的位置,并在该位置插入对应的实际值value;4、循环执行步骤2、3,直至处理完T1表中的数据。但是,若多个哈希键值映射到哈希表中相同的位置,则会成为哈希冲突,具体包括以下三种情况:第一种,相同的原始值。即计算得到相同的哈希键值key,通过哈希函数映射到哈希表同一个位置;第二种,不同的原始值。通过多个值组合、字符串等类型计算得到相同的哈希键值key,通过哈希函数映射到哈希表的同一个位置;第三种,原始值和哈希键值key均不同。当原始值个数超过哈希表大小,有些不同的哈希键值会映射到哈希表同一个位置,或者哈希算法也会决定哈希冲突的概率。基于上述哈希冲突的原因,哈希探测时需要比较原始数据,该过程如下:(1)获取哈希连接中右表连接的原始数据(例如T2.D2),计算哈希键值并通过哈希函数定位到哈希表的具体位置(即哈希槽);(2)将连接列的原始数据(如T2.D2)和哈希槽上的数据进行一一比较,如果相等,说明该行数据符合要求,并输出查询项的数据(例如,以上述查询语句为例,设T2此时的数据为(1,4),匹配到T1(1,2),那么输出查询结果为(1,2,1,4))。(3)重复上述步骤(1)、(2),直至右表中的数据处理完毕。可以看出,上述哈希探测过程中存在以下问题:1、右表数据需要与定位到的哈希槽上每条数据进行比较;2、相同的数据存在重复比较;3、哈希表不存在冲突,并且右表数据为左表数据的子集时,工业应用上通常仍然需要一一比较原始数据。
技术实现思路
为了解决上述至少一个技术问题,本申请实施例提供了以下方案。第一方面,本申请实施例提供了一种基于哈希连接的探测方法,该方法包括:创建第一表格的哈希表,哈希表包括哈希槽;确定第一表格中各参考列数据在哈希表中对应的哈希槽;根据各参考列数据的哈希槽是否冲突选择相应的存储方式依次将各参考列数据所属的整行数据存储至对应的哈希槽,并根据存储结果设置各哈希槽的冲突标记;根据冲突标记和第二表格中的数据进行哈希探测,第二表格与第一表格哈希连接。第二方面,本申请实施例还提供了一种基于哈希连接的探测装置,该装置包括:创建模块,用于创建第一表格的哈希表,哈希表包括哈希槽;确定模块,用于确定第一表格中各参考列数据在哈希表中对应的哈希槽;存储模块,用于根据各参考列数据的哈希槽是否冲突选择相应的存储方式依次将各参考列数据所属的整行数据存储至对应的哈希槽,并根据存储结果设置各哈希槽的冲突标记;探测模块,用于根据冲突标记和第二表格中的数据进行哈希探测,第二表格与第一表格哈希连接。第三方面,本申请实施例还提供了一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,当处理器执行计算机程序时,实现如本申请任意实施例提供的基于哈希连接的探测方法。第四方面,本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时,实现如本申请任意实施例提供的基于哈希连接的探测方法。本申请实施例提供一种基于哈希连接的探测方法、装置、设备及存储介质,具体包括创建第一表格的哈希表,哈希表包括哈希槽;确定第一表格中各参考列数据在哈希表中对应的哈希槽;根据各参考列数据的哈希槽是否冲突选择相应的存储方式依次将各参考列数据所属的整行数据存储至对应的哈希槽,并根据存储结果设置各哈希槽的冲突标记;根据冲突标记和第二表格中的数据进行哈希探测,第二表格与第一表格哈希连接。在本方案中,根据哈希槽冲突与否选择不同的存储方式存储数据,并基于冲突标记进行哈希探测,可以解决现有技术中哈希连接存在的问题,提高哈希连接的性能。附图说明图1为本申请实施例中的一种基于哈希连接的探测方法流程图;图2是本申请实施例中的创建的哈希表的示意图;图3是本申请实施例中的哈希节点存储数据的示意图;图4是本申请实施例中的基于哈希连接的探测装置结构示意图;图5是本申请实施例中的电子设备的结构示意图。具体实施方式下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本申请,而非对本申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本申请相关的部分而非全部结构。另外,在本申请实施例中,“可选地”或者“示例性地”等词用于表示作例子、例证或说明。本申请实施例中被描述为“可选地”或者“示例性地”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“可选地”或者“示例性地”等词旨在以具体方式呈现相关概念。本申请实施例可以应用于现有关系型数据库中,在使用左表连接列数据(例如,上述示例中的T1.C1)建立哈希表且插入数据,并根据右表数据匹配哈希表数据时,能够实现针对现有技术中不同的冲突问题进行优化处理。图1为本申请实施例提供的一种基于哈希连接的探测方法,如图1所示,该方法可以包括但不限于以下步骤:S101、创建第一表格的哈希表。本步骤中创建哈希表时,可以根据用户自定义的参数大小、第一表格的实际数据量,或者也可以根据实际内存大小,创建相应大小的哈希表。可选地,在创建第一表格的哈希表时,可以设置冲突标记CONFLIC_FLAG和哈希槽中哈希节点的LIST链表,该链表设置于哈希节点的结构体中。在执行本申请实施例时,可以先通过结构化查询语言(StructuredQueryLanguage,SQL)生成执行计划阶段,生成的执行计划阶段可以包含扫描、投影、筛选等操作,也可以包含数据表格之间的哈希连接、嵌套连接、排序连接等。其本文档来自技高网
...

【技术保护点】
1.一种基于哈希连接的探测方法,其特征在于,包括:/n创建所述第一表格的哈希表,所述哈希表包括哈希槽;/n确定所述第一表格中各参考列数据在所述哈希表中对应的哈希槽;/n根据所述各参考列数据的哈希槽是否冲突选择相应的存储方式依次将各参考列数据所属的整行数据存储至对应的哈希槽,并根据存储结果设置各哈希槽的冲突标记;/n根据所述冲突标记和第二表格中的数据进行哈希探测,所述第二表格与所述第一表格哈希连接。/n

【技术特征摘要】
1.一种基于哈希连接的探测方法,其特征在于,包括:
创建所述第一表格的哈希表,所述哈希表包括哈希槽;
确定所述第一表格中各参考列数据在所述哈希表中对应的哈希槽;
根据所述各参考列数据的哈希槽是否冲突选择相应的存储方式依次将各参考列数据所属的整行数据存储至对应的哈希槽,并根据存储结果设置各哈希槽的冲突标记;
根据所述冲突标记和第二表格中的数据进行哈希探测,所述第二表格与所述第一表格哈希连接。


2.根据权利要求1所述的方法,其特征在于,根据所述各参考列数据的哈希槽是否冲突选择相应的存储方式依次将各参考列数据所属的整行数据存储至对应的哈希槽,包括:
若不存在冲突,则将所述第一表格中当前参考列数据所属的整行数据存储于对应哈希槽的哈希节点的链表中;
或者,若存在冲突,则根据所述第一表格中当前参考列数据与冲突的哈希槽的哈希节点中已存储的参考列数据是否相同选择对应的存储方式,将当前参考列数据所属的整行数据存储至对应哈希节点的链表中。


3.根据权利要求2所述的方法,其特征在于,根据所述第一表格中当前参考列数据与冲突的哈希槽的哈希节点中已存储的参考列数据是否相同选择对应的存储方式,将当前参考列数据所属的整行数据存储至对应哈希节点的链表中,包括:
若当前参考列数据与已存储的参考列数据相同,则将所述当前参考列数据所属的整行数据存储至所述已存储的参考列数据所属的哈希节点的链表中;
若当前参考列数据与已存储的参考列数据不相同,则以顺序存储的方式将所述当前参考列数据所属的整行数据存储至冲突的哈希槽的其他哈希节点的链表中。


4.根据权利要求1-3任一项所述的方法,其特征在于,所述哈希槽的冲突标记表示所述哈希槽是否为冲突的哈希槽。


5.根据权利要求4所述的方法,其特征在于,根据所述冲突标记和第二表格中的数据进行哈希探测,包括:
步骤一:确定所述第二表格中当前匹配列数据的哈希槽;
步骤二:在所述第二表格为所述第一表格的子集的情况下,根据所述冲突标记和当前数据的哈希槽进行哈希探测;
步骤三:获取所述第二表格中的下一个匹配列数据,并将所述下一个匹配列数据确定为当前匹配列...

【专利技术属性】
技术研发人员:朱仲颖扈天阳
申请(专利权)人:上海达梦数据库有限公司
类型:发明
国别省市:上海;31

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

1