CN113297209A - 数据库执行哈希连接的方法以及装置 - Google Patents

数据库执行哈希连接的方法以及装置 Download PDF

Info

Publication number
CN113297209A
CN113297209A CN202110181601.7A CN202110181601A CN113297209A CN 113297209 A CN113297209 A CN 113297209A CN 202110181601 A CN202110181601 A CN 202110181601A CN 113297209 A CN113297209 A CN 113297209A
Authority
CN
China
Prior art keywords
data
hash
detection
mode
hash table
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.)
Granted
Application number
CN202110181601.7A
Other languages
English (en)
Other versions
CN113297209B (zh
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.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding 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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN202110181601.7A priority Critical patent/CN113297209B/zh
Publication of CN113297209A publication Critical patent/CN113297209A/zh
Application granted granted Critical
Publication of CN113297209B publication Critical patent/CN113297209B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations

Landscapes

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

Abstract

本说明书实施例提供数据库执行哈希连接的方法以及装置,其中所述方法包括:获取为哈希连接构建的哈希表的数据量;通过将所述哈希表的数据量与多个探测模式分别对应的表数据量范围比较,选择所述哈希表对应的探测模式,所述多个探测模式单次探测扫描的数据量不同;利用选择的探测模式对哈希表执行哈希连接的探测。

Description

数据库执行哈希连接的方法以及装置
技术领域
本说明书实施例涉及计算机技术领域,特别涉及数据库执行哈希连接的方法。本说明书一个或者多个实施例同时涉及数据库执行哈希连接的装置,计算设备,以及计算机可读存储介质。
背景技术
哈希连接(hash join),是在数据库中建立多张表之间的关系的操作,不管是传统的关系型数据库,还是大数据领域的数据仓库中,特别是OLAP里,都是常见的基础操作。哈希连接对一个表构建哈希表,扫描另一个表的数据与哈希表比对,从而探测出二者的连接。例如,一个针对订票的商业系统,有两张表及各自字段:订单表(会员号,订单时间,订单详情)和会员表(会员号,会员名称,会员时间),对提交订单的会员,将订单表和会员表根据会员号关联时,就是一种连接操作。
由于哈希连接是数据库处理常见的基础操作,如何提高哈希连接的性能是个需要解决的重要问题。
发明内容
有鉴于此,本说明书实施例提供了一种数据库执行哈希连接的方法。本说明书一个或者多个实施例同时涉及一种数据库执行哈希连接的装置,一种计算设备,以及一种计算机可读存储介质,以解决现有技术中存在的技术缺陷。
根据本说明书实施例的第一方面,提供了一种数据库执行哈希连接的方法,包括:获取为哈希连接构建的哈希表的数据量;通过将所述哈希表的数据量与多个探测模式分别对应的表数据量范围比较,选择所述哈希表对应的探测模式,所述多个探测模式单次探测扫描的数据量不同;利用选择的探测模式对哈希表执行哈希连接的探测。
可选地,所述多个探测模式包括:逐条探测模式及攒批探测模式。
可选地,在选择的探测模式为逐条探测模式的情况下,所述利用选择的探测模式对哈希表执行哈希连接的探测,包括:从驱动表获取一条未扫描过的数据,使该条数据成为已扫描过的数据;根据所述一条数据的关联键,在哈希表中查找到匹配的数据行存下来;根据查找到的数据行的行号获取需要的列的数据;判断所述驱动表是否存在未扫描过的数据,如果存在,返回到所述从驱动表获取一条未扫描过的数据的步骤。
可选地,在选择的探测模式为攒批探测模式的情况下,所述利用选择的探测模式对哈希表执行哈希连接的探测,包括:从驱动表获取一条未扫描过的数据,使该条数据成为已扫描过的数据;如果所述驱动表不存在未扫描过的数据,判断是否还有存下来的行号未获取需要的列,如果有,根据存下来的行号获取需要的列的数据;根据所述一条数据的关联键,在哈希表中查找到匹配的数据行存下来;判断本次探测扫描数据累计的条数是否达到攒批探测模式对应的预设攒批阈值;如果否,重新进入所述从驱动表获取一条未扫描过的数据的步骤;如果是,根据本次探测查找到的数据行的行号获取需要的列的数据;判断所述驱动表是否存在未扫描过的数据,如果存在,通过返回到所述从驱动表获取一条未扫描过的数据的步骤进入下一次探测扫描。
可选地,所述方法还包括:设置多个探测模式分别对应的表数据量范围的初值;获取为哈希连接构建的哈希表样本的数据量;通过将所述哈希表样本的数据量与多个探测模式分别对应的表数据量范围比较,选择所述哈希表样本对应的探测模式,所述多个探测模式单次探测扫描的数据量不同;在利用选择的探测模式对哈希表样本执行哈希连接的探测时,采集表示哈希连接性能的性能数据;根据采集的性能数据调整一个或多个探测模式分别对应的表数据量范围。
可选地,所述方法还包括:在所述哈希表样本的数据量未落入所述多个探测模式分别对应的表数据量范围的情况下,从所述多个探测模式中随机选择对应的探测模式作为选择的探测模式。
根据本说明书实施例的第二方面,提供了一种数据库执行哈希连接的装置,包括:数据量获取模块,被配置为获取为哈希连接构建的哈希表的数据量。模式选择模块,被配置为通过将所述哈希表的数据量与多个探测模式分别对应的表数据量范围比较,选择所述哈希表对应的探测模式,所述多个探测模式单次探测扫描的数据量不同。探测执行模块,被配置为利用选择的探测模式对哈希表执行哈希连接的探测。
根据本说明书实施例的第三方面,提供了一种计算设备,包括:存储器和处理器;所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令:获取为哈希连接构建的哈希表的数据量;通过将所述哈希表的数据量与多个探测模式分别对应的表数据量范围比较,选择所述哈希表对应的探测模式,所述多个探测模式单次探测扫描的数据量不同;利用选择的探测模式对哈希表执行哈希连接的探测。
根据本说明书实施例的第四方面,提供了一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时实现本说明书任意实施例所述数据库执行哈希连接的方法的步骤。
本说明书一个实施例提供了数据库执行哈希连接的方法,该方法获取哈希连接构建的哈希表的数据量,通过将所述哈希表的数据量与多个探测模式分别对应的表数据量范围比较,选择所述哈希表对应的探测模式对哈希表执行哈希连接的探测,由于数据量不同的单次探测对应不同数据量的哈希表在探测时表现的查询性能不同,因此,本说明书实施例提供的方法预设了多个探测模式分别对应的表数据量范围,从而能够根据哈希表数据量选择对应的探测模式,利用探测模式对应的单次探测扫描的数据量来执行哈希连接的探测,能够最大化利用不同探测模式的性能优势,有效提高哈希连接的查询性能。
附图说明
图1是本说明书一个实施例提供的一种数据库执行哈希连接的方法的流程图;
图2是本说明书一个实施例提供的逐条探测模式的处理流程图;
图3是本说明书一个实施例提供的攒批探测模式的处理流程图;
图4是本说明书另一个实施例提供的一种数据库执行哈希连接的方法的流程图;
图5是本说明书一个实施例提供的逐条探测模式及攒批探测模式对应的表数据量范围调整过程示意图;
图6示出了本说明书一个实施例提供的一种数据库执行哈希连接的装置的结构示意图;
图7示出了本说明书另一个实施例提供的一种数据库执行哈希连接的装置的结构示意图;
图8是本说明书一个实施例提供的一种计算设备的结构框图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本说明书。但是本说明书能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本说明书内涵的情况下做类似推广,因此本说明书不受下面公开的具体实施的限制。
在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
首先,对本说明书一个或多个实施例涉及的名词术语进行解释。
哈希连接:数据库的算子,用于将两张或多个表的数据按照某些列之间的关系按行结合起来。
关联键:哈希连接在结合多张表时,结合的列就是关联键列。
Build过程:建立过程,是将一张表构建出对应的哈希表到内存里供查找的过程。
Build表:Build操作构建的哈希表。
Probe过程:探测过程,Build过程结束后,对另一张表按行查找Build表中的行,输出结合的数据的过程。
Probe表:驱动表,Probe过程中,按行计算的表是probe表。
在本说明书中,提供了数据库执行哈希连接的方法,本说明书同时涉及数据库执行哈希连接的装置,计算设备,以及计算机可读存储介质,在下面的实施例中逐一进行详细说明。
图1示出了根据本说明书一个实施例提供的一种数据库执行哈希连接的方法的流程图,包括步骤102至步骤106。
步骤102:获取为哈希连接构建的哈希表的数据量。
步骤104:通过将所述哈希表的数据量与多个探测模式分别对应的表数据量范围比较,选择所述哈希表对应的探测模式,所述多个探测模式单次探测扫描的数据量不同。
步骤106:利用选择的探测模式对哈希表执行哈希连接的探测。
由于数据量不同的单次探测对应不同数据量的哈希表在探测时表现的查询性能不同,因此,本说明书实施例提供的方法预设了多个探测模式分别对应的表数据量范围,从而能够根据哈希表数据量选择对应的探测模式,利用探测模式对应的单次探测扫描的数据量来执行哈希连接的探测,能够最大化利用不同探测模式的性能优势,有效提高哈希连接的查询性能。
哈希连接主要分为两个阶段:建立阶段(build phase)和探测阶段(probephase)。建立阶段,主要用于构建build表也即哈希表。例如,针对订票的商业系统的订单表和会员表,可以根据会员表构建哈希表,提供按会员号(关联键)查找会员数据的功能。在本说明书实施例提供的方法中,在探测阶段先选择哈希表大小范围对应的探测模式,例如,根据哈希表的大小选择逐条探测模式或者攒批探测模式,再根据选择的探测模式对应的单次探测扫描的数据量来扫描订单表中的数据,去build表中根据会员号匹配到对应的会员,然后读取该会员的相关信息,这个过程被称为probe操作,订单表称之为probe表。
需要说明的是,本说明书实施例提供的方法对多个探测模式的单次探测扫描的数据量具体数值并不进行限制,具体可以依据实施场景需要进行限制。例如,一个探测模式的单次探测扫描的数据可以是n条,另一个探测模式的单次探测扫描的数据可以是m条。其中,m>n≥1。具体地,例如,一个探测模式为逐条探测模式,其单次探测扫描的数据可以是1条,另一个探测模式为攒批探测模式,其单次探测扫描的数据的条数可以是预设的某个大于1的数值。
例如,在选择的探测模式为逐条探测模式的情况下,所述利用选择的探测模式对哈希表执行哈希连接的探测,可以包括:从驱动表获取一条未扫描过的数据,使该条数据成为已扫描过的数据;根据所述一条数据的关联键在哈希表中查找到匹配的数据行存下来;根据查找到的数据行的行号获取需要的列的数据;判断所述驱动表是否存在未扫描过的数据,如果存在,返回到所述从驱动表获取一条未扫描过的数据的步骤。
为了使该逐条探测模式的处理过程更加易于理解,下面结合哈希连接在探测阶段的Lookup操作和Append操作对逐条探测模式的处理过程进行示例性说明。图2示出了逐条探测模式的处理流程图,包括步骤202至步骤208。
步骤202:判断Probe表是否还有数据未被扫描。
如果否,结束流程。
步骤204:如果是,从Probe表输入一条数据。
步骤206:根据输入的一条数据Lookup出Build表的行号。
Lookup:是根据关联键去build表中找到匹配的数据行存下来的操作。
步骤208:根据Lookup出的行号Append结果,重新进入步骤202。
Append:是把Lookup出的数据行的需要的列数据读出来。
可见,逐条探测模式是对Probe输入的数据每条去Lookup,再根据Lookup的结果去Append结果,实现简单,在Build表非常小的情况下,所有的计算数据都在寄存器中,属于寄存器友好型计算,计算性能高,有助于提升数据库的查询性能。
再例如,在选择的探测模式为攒批探测模式的情况下,所述利用选择的探测模式对哈希表执行哈希连接的探测,包括:从驱动表获取一条未扫描过的数据,使该条数据成为已扫描过的数据;如果所述驱动表不存在未扫描过的数据,判断是否还有存下来的行号未获取需要的列,如果有,根据存下来的行号获取需要的列的数据;根据所述一条数据的关联键在哈希表中查找到匹配的数据行存下来;判断本次探测扫描数据累计的条数是否达到攒批探测模式对应的预设攒批阈值;如果否,重新进入所述从驱动表获取一条未扫描过的数据的步骤;如果是,根据本次探测查找到的数据行的行号获取需要的列的数据;判断所述驱动表是否存在未扫描过的数据,如果存在,通过返回到所述从驱动表获取一条未扫描过的数据的步骤进入下一次探测扫描。
为了使该攒批探测模式的处理过程更加易于理解,下面结合哈希连接在探测阶段的Lookup操作和Append操作对攒批探测模式的处理过程进行示例性说明。图3示出了攒批探测模式的处理流程图,包括步骤302至步骤316。
步骤302:判断Probe表是否还有数据未被扫描。
步骤304:如果否,判断是否还有存下来的行号未Append结果。
如果有,进入步骤316根据存下来的本批次行号Append结果。
如果没有,结束流程。
步骤308:如果还有数据未被扫描,从Probe表输入一条数据。
步骤310:将输入的一条数据Lookup出Build表的行号存下来。
步骤312:判断本次探测存下来的行号数量是否达到预设攒批阈值。
如果否,重新进入步骤302。
步骤316:如果是,根据存下来的本批次行号Append结果,重新进入步骤302。
可见,攒批探测模式是对Probe输入的数据分批,每批若干条数据,然后一批数据一起Lookup,再根据Lookup的一批结果一起Append结果,对于Build表比较大的情况,将Lookup和Append操作分开在不同的批次操作,则每个批次的内存访问凝聚性提升,攒批执行后,访存指令更加集中,CPU的并行访存优化也会提升性能,从而有助于提升数据库的查询性能。
可以理解的是,单次探测扫描的数据量越大,越能够达到内存访问性能的提升,但是同时会带来CPU指令的增加。因此,在选择探测模式时,需要平衡内存访问性能提升和CPU指令开销。从计算机体系结构理论来讲,内存访问性能和内存大小是有关的,CPU读取数据会先将数据加载进缓存里,缓存有三个级别,分别是L1、L2、L3。其中L3缓存空间最大,访问性能最差;L1缓存空间最小,访问性能最好,接近于CPU指令直接处理的开销。由此,在某些场景中,可以根据L1、L2、L3三个级别带来的内存访问性能提升和CPU指令开销来确定多个探测模式分别对应的表数据量范围。但是,由于实际生产上CPU型号层次不齐,摩尔定律促使CPU不断更新换代,不同级别缓存的性能和大小都在不断变化,有时根据L1、L2、L3也难以决定阈值来确定多个探测模式分别对应的表数据量范围以及单次探测扫描的数据量。
有鉴于此,本说明书实施例还提供了另一种数据库执行哈希连接的方法,该方法在多个探测模式单次探测扫描的数据量不同且已定的情况下,通过累积的样本确定出了多个探测模式分别对应的表数据量范围。图4示出了根据本说明书另一个实施例提供的一种数据库执行哈希连接的方法的流程图,包括步骤402至步骤410。
步骤402:设置多个探测模式分别对应的表数据量范围的初值,所述多个探测模式单次探测扫描的数据量不同。
步骤404:获取为哈希连接构建的哈希表样本的数据量。
步骤406:通过将所述哈希表样本的数据量与多个探测模式分别对应的表数据量范围比较,选择所述哈希表样本对应的探测模式。
步骤408:在利用选择的探测模式对哈希表样本执行哈希连接的探测时,采集表示哈希连接性能的性能数据。
步骤410:根据采集的性能数据调整一个或多个探测模式分别对应的表数据量范围。
由于本说明书实施例提供的方法基于累积的样本更加准确、自适应地调整出多个探测模式分别对应的表数据量范围,从而有助于数据库在哈希连接时使用自适应地多个探测模式分别对应的表数据量范围来选择探测模式,以便最大化利用不同探测模式的性能优势,有效提高哈希连接的查询性能。
为了能够充分对样本进行分析,本说明书一个或多个实施例中,还可以在所述哈希表样本的数据量未落入所述多个探测模式分别对应的表数据量范围的情况下,从所述多个探测模式中随机选择对应的探测模式作为选择的探测模式。
例如,如图5所示的逐条探测模式及攒批探测模式对应的表数据量范围调整过程示意图。
步骤502:在初始阶段,可以预先根据经验给出两个比较保守的阈值:r1和r2。其中,逐条探测模式对应的表数据量范围为r1,攒批探测模式对应的表数据量范围为r2。
步骤504:运行哈希连接的查询,构建Build表样本。
步骤506:如果Build表样本的大小大于r2,使用攒批探测模式。
步骤508:如果Build表样本的大小小于r1,使用逐条探测模式。
步骤510:如果Build表样本的大小介于r1与r2之间,随机采用两种模式中的任一种探测。
步骤512:在利用选择的探测模式对Build表样本执行哈希连接的探测时,采集表示哈希连接性能的性能数据。
步骤514:根据对性能数据的分析,调大r1或者调小r2,直到r1和r2达到稳定提升性能的效果。
例如,在Build表样本同样大小时,逐条执行更快,则将r1调到Build表样本的大小,否则将r2调到Build表样本的大小。
与上述方法实施例相对应,本说明书还提供了数据库执行哈希连接的装置实施例,图6示出了本说明书一个实施例提供的一种数据库执行哈希连接的装置的结构示意图。如图6所示,该装置包括:数据量获取模块602、模式选择模块604及探测执行模块606。
该数据量获取模块602,可以被配置为获取为哈希连接构建的哈希表的数据量。
该模式选择模块604,可以被配置为通过将所述哈希表的数据量与多个探测模式分别对应的表数据量范围比较,选择所述哈希表对应的探测模式,所述多个探测模式单次探测扫描的数据量不同。
该探测执行模块606,可以被配置为利用选择的探测模式对哈希表执行哈希连接的探测。
由于数据量不同的单次探测对应不同数据量的哈希表在探测时表现的查询性能不同,因此,本说明书实施例提供的装置预设了多个探测模式分别对应的表数据量范围,从而能够根据哈希表数据量选择对应的探测模式,利用探测模式对应的单次探测扫描的数据量来执行哈希连接的探测,能够最大化利用不同探测模式的性能优势,有效提高哈希连接的查询性能。
本说明书一个或多个实施例中,所述多个探测模式可以包括:逐条探测模式及攒批探测模式。
图7示出了本说明书另一个实施例提供的一种数据库执行哈希连接的装置的结构示意图。如图7所示,例如,在所述模式选择模块604选择的探测模式为逐条探测模式的情况下,所述探测执行模块606可以包括:逐条获取子模块6062、逐条查找子模块6064、逐条数据获取子模块6066及逐条扫描判断子模块6068。
该逐条获取子模块6062,可以被配置为从驱动表获取一条未扫描过的数据,使该条数据成为已扫描过的数据。
该逐条查找子模块6064,可以被配置为根据所述一条数据的关联键在哈希表中查找到匹配的数据行存下来。
该逐条数据获取子模块6066,可以被配置为根据查找到的数据行的行号获取需要的列的数据。
该逐条扫描判断子模块6068,可以被配置为判断所述驱动表是否存在未扫描过的数据,如果存在,触发所述数据获取子模块6062返回到所述从驱动表获取一条未扫描过的数据的步骤。
可见,逐条探测模式是对Probe输入的数据每条去Lookup,再根据Lookup的结果去Append结果,实现简单,在Build表非常小的情况下,所有的计算数据都在寄存器中,属于寄存器友好型计算,计算性能高,有助于提升数据库的查询性能。
再例如,在所述模式选择模块604选择的探测模式为攒批探测模式的情况下,所述探测执行模块606可以包括:
攒批获取子模块6070,可以被配置为从驱动表获取一条未扫描过的数据,使该条数据成为已扫描过的数据。
余行数据获取子模块6071,可以被配置为如果所述驱动表不存在未扫描过的数据,判断是否还有存下来的行号未获取需要的列,如果有,根据存下来的行号获取需要的列的数据。
攒批查找子模块6072,可以被配置为根据所述一条数据的关联键在哈希表中查找到匹配的数据行存下来。
攒批条数判断子模块6074,可以被配置为判断本次探测扫描数据累计的条数是否达到攒批探测模式对应的预设攒批阈值。
如果否,触发所述攒批获取子模块6070重新进入所述从驱动表获取一条未扫描过的数据的步骤。
攒批数据获取子模块6076,可以被配置为如果所述攒批扫描判断子模块6074判定为是,根据本次探测查找到的数据行的行号获取需要的列的数据。
攒批扫描判断子模块6078,可以被配置为判断所述驱动表是否存在未扫描过的数据,如果存在,通过触发所述攒批获取子模块6070返回到所述从驱动表获取一条未扫描过的数据的步骤进入下一次探测扫描。
可见,攒批探测模式是对Probe输入的数据分批,每批若干条数据,然后一批数据一起Lookup,再根据Lookup的一批结果一起Append结果,对于Build表比较大的情况,将Lookup和Append操作分开在不同的批次操作,则每个批次的内存访问凝聚性提升,攒批执行后,访存指令更加集中,CPU的并行访存优化也会提升性能,从而有助于提升数据库的查询性能。
本说明书一个或多个实施例中,如图7所示,所述装置还可以包括:初值设置模块608、样本数据量获取模块610、样本模式选择模块612、性能采集模块614及范围调整模块616。
该初值设置模块608,可以被配置为设置多个探测模式分别对应的表数据量范围的初值。
该样本数据量获取模块610,可以被配置为获取为哈希连接构建的哈希表样本的数据量。
该样本模式选择模块612,可以被配置为通过将所述哈希表样本的数据量与多个探测模式分别对应的表数据量范围比较,选择所述哈希表样本对应的探测模式,所述多个探测模式单次探测扫描的数据量不同。
该性能采集模块614,可以被配置为在利用选择的探测模式对哈希表样本执行哈希连接的探测时,采集表示哈希连接性能的性能数据。
该范围调整模块616,可以被配置为根据采集的性能数据调整一个或多个探测模式分别对应的表数据量范围。
本说明书一个或多个实施例中,所述装置的样本模式选择模块612还可以被配置为在所述哈希表样本的数据量未落入所述多个探测模式分别对应的表数据量范围的情况下,从所述多个探测模式中随机选择对应的探测模式作为选择的探测模式。
由于本说明书实施例提供的装置基于样本累积更加准确、自适应地调整出多个探测模式分别对应的表数据量范围,从而有助于数据库在哈希连接时使用自适应地多个探测模式分别对应的表数据量范围来选择探测模式,以便最大化利用不同探测模式的性能优势,有效提高哈希连接的查询性能。
上述为本实施例的一种数据库执行哈希连接的装置的示意性方案。需要说明的是,该数据库执行哈希连接的装置的技术方案与上述的数据库执行哈希连接的方法的技术方案属于同一构思,数据库执行哈希连接的装置的技术方案未详细描述的细节内容,均可以参见上述数据库执行哈希连接的方法的技术方案的描述。
图8示出了根据本说明书一个实施例提供的一种计算设备800的结构框图。该计算设备800的部件包括但不限于存储器810和处理器820。处理器820与存储器810通过总线830相连接,数据库850用于保存数据。
计算设备800还包括接入设备840,接入设备840使得计算设备800能够经由一个或多个网络860通信。这些网络的示例包括公用交换电话网(PSTN)、局域网(LAN)、广域网(WAN)、个域网(PAN)或诸如因特网的通信网络的组合。接入设备840可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE802.11无线局域网(WLAN)无线接口、全球微波互联接入(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。
在本说明书的一个实施例中,计算设备800的上述部件以及图8中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图8所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
计算设备800可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或PC的静止计算设备。计算设备800还可以是移动式或静止式的服务器。
其中,处理器820用于执行如下计算机可执行指令:
获取为哈希连接构建的哈希表的数据量;
通过将所述哈希表的数据量与多个探测模式分别对应的表数据量范围比较,选择所述哈希表对应的探测模式,所述多个探测模式单次探测扫描的数据量不同;
利用选择的探测模式对哈希表执行哈希连接的探测。
上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的数据库执行哈希连接的方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述数据库执行哈希连接的方法的技术方案的描述。
本说明书一实施例还提供一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时以用于:
获取为哈希连接构建的哈希表的数据量;
通过将所述哈希表的数据量与多个探测模式分别对应的表数据量范围比较,选择所述哈希表对应的探测模式,所述多个探测模式单次探测扫描的数据量不同;
利用选择的探测模式对哈希表执行哈希连接的探测。
上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的数据库执行哈希连接的方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述数据库执行哈希连接的方法的技术方案的描述。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本说明书实施例并不受所描述的动作顺序的限制,因为依据本说明书实施例,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本说明书实施例所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上公开的本说明书优选实施例只是用于帮助阐述本说明书。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书实施例的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本说明书实施例的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本说明书。本说明书仅受权利要求书及其全部范围和等效物的限制。

Claims (9)

1.一种数据库执行哈希连接的方法,包括:
获取为哈希连接构建的哈希表的数据量;
通过将所述哈希表的数据量与多个探测模式分别对应的表数据量范围比较,选择所述哈希表对应的探测模式,所述多个探测模式单次探测扫描的数据量不同;
利用选择的探测模式对哈希表执行哈希连接的探测。
2.根据权利要求1所述的方法,所述多个探测模式包括:逐条探测模式及攒批探测模式。
3.根据权利要求2所述的方法,在选择的探测模式为逐条探测模式的情况下,所述利用选择的探测模式对哈希表执行哈希连接的探测,包括:
从驱动表获取一条未扫描过的数据,该条数据成为已扫描过的数据;
根据所述一条数据的关联键,在哈希表中查找到匹配的数据行存下来;
根据查找到的数据行的行号获取需要的列的数据;
判断所述驱动表是否存在未扫描过的数据,如果存在,返回到所述从驱动表获取一条未扫描过的数据的步骤。
4.根据权利要求2所述的方法,在选择的探测模式为攒批探测模式的情况下,所述利用选择的探测模式对哈希表执行哈希连接的探测,包括:
从驱动表获取一条未扫描过的数据,该条数据成为已扫描过的数据;
如果所述驱动表不存在未扫描过的数据,判断是否还有存下来的行号未获取需要的列,如果有,根据存下来的行号获取需要的列的数据;
根据所述一条数据的关联键,在哈希表中查找到匹配的数据行存下来;
判断本次探测扫描数据累计的条数是否达到攒批探测模式对应的预设攒批阈值;
如果否,重新进入所述从驱动表获取一条未扫描过的数据的步骤;
如果是,根据本次探测查找到的数据行的行号获取需要的列的数据;
判断所述驱动表是否存在未扫描过的数据,如果存在,通过返回到所述从驱动表获取一条未扫描过的数据的步骤进入下一次探测扫描。
5.根据权利要求1所述的方法,还包括:
设置多个探测模式分别对应的表数据量范围的初值;
获取为哈希连接构建的哈希表样本的数据量;
通过将所述哈希表样本的数据量与多个探测模式分别对应的表数据量范围比较,选择所述哈希表样本对应的探测模式,所述多个探测模式单次探测扫描的数据量不同;
在利用选择的探测模式对哈希表样本执行哈希连接的探测时,采集表示哈希连接性能的性能数据;
根据采集的性能数据调整一个或多个探测模式分别对应的表数据量范围。
6.根据权利要求5所述的方法,还包括:
在所述哈希表样本的数据量未落入所述多个探测模式分别对应的表数据量范围的情况下,从所述多个探测模式中随机选择对应的探测模式作为选择的探测模式。
7.一种数据库执行哈希连接的装置,包括:
数据量获取模块,被配置为获取为哈希连接构建的哈希表的数据量;
模式选择模块,被配置为通过将所述哈希表的数据量与多个探测模式分别对应的表数据量范围比较,选择所述哈希表对应的探测模式,所述多个探测模式单次探测扫描的数据量不同;
探测执行模块,被配置为利用选择的探测模式对哈希表执行哈希连接的探测。
8.一种计算设备,包括:
存储器和处理器;
所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令:
获取为哈希连接构建的哈希表的数据量;
通过将所述哈希表的数据量与多个探测模式分别对应的表数据量范围比较,选择所述哈希表对应的探测模式,所述多个探测模式单次探测扫描的数据量不同;
利用选择的探测模式对哈希表执行哈希连接的探测。
9.一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时实现权利要求1至6任意一项所述数据库执行哈希连接的方法的步骤。
CN202110181601.7A 2021-02-10 2021-02-10 数据库执行哈希连接的方法以及装置 Active CN113297209B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110181601.7A CN113297209B (zh) 2021-02-10 2021-02-10 数据库执行哈希连接的方法以及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110181601.7A CN113297209B (zh) 2021-02-10 2021-02-10 数据库执行哈希连接的方法以及装置

Publications (2)

Publication Number Publication Date
CN113297209A true CN113297209A (zh) 2021-08-24
CN113297209B CN113297209B (zh) 2024-03-08

Family

ID=77319109

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110181601.7A Active CN113297209B (zh) 2021-02-10 2021-02-10 数据库执行哈希连接的方法以及装置

Country Status (1)

Country Link
CN (1) CN113297209B (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008084244A (ja) * 2006-09-29 2008-04-10 Alaxala Networks Corp ハッシュテーブル生成方法
US20130013585A1 (en) * 2011-07-08 2013-01-10 Goetz Graefe Hash join and hash aggregation integration system
US20130318067A1 (en) * 2012-05-23 2013-11-28 International Business Machines Corporation Hardware-accelerated relational joins
CN104182409A (zh) * 2013-05-24 2014-12-03 腾讯科技(深圳)有限公司 一种对多阶哈希进行优化的方法及装置
CN105183880A (zh) * 2015-09-22 2015-12-23 浪潮集团有限公司 一种哈希连接的方法及装置
CN108182084A (zh) * 2017-12-28 2018-06-19 中国科学院计算技术研究所 哈希混合加速系统及应用其进行哈希连接的方法
CN110263038A (zh) * 2019-06-11 2019-09-20 中国人民大学 一种基于分组向量的哈希多表连接实现方法
US20200125368A1 (en) * 2018-10-23 2020-04-23 Nvidia Corporation Effective and scalable building and probing of hash tables using multiple gpus

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008084244A (ja) * 2006-09-29 2008-04-10 Alaxala Networks Corp ハッシュテーブル生成方法
US20130013585A1 (en) * 2011-07-08 2013-01-10 Goetz Graefe Hash join and hash aggregation integration system
US20130318067A1 (en) * 2012-05-23 2013-11-28 International Business Machines Corporation Hardware-accelerated relational joins
CN104182409A (zh) * 2013-05-24 2014-12-03 腾讯科技(深圳)有限公司 一种对多阶哈希进行优化的方法及装置
CN105183880A (zh) * 2015-09-22 2015-12-23 浪潮集团有限公司 一种哈希连接的方法及装置
CN108182084A (zh) * 2017-12-28 2018-06-19 中国科学院计算技术研究所 哈希混合加速系统及应用其进行哈希连接的方法
US20200125368A1 (en) * 2018-10-23 2020-04-23 Nvidia Corporation Effective and scalable building and probing of hash tables using multiple gpus
CN110263038A (zh) * 2019-06-11 2019-09-20 中国人民大学 一种基于分组向量的哈希多表连接实现方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
周开来;陈红;孙辉;李翠平;董兆安;: "ALFHJ:一种面向众核协处理器的自适应无锁哈希连接算法", 计算机学报, no. 10 *
张宇;张延松;陈红;王珊;: "面向MIC协处理器的OLAP外键连接算法", 软件学报, no. 03 *

Also Published As

Publication number Publication date
CN113297209B (zh) 2024-03-08

Similar Documents

Publication Publication Date Title
CN109885576B (zh) 一种哈希表创建方法及系统、计算设备及存储介质
JP5282658B2 (ja) 画像学習、自動注釈、検索方法及び装置
JP2021533450A (ja) 機械学習のためのハイパーパラメータの識別および適用
CN103530321A (zh) 一种基于机器学习的排序系统
CN108536739B (zh) 元数据敏感信息字段识别方法、装置、设备及存储介质
CN113297135A (zh) 数据处理方法以及装置
CN103634881B (zh) 频点搜索方法及装置、终端
CN110245191B (zh) 数据处理方法及装置
CN113297269A (zh) 数据查询方法及装置
CN112364014B (zh) 数据查询方法、装置、服务器及存储介质
US9286217B2 (en) Systems and methods for memory utilization for object detection
CN116467171A (zh) 自动化测试用例构建装置、方法、电子设备及存储介质
CN111309946A (zh) 一种已建立档案优化方法及装置
CN106844553B (zh) 基于样本数据的数据探测和扩充方法及装置
CN113297209A (zh) 数据库执行哈希连接的方法以及装置
CN110968835A (zh) 一种近似分位数计算方法及装置
CN109241249B (zh) 一种确定突发问题的方法及装置
CN116501950A (zh) 召回模型优化方法、装置、设备及存储介质
CN112580747A (zh) 匹配方法及装置
CN112597275A (zh) 内容搜索方法及装置
WO2021158542A1 (en) Systems and methods for identifying samples of interest by comparing aligned time-series measurements
Tang et al. A Two-stage Algorithm Based on Prediction and Search for Maxk-Truss Decomposition
CN107333280B (zh) 用户终端及其邻小区的检测方法
CN109189346B (zh) 一种数据处理方法及装置
KR101317540B1 (ko) 최대 가중화 빈발 패턴 마이닝 방법

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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40058646

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant