CN114969046A - 一种哈希连接的处理方法、存储介质与设备 - Google Patents

一种哈希连接的处理方法、存储介质与设备 Download PDF

Info

Publication number
CN114969046A
CN114969046A CN202210625959.9A CN202210625959A CN114969046A CN 114969046 A CN114969046 A CN 114969046A CN 202210625959 A CN202210625959 A CN 202210625959A CN 114969046 A CN114969046 A CN 114969046A
Authority
CN
China
Prior art keywords
hash
cost
constructing
calculating
path
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202210625959.9A
Other languages
English (en)
Inventor
徐登峰
尹强
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Kingbase Information Technologies Co Ltd
Original Assignee
Beijing Kingbase Information Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Kingbase Information Technologies Co Ltd filed Critical Beijing Kingbase Information Technologies Co Ltd
Priority to CN202210625959.9A priority Critical patent/CN114969046A/zh
Publication of CN114969046A publication Critical patent/CN114969046A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及数据库技术,特别是涉及一种哈希连接的处理方法、存储介质与设备。其中上述方法包括:计算以第一表构建哈希内表的代价,其中,第一表为预哈希连接的两个待连接表中的任一;判断以第一表构建哈希内表是否需要重新哈希;若是,则计算重新哈希的影响因子;根据影响因子修正以第一表构建哈希内表的代价。本发明的方法在构建哈希内表的代价时考虑了重新哈希的影响,从而优化了哈希连接的内外表选择算法,避免了重新哈希带来的大量耗时,有效缩短了哈希连接的整体操作时间,进而有效提升了数据库的整体性能。

Description

一种哈希连接的处理方法、存储介质与设备
技术领域
本发明涉及数据库技术,特别是涉及一种哈希连接的处理方法、存储介质与设备。
背景技术
当多表做内连接时,有一种连接方式叫哈希连接(Hash Join)。Hash Join是选择一个哈希内表来构造哈希表,然后对外表的每一行数据都去这个哈希表中查找是否有匹配的数据,其特点是将size较小的表做哈希处理后,尽可能一次性的读入内存,然后循环遍历外表每一条记录来跟哈希内表做哈希计算,看是否匹配上。跟其它连接方式(例如NestLoop)相比,Hash Join的好处是对于内表来说,假如做了哈希全部读入内存的话,那么可以避免每次对内表做全表扫描,从而减少连接操作所花费的时间。
目前,优化器在Inner Hash Join的内外表选择算法为:通过交换内外表的连接顺序,分别构建两个路径,并分别计算两个路径的代价,并从中选择代价较小的路径作为计划路径。例如,有两个表t1、t2做Inner Hash Join,构建出t1Hashjoin t2和t2Hashjoin t1这两个路径。在此基础上,先计算t1Hashjoin t2的代价c1,然后再计算t2Hashjoin t1的代价c2,选择代价更低者作为Hashjoin的路径。如果c1<c2,则选择t1Hashjoin t2作为计划路径;否则,选择t2Hashjoin t1作为计划路径。
在大多数情况下,内表做了哈希处理读入内存后,是不需要重新哈希(rehash)再读入的。然而,在某些场景下,比如CTE的递归侧或者层次查询的递归侧,会遇到需要rehash的情况。这是因为在两种场景下的连接原理是用基表和每次递归的中间结果表来做连接,而此时,如果优化器选择Hash Join这种连接方式,那么由于中间结果表通常比基表的size要小很多,那么就会选择中间结果表作为连接内表,而每次递归的中间结果表基本都是不同的。因此,每一次递归的Hash Join都会由于被选作哈希内表的中间结果表与上次递归的Hash Join的哈希内表不同,导致内表的rehash,进而导致作为外表的基表随着每一次递归的Join都要重新做全表扫描。而由于全表扫描是十分耗时的操作,这就导致了整个join操作十分耗时。
基于上述情况,现有的内外表选择算法需要优化。因此,如何提供一种能够考虑rehash带来的额外性能影响,以在计算Hash Join的估算代价时加入rehash的影响因素的Hash Join的代价计算算法的优化方法已成为一个亟待解决的问题。
发明内容
本发明的一个目的是要提供一种优化Hash Join的内外表选择算法,以缩短HashJoin操作时间、提高数据库的整体性能的哈希连接的处理方法。
本发明一个进一步的目的是要提高计算Hash Join路径代价的准确性,以进一步优化Hash Join的内外表选择算法。
特别地,本发明提供了一种哈希连接的处理方法,包括:
计算以第一表构建哈希内表的代价,其中,第一表为预哈希连接的两个待连接表中的任一;
判断以第一表构建哈希内表是否需要重新哈希;
若是,则计算重新哈希的影响因子;
根据影响因子修正以第一表构建哈希内表的代价。
可选地,判断以第一表构建哈希内表是否需要重新哈希的步骤包括:
判断第一表是否为在预设场景下的中间结果表;
若第一表为在预设场景下的中间结果表,则确定以第一表构建哈希内表需要重新哈希。
可选地,预设场景至少包括:CTE的递归侧和层次查询的递归侧。
可选地,两个待连接表还包括除第一表之外的第二表;并且
计算重新哈希的影响因子的步骤包括:
获取第二表的统计信息;
根据第二表的统计信息和预设函数计算重新哈希的影响因子。
可选地,第二表的统计信息为在第二表创建完成并插入数据后生成并存储在统计信息系统表中的统计数据,第二表的统计信息包括第二表的元组数和第二表产生中间结果表的条件选择率;并且
根据第二表的统计信息与预设函数计算重新哈希的影响因子的步骤包括:
获取与第二表的统计信息相对应的线性因子,其中,线性因子与第二表的统计信息的对应关系预先配置并存储在数据库中;
将第二表的元组数与第二表产生中间结果表的条件选择率的乘积与相对应的线性因子相乘并取整,将取整结果作为计算重新哈希的影响因子的结果。
可选地,根据影响因子修正以第一表构建哈希内表的代价的步骤包括:
将重新哈希的影响因子与计算得到的以第一表构建哈希内表的代价相乘的乘积,作为修正后的以第一表构建哈希内表的代价。
可选地,在计算以第一表构建哈希内表的代价的步骤之前,处理方法还包括:
预先构建以第一表构建哈希内表、以第二表作为连接外表的第一路径,以及以第二表构建哈希内表、以第一表作为连接外表的第二路径。
可选地,在根据影响因子修正以第一表构建哈希内表的代价的步骤之后,处理方法还包括:
根据修正后的以第一表构建哈希内表的代价,计算得到选择第一路径进行哈希连接的第一代价;
获取选择第二路径进行哈希连接的第二代价;
将第一代价与第二代价进行比对;
根据比对结果,选取代价较小的路径作为哈希连接的计划路径。
根据本发明的另一个方面,还提供了一种机器可读存储介质,其上存储有机器可执行程序,机器可执行程序被处理器执行时实现上述任一种的处理方法。
根据本发明的又一个方面,还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并在处理器上运行的机器可执行程序,并且处理器执行机器可执行程序时实现上述任一种的处理方法。
本发明的处理方法,先计算以第一表构建哈希内表的代价,其中,第一表为预哈希连接的两个待连接表中的任一,再判断以第一表构建哈希内表是否需要重新哈希,并在确认以第一表构建哈希内表的这种路径下需要重新哈希的情况下,计算重新哈希的影响因子,最后根据影响因子修正以第一表构建哈希内表的代价。本发明的处理方法通过在构建哈希内表的代价时考虑rehash的影响,优化了Hash Join的内外表选择算法,从而缩短了Hash Join的整体操作时间,进而提高了数据库的整体性能。
进一步地,本发明的处理方法,通过判断第一表是否为在预设场景下的中间结果表,并在确认第一表为在预设场景下的中间结果表的情况下,确定以第一表构建哈希内表需要重新哈希,保证了判断是否需要哈希的判断结果的准确性,从而提高了计算Hash Join路径代价的准确性,进而进一步优化了Hash Join的内外表选择算法。
根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。
附图说明
后文将参照附图以示例性而非限制性的方式详细描述本发明的一些具体实施例。附图中相同的附图标记标示了相同或类似的部件或部分。本领域技术人员应该理解,这些附图未必是按比例绘制的。附图中:
图1是根据本发明一个实施例的处理方法的流程示意图;
图2是根据本发明另一个实施例的处理方法的流程示意图;
图3是根据本发明一个实施例的机器可读存储介质的结构示意图;以及
图4是根据本发明一个实施例的计算机设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本发明的范围完整的传达给本领域的技术人员。
为解决上述技术问题,本发明实施例提出一种预写式日志的处理方法。图1是根据本发明一个实施例的处理方法的流程示意图。参见图1所示,该处理方法一般性地可包括:
步骤S102,计算以第一表构建哈希内表的代价,其中,第一表为预哈希连接的两个待连接表中的任一;
步骤S104,判断以第一表构建哈希内表是否需要重新哈希,若是,则执行步骤S106;
步骤S106,计算重新哈希的影响因子;
步骤S108,根据影响因子修正以第一表构建哈希内表的代价。
需要说明的是,当两个表做Inner Hash Join时,需要先由优化器执行Inner HashJoin的内外表选择算法,即通过交换内外表的连接顺序,分别构建两个路径,并分别计算两个路径的代价,并从中选择代价较小的路径作为计划路径。也就是说,当两个表做InnerHash Join时,需要分别计算以两个待连接表中的每一个待连接表构建哈希内表的代价。另外,当多个表做Inner Hash Join时,也是需要先按照预定顺序的先对其中的两个待连接表进行Hash Join,得到一结果表,再将得到的结果表与下一个待连接表进行Hash Join。也就是说,本发明的优化器执行的Inner Hash Join的内外表选择算法是始终针对两个待连接表之间进行Hash Join的。因此,为了便于说明,本发明将当前待计算代价的路径中的作为哈希内表的待连接表记作第一表,将两个待连接表中包括的除第一表之外的另一个待连接表记作第二表。也就是说,两个待连接表包括第一表和第二表,其中第一表是指两个待连接表中的任意一个待连接表,而第二表是指除第一表之外的另一个待连接表。
本实施例的处理方法,先计算以第一表构建哈希内表的代价,其中,第一表为预哈希连接的两个待连接表中的任一,再判断以第一表构建哈希内表是否需要rehash,并在确认以第一表构建哈希内表的这种路径下需要rehash的情况下,计算rehash的影响因子,最后根据影响因子修正以第一表构建哈希内表的代价。使用本实施例的处理方法,在计算构建哈希内表的代价时,考虑到rehash的影响。如果以第一表构建哈希内表后续不需要rehash,则不增加代价。如果以第一表构建哈希内表后续需要rehash,则在以第一表构建哈希内表的代价的计算结果的基础上,以rehash因子为倍数增加代价,从而实现了在构建哈希内表的代价时考虑rehash的影响,优化了Hash Join的内外表选择算法,从而缩短了HashJoin的整体操作时间,进而提高了数据库的整体性能。
在步骤S102之前,本实施例的处理方法还可以包括:预先构建以第一表构建哈希内表、以第二表作为连接外表的第一路径,以及以第二表构建哈希内表、以第一表作为连接外表的第二路径。
在步骤S108之后,本实施例的处理方法还可以包括:根据修正后的以第一表构建哈希内表的代价,计算得到选择第一路径进行Hash Join的第一代价;获取选择第二路径进行Hash Join的第二代价;将第一代价与第二代价进行比对;根据比对结果,选取代价较小的路径作为Hash Join的计划路径。
使用本实施例的处理方法,在进行内外表选择时,如果某一路径出现需要rehash的情况,则结合rehash的影响因子修正这一路径中构建哈希内表的代价的计算结果,并根据修正后的构建哈希内表的代价得到这一路径的代价,从而增加选择这一路径进行HashJoin的代价。也就是说,本实施例的处理方法通过在某一路径出现需要rehash的情况下,就增大这一路径的代价,从而改变这一路径和其他路径之间根据代价的大小进行比对的比对结果,以避免选用这一种后续需要rehash的路径进行Hash Join,避免了作为外表的基表随着每一次递归的Join都要重新做全表扫描,从而缩短了Hash Join的整体操作时间,以实现Hash Join的内外表选择算法的优化。
下面结合一些具体实施例,对某一路径是否会出现需要rehash的情况的判断方法和结合rehash的影响因子修正这一路径中构建哈希内表的代价的计算结果的修正方法分别进行详细介绍。
在一些实施例中,上述步骤S104的流程可以包括:判断第一表是否为在预设场景下的中间结果表;若第一表为在预设场景下的中间结果表,则确定以第一表构建哈希内表需要rehash。需要说明的是,预设场景至少包括CTE(Common Table Expression,通用表表达式)的递归侧和层次查询的递归侧。在这两种预设场景中的任一种场景下,每次递归产生的中间结果表基本都是不同的,因此每一次递归的HashJoin都会导致内表的重新哈希(rehash)。因此,当确定第一表为在预设场景下的中间结果表时即可以确定以第一表构建哈希内表需要重新哈希,当确定第一表不是在预设场景下的中间结果表时即可以确定以第一表构建哈希内表不需要重新哈希。
具体地,待连接表的类型可以根据表具有的枚举值确定,中间结果表是一种在数据库内核中通过特殊枚举值标识的表。并且特殊枚举值区别于其他类型的表具有的枚举值。在数据库内核中每种类型的表都有自己特有的枚举值表示表的类型,比如中间结果表、基本表以及索引表等不同类型的表的枚举值不同。由此,在一个具体实施例中,上述步骤S104中判断第一表是否为中间结果表的步骤可以包括:获取第一表的枚举值;判断第一表的枚举值是否为表示标的类型为中间结果表的特殊枚举值;若是,则确定第一表为中间结果表;若否,则确定第一表不是中间结果表。
使用本实施例的处理方法,判断第一表是否为中间结果表,并在确认第一表为中间结果表的情况下,确定以第一表构建哈希内表需要重新哈希,保证了判断是否需要哈希的判断结果的准确性,从而提高了计算Hash Join路径代价的准确性,进而进一步优化了Hash Join的内外表选择算法。
在本发明中的Hash Join中,两个待连接表不可能同时为中间结果表,由此,若第一表为在预设场景下的中间结果表,则确定第二表为基表。基表是一种数据库中永久存储并实际存在的表,它是实际存储数据的逻辑表示。在此基础上,上述步骤S106的流程可以包括:获取第二表的统计信息;根据第二表的统计信息和预设函数计算rehash的影响因子(rehash_frac)。具体地,将计算得到的中间结果表的rehash的次数n作为本实施例中的rehash_frac。另外,基表的统计信息为在表创建完成并插入数据后生成并存储在统计信息系统表中的统计数据。并且表的统计信息可以包括基表的元组数N和基表产生中间结果表的条件选择率s,用于从多个角度描绘基表的各个属性列的数据分布情况,通过基表的统计信息可以完成表的代价估算和条件选择率。在一个具体实施例中,基表的元组数N为基表中除含属性名所在行以外的其他行的行数。另外,申请人根据预先实验得知,基表的统计信息与中间结果表成线性关系,其线性因子记作a。并且线性因子a与基表的统计信息的对应关系可以根据预先实验获得的结果预先配置并存储在数据库中。在此基础上,上述步骤S106中根据第二表的统计信息与预设函数计算rehash_frac的步骤可以包括:获取与第二表的统计信息相对应的线性因子a;将第二表的元组数N与第二表产生中间结果表的条件选择率s的乘积与相对应的线性因子a相乘并取整,将取整结果rehash的次数n作为计算rehash_frac的结果。
在一个具体实施例中,上述步骤S106还可以具体执行为:获取第二表的统计信息,第二表的统计信息包括第二表的元组数N和第二表产生中间结果表的条件选择率s;获取与第二表的统计信息相对应的线性因子a;根据预设的rehash的次数n计算公式计算rehash的次数n,其中预设的rehash的次数n计算公式为n=[a×N×s];将计算得到的n作为rehash_frac。
在一些实施例中,上述步骤S108的流程可以包括:将rehash_frac与计算得到的以第一表构建哈希内表的代价相乘的乘积,作为修正后的以第一表构建哈希内表的代价。也就是说,在以第一表构建哈希内表的代价的计算结果的基础上,以rehash因子为倍数增加这一代价,从而实现了在构建哈希内表的代价时考虑rehash的影响,以实现Hash Join的内外表选择算法的优化。
图2是根据本发明另一个实施例的处理方法的流程示意图。下面结合图2对本实施例的流程步骤进行具体说明。在本实施例中,哈希连接的处理方法可以为优化器在InnerHash Join的内外表选择算法。下面结合图2对本实施例的流程步骤进行具体说明。
步骤S202,通过交换内外表的连接顺序,分别构建两个路径。需要说明的是,每个路径以任一待连接表构建哈希内表、并以另一待连接表作为连接外表。
步骤S204,计算Inner Hash Join的内外表启动代价。
步骤S206,计算通过当前路径构建内表哈希的代价。
步骤S208,判断是否属于需要反复rehash的情况,若是,则执行步骤S210,若否,则执行步骤S216。具体地,属于需要反复rehash的情况可以包括:当前内表是层次查询的递归侧的中间结果表或者CTE的递归侧的中间结果表。
步骤S210,通过基表的统计信息以及相应的线性因子a来计算中间结果表的rehash的次数n,n=[a×N×s],其中,N表示基表的元组数,s表示基表产生中间结果表的条件的选择率。此时,当前内表为中间结果表,由此,当前外表即为基表。
步骤S212,将计算得到的n作为rehash的影响因子rehash_frac。
步骤S214,将rehash_frac与步骤S206中计算得到的通过当前路径构建内表哈希的代价相乘,将乘积作为修正后的通过当前路径构建内表哈希的代价。
步骤S216,完成Inner Hash Join的当前路径的代价的计算。
步骤S218,获取Inner Hash Join的另一路径的代价计算结果,将当前路径的代价与另一路径的代价进行比对。
步骤S220,根据比对结果,选取代价较小的路径作为Inner Hash Join的计划路径。
在一个具体实施例中,有两个表T1、T2做Inner Hash Join,可以预先构建出第一路径和第二路径两个路径,第一路径是以T1构建哈希内表、以T2作为连接外表,第二路径以T2构建哈希内表、以表T1作为连接外表。计算第一路径的代价C1,计算第二路径的代价C2。并在计算第一路径的代价C1的过程中,在计算以T1构建哈希内表的代价时,需要判断T1是否为中间结构表。若T1为中间结构表,则计算rehash_frac,将以T1构建哈希内表的代价的计算结果乘以rehash_frac,并将得到的乘积作为修正后以T1构建哈希内表的代价,然后将修正后以T1构建哈希内表的代价与计算得到的Inner Hash Join的内外表启动代价根据预设运算公式,得到第一路径的代价C1。需要注意的是,本发明不对预设运算公式进行进一步限定,只要保证根据预设运算公式可以完成Inner Hash Join的剩余代价计算即可。同时,在计算第一路径的代价C2的过程中,在计算以T2构建哈希内表的代价时,也需要判断T2是否为中间结构表。在T1为中间结构表的情况下,T2就应该是基表,即T2不是中间结构表。若T2不是中间结构表,则不增加以T2构建哈希内表的代价的计算结果。在此基础上,在T1为中间结构表的情况下,优化后的内外表选择算法会增大C1的计算结果,从而使得C1>C2,从而选择第二路径,即选择以T2构建哈希内表、以表T1作为连接外表。相似地,在T2为中间结构表的情况下,优化后的内外表选择算法会增大C2的计算结果,从而使得C1<C2,从而选择第一路径,即选择以T1构建哈希内表、以表T2作为连接外表。因此,在本实施例的处理方法中,若遇到待连接表包括中间结果表,则优化后的内外表选择算法会始终选择将中间结果表作为连接外表,以基表构件哈希内表做哈希操作。
本实施例的处理方法,通过优化后的Hash Join代价计算的算法,可以识别出需要rehash的情况,从而在内外表的选择上,选择中间结果表作为连接外表,基表作为连接内表做哈希操作,从而对于每次递归内容不变的基表来说,只有一次全表扫描的哈希操作,在接下来的递归Hash Join中,避免了对基表的多次重复的全表扫描,从而缩短了Hash Join的整体操作时间,进而提高了数据库的整体性能。
本实施例还提供了一种机器可读存储介质和计算机设备。图3是根据本发明一个实施例的机器可读存储介质10的结构示意图,图4是根据本发明一个实施例的计算机设备20的结构示意图。
机器可读存储介质10其上存储有机器可执行程序11,机器可执行程序11被处理器执行时实现上述任一实施例的处理方法。
计算机设备20可以包括存储器220、处理器210及存储在存储器220上并在处理器210上运行的机器可执行程序11,并且处理器210执行机器可执行程序11时实现上述任一实施例的处理方法。
需要说明的是,在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何机器可读存储介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。
就本实施例的描述而言,机器可读存储介质10可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质10甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。
计算机设备20可以是例如服务器、台式计算机、笔记本式计算机、平板计算机或智能手机。在一些示例中,计算机设备20可以是云计算节点。计算机设备20可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括执行特定的任务或者实现特定的抽象数据类型的例程、程序、目标程序、组件、逻辑、数据结构等。计算机设备20可以在通过通信网络链接的远程处理设备执行任务的分布式云计算环境中实施。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。
计算机设备20可以包括适于执行存储的指令的处理器210、在操作期间为所述指令的操作提供临时存储空间的存储器220。处理器210可以是单核处理器、多核处理器、计算集群或任何数量的其他配置。存储器220可以包括随机存取存储器(RAM)、只读存储器、闪存或任何其他合适的存储系统。
处理器210可以通过系统互连(例如PCI、PCI-Express等)连接到适于将计算机设备20连接到一个或多个I/O设备(输入/输出设备)的I/O接口(输入/输出接口)。I/O设备可以包括例如键盘和指示设备,其中指示设备可以包括触摸板或触摸屏等等。I/O设备可以是计算机设备20的内置组件,或者可以是外部连接到计算设备的设备。
处理器210也可以通过系统互连链接到适于将计算机设备20连接到显示设备的显示接口。显示设备可以包括作为计算机设备20的内置组件的显示屏。显示设备还可以包括外部连接到计算机设备20的计算机监视器、电视机或投影仪等。此外,网络接口控制器(network interface controller,NIC)可以适于通过系统互连将计算机设备20连接到网络。在一些实施例中,NIC可以使用任何合适的接口或协议(诸如因特网小型计算机系统接口等)来传输数据。网络可以是蜂窝网络、无线电网络、广域网(WAN))、局域网(LAN)或因特网等等。远程设备可以通过网络连接到计算设备。
本实施例提供的流程图并不旨在指示方法的操作将以任何特定的顺序执行,或者方法的所有操作都包括在所有的每种情况下。此外,方法可以包括附加操作。在本实施例方法提供的技术思路的范围内,可以对上述方法进行附加的变化。
至此,本领域技术人员应认识到,虽然本文已详尽示出和描述了本发明的多个示例性实施例,但是,在不脱离本发明精神和范围的情况下,仍可根据本发明公开的内容直接确定或推导出符合本发明原理的许多其他变型或修改。因此,本发明的范围应被理解和认定为覆盖了所有这些其他变型或修改。

Claims (10)

1.一种哈希连接的处理方法,包括:
计算以第一表构建哈希内表的代价,其中,所述第一表为预哈希连接的两个待连接表中的任一;
判断以所述第一表构建哈希内表是否需要重新哈希;
若是,则计算重新哈希的影响因子;
根据所述影响因子修正以所述第一表构建哈希内表的代价。
2.根据权利要求1所述的处理方法,其中,所述判断以所述第一表构建哈希内表是否需要重新哈希的步骤包括:
判断所述第一表是否为在预设场景下的中间结果表;
若所述第一表为在预设场景下的中间结果表,则确定以所述第一表构建哈希内表需要重新哈希。
3.根据权利要求2所述的处理方法,其中,所述预设场景至少包括:CTE的递归侧和层次查询的递归侧。
4.根据权利要求1所述的处理方法,其中,所述两个待连接表还包括除所述第一表之外的第二表;并且
所述计算重新哈希的影响因子的步骤包括:
获取所述第二表的统计信息;
根据所述第二表的统计信息和预设函数计算所述重新哈希的影响因子。
5.根据权利要求4所述的处理方法,其中,所述第二表的统计信息为在所述第二表创建完成并插入数据后生成并存储在统计信息系统表中的统计数据,所述第二表的统计信息包括所述第二表的元组数和所述第二表产生中间结果表的条件选择率;并且
所述根据所述第二表的统计信息与预设函数计算所述重新哈希的影响因子的步骤包括:
获取与所述第二表的统计信息相对应的线性因子,其中,所述线性因子与所述第二表的统计信息的对应关系预先配置并存储在数据库中;
将所述第二表的元组数与所述第二表产生中间结果表的条件选择率的乘积与所述相对应的线性因子相乘并取整,将取整结果作为计算所述重新哈希的影响因子的结果。
6.根据权利要求1所述的处理方法,其中,所述根据所述影响因子修正以所述第一表构建哈希内表的代价的步骤包括:
将所述重新哈希的影响因子与计算得到的以所述第一表构建哈希内表的代价相乘的乘积,作为修正后的以所述第一表构建哈希内表的代价。
7.根据权利要求6所述的处理方法,其中,在所述计算以第一表构建哈希内表的代价的步骤之前,所述处理方法还包括:
预先构建以所述第一表构建哈希内表、以所述第二表作为连接外表的第一路径,以及以所述第二表构建哈希内表、以所述第一表作为连接外表的第二路径。
8.根据权利要求7所述的处理方法,其中,在所述根据所述影响因子修正以所述第一表构建哈希内表的代价的步骤之后,所述处理方法还包括:
根据修正后的以所述第一表构建哈希内表的代价,计算得到选择所述第一路径进行哈希连接的第一代价;
获取选择所述第二路径进行哈希连接的第二代价;
将所述第一代价与所述第二代价进行比对;
根据比对结果,选取代价较小的路径作为哈希连接的计划路径。
9.一种机器可读存储介质,其上存储有机器可执行程序,所述机器可执行程序被处理器执行时实现根据权利要求1至8任一项所述的处理方法。
10.一种计算机设备,包括存储器、处理器及存储在所述存储器上并在所述处理器上运行的机器可执行程序,并且所述处理器执行所述机器可执行程序时实现根据权利要求1至8任一项所述的处理方法。
CN202210625959.9A 2022-06-02 2022-06-02 一种哈希连接的处理方法、存储介质与设备 Pending CN114969046A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210625959.9A CN114969046A (zh) 2022-06-02 2022-06-02 一种哈希连接的处理方法、存储介质与设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210625959.9A CN114969046A (zh) 2022-06-02 2022-06-02 一种哈希连接的处理方法、存储介质与设备

Publications (1)

Publication Number Publication Date
CN114969046A true CN114969046A (zh) 2022-08-30

Family

ID=82960349

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210625959.9A Pending CN114969046A (zh) 2022-06-02 2022-06-02 一种哈希连接的处理方法、存储介质与设备

Country Status (1)

Country Link
CN (1) CN114969046A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116401266A (zh) * 2023-06-08 2023-07-07 北京四维纵横数据技术有限公司 分布式数据库动态过滤方法、装置、计算机设备及介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116401266A (zh) * 2023-06-08 2023-07-07 北京四维纵横数据技术有限公司 分布式数据库动态过滤方法、装置、计算机设备及介质
CN116401266B (zh) * 2023-06-08 2023-09-05 北京四维纵横数据技术有限公司 分布式数据库动态过滤方法、装置、计算机设备及介质

Similar Documents

Publication Publication Date Title
CN112559554B (zh) 一种查询语句优化方法及装置
US8122008B2 (en) Joining tables in multiple heterogeneous distributed databases
JP4856627B2 (ja) 部分的クエリーキャッシング
US8782219B2 (en) Automated discovery of template patterns based on received server requests
US20160246852A1 (en) Systems and Methods for Quantile Estimation in a Distributed Data System
CN112650766B (zh) 数据库数据操作的方法、系统及服务器
US11416488B2 (en) SQL double counting resolver
CN110704398A (zh) 从MySQL到Oracle的数据库迁移方法、装置及计算机设备
US20180276277A1 (en) Data Query Method and Apparatus, and Database System
US9454561B2 (en) Method and a consistency checker for finding data inconsistencies in a data repository
CN107870949B (zh) 数据分析作业依赖关系生成方法和系统
EP3605364A1 (en) Query processing method, data source registration method and query engine
CN107102995B (zh) 一种sql执行计划的确定方法及装置
CN110471935B (zh) 一种数据操作的执行方法、装置、设备和存储介质
CN114969046A (zh) 一种哈希连接的处理方法、存储介质与设备
CN108959571B (zh) Sql语句的运算方法、装置、终端设备及存储介质
JP6329552B2 (ja) 単一テーブルから複数テーブルへの参照データセグメント化
CN108549688B (zh) 一种数据操作的优化方法、装置、设备和存储介质
CN115455057A (zh) 数据库连接操作的执行方法、存储介质与计算机设备
CN116467310A (zh) 无效索引的无锁标记方法、存储介质和计算机设备
CN115098503A (zh) 空值数据处理方法、装置、计算机设备以及存储介质
CN115114325A (zh) 数据查询方法、装置、电子设备以及存储介质
US20220035813A1 (en) Query optimization method and apparatus
CN113282616A (zh) 一种增量的时序数据冲突检测方法、装置和存储介质
CN113934726A (zh) 一种随机平滑分表方法、终端及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination