哈希娱乐 行业新闻 党建先锋

数据库执哈希游戏行哈希连接的方法以及装置pdf

发布时间:2025-05-29 20:42:44  浏览:

  哈希游戏作为一种新兴的区块链应用,它巧妙地结合了加密技术与娱乐,为玩家提供了全新的体验。万达哈希平台凭借其独特的彩票玩法和创新的哈希算法,公平公正-方便快捷!万达哈希,哈希游戏平台,哈希娱乐,哈希游戏

数据库执哈希游戏行哈希连接的方法以及装置pdf

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

  (19)中华人民共和国国家知识产权局 (12)发明专利申请 (10)申请公布号 CN 113297209 A (43)申请公布日 2021.08.24 (21)申请号 1.7 (22)申请日 2021.02.10 (71)申请人 阿里巴巴集团控股有限公司 地址 英属开曼群岛大开曼资本大厦一座四 层847号邮箱 (72)发明人 胥平勇 (74)专利代理机构 北京智信禾专利代理有限公 司 11637 代理人 赵杰 (51)Int.Cl. G06F 16/22 (2019.01) G06F 16/2453 (2019.01) G06F 16/2455 (2019.01) 权利要求书2页 说明书10页 附图7页 (54)发明名称 数据库执行哈希连接的方法以及装置 (57)摘要 本说明书实施例提供数据库执行哈希连接 的方法以及装置,其中所述方法包括:获取为哈 希连接构建的哈希表的数据量;通过将所述哈希 表的数据量与多个探测模式分别对应的表数据 量范围比较,选择所述哈希表对应的探测模式, 所述多个探测模式单次探测扫描的数据量不同; 利用选择的探测模式对哈希表执行哈希连接的 探测。 A 9 0 2 7 9 2 3 1 1 N C CN 113297209 A 权利要求书 1/2页 1.一种数据库执行哈希连接的方法,包括: 获取为哈希连接构建的哈希表的数据量; 通过将所述哈希表的数据量与多个探测模式分别对应的表数据量范围比较,选择所述 哈希表对应的探测模式,所述多个探测模式单次探测扫描的数据量不同; 利用选择的探测模式对哈希表执行哈希连接的探测。 2.根据权利要求1所述的方法,所述多个探测模式包括:逐条探测模式及攒批探测模 式。 3.根据权利要求2所述的方法,在选择的探测模式为逐条探测模式的情况下,所述利用 选择的探测模式对哈希表执行哈希连接的探测,包括: 从驱动表获取一条未扫描过的数据,该条数据成为已扫描过的数据; 根据所述一条数据的关联键,在哈希表中查找到匹配的数据行存下来; 根据查找到的数据行的行号获取需要的列的数据; 判断所述驱动表是否存在未扫描过的数据,如果存在,返回到所述从驱动表获取一条 未扫描过的数据的步骤。 4.根据权利要求2所述的方法,在选择的探测模式为攒批探测模式的情况下,所述利用 选择的探测模式对哈希表执行哈希连接的探测,包括: 从驱动表获取一条未扫描过的数据,该条数据成为已扫描过的数据; 如果所述驱动表不存在未扫描过的数据,判断是否还有存下来的行号未获取需要的 列,如果有,根据存下来的行号获取需要的列的数据; 根据所述一条数据的关联键,在哈希表中查找到匹配的数据行存下来; 判断本次探测扫描数据累计的条数是否达到攒批探测模式对应的预设攒批阈值; 如果否,重新进入所述从驱动表获取一条未扫描过的数据的步骤; 如果是,根据本次探测查找到的数据行的行号获取需要的列的数据; 判断所述驱动表是否存在未扫描过的数据,如果存在,通过返回到所述从驱动表获取 一条未扫描过的数据的步骤进入下一次探测扫描。 5.根据权利要求1所述的方法,还包括: 设置多个探测模式分别对应的表数据量范围的初值; 获取为哈希连接构建的哈希表样本的数据量; 通过将所述哈希表样本的数据量与多个探测模式分别对应的表数据量范围比较,选择 所述哈希表样本对应的探测模式,所述多个探测模式单次探测扫描的数据量不同; 在利用选择的探测模式对哈希表样本执行哈希连接的探测时,采集表示哈希连接性能 的性能数据; 根据采集的性能数据调整一个或多个探测模式分别对应的表数据量范围。 6.根据权利要求5所述的方法,还包括: 在所述哈希表样本的数据量未落入所述多个探测模式分别对应的表数据量范围的情 况下,从所述多个探测模式中随机选择对应的探测模式作为选择的探测模式。 7.一种数据库执行哈希连接的装置,包括: 数据量获取模块,被配置为获取为哈希连接构建的哈希表的数据量; 模式选择模块,被配置为通过将所述哈希表的数据量与多个探测模式分别对应的表数 2 2 CN 113297209 A 权利要求书 2/2页 据量范围比较,选择所述哈希表对应的探测模式,所述多个探测模式单次探测扫描的数据 量不同; 探测执行模块,被配置为利用选择的探测模式对哈希表执行哈希连接的探测。 8.一种计算设备,包括: 存储器和处理器; 所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指 令: 获取为哈希连接构建的哈希表的数据量; 通过将所述哈希表的数据量与多个探测模式分别对应的表数据量范围比较,选择所述 哈希表对应的探测模式,所述多个探测模式单次探测扫描的数据量不同; 利用选择的探测模式对哈希表执行哈希连接的探测。 9.一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时实现权利 要求1至6任意一项所述数据库执行哈希连接的方法的步骤。 3 3 CN 113297209 A 说明书 1/10页 数据库执行哈希连接的方法以及装置 技术领域 [0001] 本说明书实施例涉及计算机技术领域,特别涉及数据库执行哈希连接的方法。本 说明书一个或者多个实施例同时涉及数据库执行哈希连接的装置,计算设备,以及计算机 可读存储介质。 背景技术 [0002] 哈希连接(hash  join),是在数据库中建立多张表之间的关系的操作,不管是传统 的关系型数据库,还是大数据领域的数据仓库中,特别是OLAP里,都是常见的基础操作。哈 希连接对一个表构建哈希表,扫描另一个表的数据与哈希表比对,从而探测出二者的连接。 例如,一个针对订票的商业系统,有两张表及各自字段:订单表(会员号,订单时间,订单详 情)和会员表(会员号,会员名称,会员时间),对提交订单的会员,将订单表和会员表根据会 员号关联时,就是一种连接操作。 [0003] 由于哈希连接是数据库处理常见的基础操作,如何提高哈希连接的性能是个需要 解决的重要问题。 发明内容 [0004] 有鉴于此,本说明书实施例提供了一种数据库执行哈希连接的方法。本说明书一 个或者多个实施例同时涉及一种数据库执行哈希连接的装置,一种计算设备,以及一种计 算机可读存储介质,以解决现有技术中存在的技术缺陷。 [0005] 根据本说明书实施例的第一方面,提供了一种数据库执行哈希连接的方法,包括: 获取为哈希连接构建的哈希表的数据量;通过将所述哈希表的数据量与多个探测模式分别 对应的表数据量范围比较,选择所述哈希表对应的探测模式,所述多个探测模式单次探测 扫描的数据量不同;利用选择的探测模式对哈希表执行哈希连接的探测。 [0006] 可选地,所述多个探测模式包括:逐条探测模式及攒批探测模式。 [0007] 可选地,在选择的探测模式为逐条探测模式的情况下,所述利用选择的探测模式 对哈希表执行哈希连接的探测,包括:从驱动表获取一条未扫描过的数据,使该条数据成为 已扫描过的数据;根据所述一条数据的关联键,在哈希表中查找到匹配的数据行存下来;根 据查找到的数据行的行号获取需要的列的数据;判断所述驱动表是否存在未扫描过的数 据,如果存在,返回到所述从驱动表获取一条未扫描过的数据的步骤。 [0008] 可选地,在选择的探测模式为攒批探测模式的情况下,所述利用选择的探测模式 对哈希表执行哈希连接的探测,包括:从驱动表获取一条未扫描过的数据,使该条数据成为 已扫描过的数据;如果所述驱动表不存在未扫描过的数据,判断是否还有存下来的行号未 获取需要的列,如果有,根据存下来的行号获取需要的列的数据;根据所述一条数据的关联 键,在哈希表中查找到匹配的数据行存下来;判断本次探测扫描数据累计的条数是否达到 攒批探测模式对应的预设攒批阈值;如果否,重新进入所述从驱动表获取一条未扫描过的 数据的步骤;如果是,根据本次探测查找到的数据行的行号获取需要的列的数据;判断所述 4 4 CN 113297209 A 说明书 2/10页 驱动表是否存在未扫描过的数据,如果存在,通过返回到所述从驱动表获取一条未扫描过 的数据的步骤进入下一次探测扫描。 [0009] 可选地,所述方法还包括:设置多个探测模式分别对应的表数据量范围的初值;获 取为哈希连接构建的哈希表样本的数据量;通过将所述哈希表样本的数据量与多个探测模 式分别对应的表数据量范围比较,选择所述哈希表样本对应的探测模式,所述多个探测模 式单次探测扫描的数据量不同;在利用选择的探测模式对哈希表样本执行哈希连接的探测 时,采集表示哈希连接性能的性能数据;根据采集的性能数据调整一个或多个探测模式分 别对应的表数据量范围。 [0010] 可选地,所述方法还包括:在所述哈希表样本的数据量未落入所述多个探测模式 分别对应的表数据量范围的情况下,从所述多个探测模式中随机选择对应的探测模式作为 选择的探测模式。 [0011] 根据本说明书实施例的第二方面,提供了一种数据库执行哈希连接的装置,包括: 数据量获取模块,被配置为获取为哈希连接构建的哈希表的数据量。模式选择模块,被配置 为通过将所述哈希表的数据量与多个探测模式分别对应的表数据量范围比较,选择所述哈 希表对应的探测模式,所述多个探测模式单次探测扫描的数据量不同。探测执行模块,被配 置为利用选择的探测模式对哈希表执行哈希连接的探测。 [0012] 根据本说明书实施例的第三方面,提供了一种计算设备,包括:存储器和处理器; 所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令:获 取为哈希连接构建的哈希表的数据量;通过将所述哈希表的数据量与多个探测模式分别对 应的表数据量范围比较,选择所述哈希表对应的探测模式,所述多个探测模式单次探测扫 描的数据量不同;利用选择的探测模式对哈希表执行哈希连接的探测。 [0013] 根据本说明书实施例的第四方面,提供了一种计算机可读存储介质,其存储有计 算机指令,该指令被处理器执行时实现本说明书任意实施例所述数据库执行哈希连接的方 法的步骤。 [0014] 本说明书一个实施例提供了数据库执行哈希连接的方法,该方法获取哈希连接构 建的哈希表的数据量,通过将所述哈希表的数据量与多个探测模式分别对应的表数据量范 围比较,选择所述哈希表对应的探测模式对哈希表执行哈希连接的探测,由于数据量不同 的单次探测对应不同数据量的哈希表在探测时表现的查询性能不同,因此,本说明书实施 例提供的方法预设了多个探测模式分别对应的表数据量范围,从而能够根据哈希表数据量 选择对应的探测模式,利用探测模式对应的单次探测扫描的数据量来执行哈希连接的探 测,能够最大化利用不同探测模式的性能优势,有效提高哈希连接的查询性能。 附图说明 [0015] 图1是本说明书一个实施例提供的一种数据库执行哈希连接的方法的流程图; [0016] 图2是本说明书一个实施例提供的逐条探测模式的处理流程图; [0017] 图3是本说明书一个实施例提供的攒批探测模式的处理流程图; [0018] 图4是本说明书另一个实施例提供的一种数据库执行哈希连接的方法的流程图; [0019] 图5是本说明书一个实施例提供的逐条探测模式及攒批探测模式对应的表数据量 范围调整过程示意图; 5 5 CN 113297209 A 说明书 3/10页 [0020] 图6示出了本说明书一个实施例提供的一种数据库执行哈希连接的装置的结构示 意图; [0021] 图7示出了本说明书另一个实施例提供的一种数据库执行哈希连接的装置的结构 示意图; [0022] 图8是本说明书一个实施例提供的一种计算设备的结构框图。 具体实施方式 [0023] 在下面的描述中阐述了很多具体细节以便于充分理解本说明书。但是本说明书能 够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本说明书内涵 的情况下做类似推广,因此本说明书不受下面公开的具体实施的限制。 [0024] 在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的, 而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求 书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地 表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含 一个或多个相关联的列出项目的任何或所有可能组合。 [0025] 应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描 述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分 开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类 似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为 “在……时”或“当……时”或“响应于确定”。 [0026] 首先,对本说明书一个或多个实施例涉及的名词术语进行解释。 [0027] 哈希连接:数据库的算子,用于将两张或多个表的数据按照某些列之间的关系按 行结合起来。 [0028] 关联键:哈希连接在结合多张表时,结合的列就是关联键列。 [0029] Build过程:建立过程,是将一张表构建出对应的哈希表到内存里供查找的过程。 [0030] Build表:Build操作构建的哈希表。 [0031] Probe过程:探测过程,Build过程结束后,对另一张表按行查找Build表中的行,输 出结合的数据的过程。 [0032] Probe表:驱动表,Probe过程中,按行计算的表是probe表。 [0033] 在本说明书中,提供了数据库执行哈希连接的方法,本说明书同时涉及数据库执 行哈希连接的装置,计算设备,以及计算机可读存储介质,在下面的实施例中逐一进行详细 说明。 [0034] 图1示出了根据本说明书一个实施例提供的一种数据库执行哈希连接的方法的流 程图,包括步骤102至步骤106。 [0035] 步骤102:获取为哈希连接构建的哈希表的数据量。 [0036] 步骤104:通过将所述哈希表的数据量与多个探测模式分别对应的表数据量范围 比较,选择所述哈希表对应的探测模式,所述多个探测模式单次探测扫描的数据量不同。 [0037] 步骤106:利用选择的探测模式对哈希表执行哈希连接的探测。 [0038] 由于数据量不同的单次探测对应不同数据量的哈希表在探测时表现的查询性能 6 6 CN 113297209 A 说明书 4/10页 不同,因此,本说明书实施例提供的方法预设了多个探测模式分别对应的表数据量范围,从 而能够根据哈希表数据量选择对应的探测模式,利用探测模式对应的单次探测扫描的数据 量来执行哈希连接的探测,能够最大化利用不同探测模式的性能优势,有效提高哈希连接 的查询性能。 [0039] 哈希连接主要分为两个阶段:建立阶段(build  phase)和探测阶段(probe  phase)。建立阶段,主要用于构建build表也即哈希表。例如,针对订票的商业系统的订单表 和会员表,可以根据会员表构建哈希表,提供按会员号(关联键)查找会员数据的功能。在本 说明书实施例提供的方法中,在探测阶段先选择哈希表大小范围对应的探测模式,例如,根 据哈希表的大小选择逐条探测模式或者攒批探测模式,再根据选择的探测模式对应的单次 探测扫描的数据量来扫描订单表中的数据,去build表中根据会员号匹配到对应的会员,然 后读取该会员的相关信息,这个过程被称为probe操作,订单表称之为probe表。 [0040] 需要说明的是,本说明书实施例提供的方法对多个探测模式的单次探测扫描的数 据量具体数值并不进行限制,具体可以依据实施场景需要进行限制。例如,一个探测模式的 单次探测扫描的数据可以是n条,另一个探测模式的单次探测扫描的数据可以是m条。其中, mn≥1。具体地,例如,一个探测模式为逐条探测模式,其单次探测扫描的数据可以是1条, 另一个探测模式为攒批探测模式,其单次探测扫描的数据的条数可以是预设的某个大于1 的数值。 [0041] 例如,在选择的探测模式为逐条探测模式的情况下,所述利用选择的探测模式对 哈希表执行哈希连接的探测,可以包括:从驱动表获取一条未扫描过的数据,使该条数据成 为已扫描过的数据;根据所述一条数据的关联键在哈希表中查找到匹配的数据行存下来; 根据查找到的数据行的行号获取需要的列的数据;判断所述驱动表是否存在未扫描过的数 据,如果存在,返回到所述从驱动表获取一条未扫描过的数据的步骤。 [0042] 为了使该逐条探测模式的处理过程更加易于理解,下面结合哈希连接在探测阶段 的Lookup操作和Append操作对逐条探测模式的处理过程进行示例性说明。图2示出了逐条 探测模式的处理流程图,包括步骤202至步骤208。 [0043] 步骤202:判断Probe表是否还有数据未被扫描。 [0044] 如果否,结束流程。 [0045] 步骤204:如果是,从Probe表输入一条数据。 [0046] 步骤206:根据输入的一条数据Lookup出Build表的行号。 [0047] Lookup:是根据关联键去build表中找到匹配的数据行存下来的操作。 [0048] 步骤208:根据Lookup出的行号Append结果,重新进入步骤202。 [0049] Append:是把Lookup出的数据行的需要的列数据读出来。 [0050] 可见,逐条探测模式是对Probe输入的数据每条去Lookup,再根据Lookup的结果去 Append结果,实现简单,在Build表非常小的情况下,所有的计算数据都在寄存器中,属于寄 存器友好型计算,计算性能高,有助于提升数据库的查询性能。 [0051] 再例如,在选择的探测模式为攒批探测模式的情况下,所述利用选择的探测模式 对哈希表执行哈希连接的探测,包括:从驱动表获取一条未扫描过的数据,使该条数据成为 已扫描过的数据;如果所述驱动表不存在未扫描过的数据,判断是否还有存下来的行号未 获取需要的列,如果有,根据存下来的行号获取需要的列的数据;根据所述一条数据的关联 7 7 CN 113297209 A 说明书 5/10页 键在哈希表中查找到匹配的数据行存下来;判断本次探测扫描数据累计的条数是否达到攒 批探测模式对应的预设攒批阈值;如果否,重新进入所述从驱动表获取一条未扫描过的数 据的步骤;如果是,根据本次探测查找到的数据行的行号获取需要的列的数据;判断所述驱 动表是否存在未扫描过的数据,如果存在,通过返回到所述从驱动表获取一条未扫描过的 数据的步骤进入下一次探测扫描。 [0052] 为了使该攒批探测模式的处理过程更加易于理解,下面结合哈希连接在探测阶段 的Lookup操作和Append操作对攒批探测模式的处理过程进行示例性说明。图3示出了攒批 探测模式的处理流程图,包括步骤302至步骤316。 [0053] 步骤302:判断Probe表是否还有数据未被扫描。 [0054] 步骤304:如果否,判断是否还有存下来的行号未Append结果。 [0055] 如果有,进入步骤316根据存下来的本批次行号Append结果。 [0056] 如果没有,结束流程。 [0057] 步骤308:如果还有数据未被扫描,从Probe表输入一条数据。 [0058] 步骤310:将输入的一条数据Lookup出Build表的行号存下来。 [0059] 步骤312:判断本次探测存下来的行号数量是否达到预设攒批阈值。 [0060] 如果否,重新进入步骤302。 [0061] 步骤316:如果是,根据存下来的本批次行号Append结果,重新进入步骤302。 [0062] 可见,攒批探测模式是对Probe输入的数据分批,每批若干条数据,然后一批数据 一起Lookup,再根据Lookup的一批结果一起Append结果,对于Build表比较大的情况,将 Lookup和Append操作分开在不同的批次操作,则每个批次的内存访问凝聚性提升,攒批执 行后,访存指令更加集中,CPU的并行访存优化也会提升性能,从而有助于提升数据库的查 询性能。 [0063] 可以理解的是,单次探测扫描的数据量越大,越能够达到内存访问性能的提升,但 是同时会带来CPU指令的增加。因此,在选择探测模式时,需要平衡内存访问性能提升和CPU 指令开销。从计算机体系结构理论来讲,内存访问性能和内存大小是有关的,CPU读取数据 会先将数据加载进缓存里,缓存有三个级别,分别是L1、L2、L3。其中L3缓存空间最大,访问 性能最差;L1缓存空间最小,访问性能最好,接近于CPU指令直接处理的开销。由此,在某些 场景中,可以根据L1、L2、L3三个级别带来的内存访问性能提升和CPU指令开销来确定多个 探测模式分别对应的表数据量范围。但是,由于实际生产上CPU型号层次不齐,摩尔定律促 使CPU不断更新换代,不同级别缓存的性能和大小都在不断变化,有时根据L1、L2、L3也难以 决定阈值来确定多个探测模式分别对应的表数据量范围以及单次探测扫描的数据量。 [0064] 有鉴于此,本说明书实施例还提供了另一种数据库执行哈希连接的方法,该方法 在多个探测模式单次探测扫描的数据量不同且已定的情况下,通过累积的样本确定出了多 个探测模式分别对应的表数据量范围。图4示出了根据本说明书另一个实施例提供的一种 数据库执行哈希连接的方法的流程图,包括步骤402至步骤410。 [0065] 步骤402:设置多个探测模式分别对应的表数据量范围的初值,所述多个探测模式 单次探测扫描的数据量不同。 [0066] 步骤404:获取为哈希连接构建的哈希表样本的数据量。 [0067] 步骤406:通过将所述哈希表样本的数据量与多个探测模式分别对应的表数据量 8 8 CN 113297209 A 说明书 6/10页 范围比较,选择所述哈希表样本对应的探测模式。 [0068] 步骤408:在利用选择的探测模式对哈希表样本执行哈希连接的探测时,采集表示 哈希连接性能的性能数据。 [0069] 步骤410:根据采集的性能数据调整一个或多个探测模式分别对应的表数据量范 围。 [0070] 由于本说明书实施例提供的方法基于累积的样本更加准确、自适应地调整出多个 探测模式分别对应的表数据量范围,从而有助于数据库在哈希连接时使用自适应地多个探 测模式分别对应的表数据量范围来选择探测模式,以便最大化利用不同探测模式的性能优 势,有效提高哈希连接的查询性能。 [0071] 为了能够充分对样本进行分析,本说明书一个或多个实施例中,还可以在所述哈 希表样本的数据量未落入所述多个探测模式分别对应的表数据量范围的情况下,从所述多 个探测模式中随机选择对应的探测模式作为选择的探测模式。 [0072] 例如,如图5所示的逐条探测模式及攒批探测模式对应的表数据量范围调整过程 示意图。 [0073] 步骤502:在初始阶段,可以预先根据经验给出两个比较保守的阈值:r1和r2。其 中,逐条探测模式对应的表数据量范围为r1,攒批探测模式对应的表数据量范围为r2。 [0074] 步骤504:运行哈希连接的查询,构建Build表样本。 [0075] 步骤506:如果Build表样本的大小大于r2,使用攒批探测模式。 [0076] 步骤508:如果Build表样本的大小小于r1,使用逐条探测模式。 [0077] 步骤510:如果Build表样本的大小介于r1与r2之间,随机采用两种模式中的任一 种探测。 [0078] 步骤512:在利用选择的探测模式对Build表样本执行哈希连接的探测时,采集表 示哈希连接性能的性能数据。 [0079] 步骤514:根据对性能数据的分析,调大r1或者调小r2,直到r1和r2达到稳定提升 性能的效果。 [0080] 例如,在Build表样本同样大小时,逐条执行更快,则将r1调到Build表样本的大 小,否则将r2调到Build表样本的大小。 [0081] 与上述方法实施例相对应,本说明书还提供了数据库执行哈希连接的装置实施 例,图6示出了本说明书一个实施例提供的一种数据库执行哈希连接的装置的结构示意图。 如图6所示,该装置包括:数据量获取模块602、模式选择模块604及探测执行模块606。 [0082] 该数据量获取模块602,可以被配置为获取为哈希连接构建的哈希表的数据量。 [0083] 该模式选择模块604,可以被配置为通过将所述哈希表的数据量与多个探测模式 分别对应的表数据量范围比较,选择所述哈希表对应的探测模式,所述多个探测模式单次 探测扫描的数据量不同。 [0084] 该探测执行模块606,可以被配置为利用选择的探测模式对哈希表执行哈希连接 的探测。 [0085] 由于数据量不同的单次探测对应不同数据量的哈希表在探测时表现的查询性能 不同,因此,本说明书实施例提供的装置预设了多个探测模式分别对应的表数据量范围,从 而能够根据哈希表数据量选择对应的探测模式,利用探测模式对应的单次探测扫描的数据 9 9 CN 113297209 A 说明书 7/10页 量来执行哈希连接的探测,能够最大化利用不同探测模式的性能优势,有效提高哈希连接 的查询性能。 [0086] 本说明书一个或多个实施例中,所述多个探测模式可以包括:逐条探测模式及攒 批探测模式。 [0087] 图7示出了本说明书另一个实施例提供的一种数据库执行哈希连接的装置的结构 示意图。如图7所示,例如,在所述模式选择模块604选择的探测模式为逐条探测模式的情况 下,所述探测执行模块606可以包括:逐条获取子模块6062、逐条查找子模块6064、逐条数据 获取子模块6066及逐条扫描判断子模块6068。 [0088] 该逐条获取子模块6062,可以被配置为从驱动表获取一条未扫描过的数据,使该 条数据成为已扫描过的数据。 [0089] 该逐条查找子模块6064,可以被配置为根据所述一条数据的关联键在哈希表中查 找到匹配的数据行存下来。 [0090] 该逐条数据获取子模块6066,可以被配置为根据查找到的数据行的行号获取需要 的列的数据。 [0091] 该逐条扫描判断子模块6068,可以被配置为判断所述驱动表是否存在未扫描过的 数据,如果存在,触发所述数据获取子模块6062返回到所述从驱动表获取一条未扫描过的 数据的步骤。 [0092] 可见,逐条探测模式是对Probe输入的数据每条去Lookup,再根据Lookup的结果去 Append结果,实现简单,在Build表非常小的情况下,所有的计算数据都在寄存器中,属于寄 存器友好型计算,计算性能高,有助于提升数据库的查询性能。 [0093] 再例如,在所述模式选择模块604选择的探测模式为攒批探测模式的情况下,所述 探测执行模块606可以包括: [0094] 攒批获取子模块6070,可以被配置为从驱动表获取一条未扫描过的数据,使该条 数据成为已扫描过的数据。 [0095] 余行数据获取子模块6071,可以被配置为如果所述驱动表不存在未扫描过的数 据,判断是否还有存下来的行号未获取需要的列,如果有,根据存下来的行号获取需要的列 的数据。 [0096] 攒批查找子模块6072,可以被配置为根据所述一条数据的关联键在哈希表中查找 到匹配的数据行存下来。 [0097] 攒批条数判断子模块6074,可以被配置为判断本次探测扫描数据累计的条数是否 达到攒批探测模式对应的预设攒批阈值。 [0098] 如果否,触发所述攒批获取子模块6070重新进入所述从驱动表获取一条未扫描过 的数据的步骤。 [0099] 攒批数据获取子模块6076,可以被配置为如果所述攒批扫描判断子模块6074判定 为是,根据本次探测查找到的数据行的行号获取需要的列的数据。 [0100] 攒批扫描判断子模块6078,可以被配置为判断所述驱动表是否存在未扫描过的数 据,如果存在,通过触发所述攒批获取子模块6070返回到所述从驱动表获取一条未扫描过 的数据的步骤进入下一次探测扫描。 [0101] 可见,攒批探测模式是对Probe输入的数据分批,每批若干条数据,然后一批数据 10 10 CN 113297209 A 说明书 8/10页 一起Lookup,再根据Lookup的一批结果一起Append结果,对于Build表比较大的情况,将 Lookup和Append操作分开在不同的批次操作,则每个批次的内存访问凝聚性提升,攒批执 行后,访存指令更加集中,CPU的并行访存优化也会提升性能,从而有助于提升数据库的查 询性能。 [0102] 本说明书一个或多个实施例中,如图7所示,所述装置还可以包括:初值设置模块 608、样本数据量获取模块610、样本模式选择模块612、性能采集模块614及范围调整模块 616。 [0103] 该初值设置模块608,可以被配置为设置多个探测模式分别对应的表数据量范围 的初值。 [0104] 该样本数据量获取模块610,可以被配置为获取为哈希连接构建的哈希表样本的 数据量。 [0105] 该样本模式选择模块612,可以被配置为通过将所述哈希表样本的数据量与多个 探测模式分别对应的表数据量范围比较,选择所述哈希表样本对应的探测模式,所述多个 探测模式单次探测扫描的数据量不同。 [0106] 该性能采集模块614,可以被配置为在利用选择的探测模式对哈希表样本执行哈 希连接的探测时,采集表示哈希连接性能的性能数据。 [0107] 该范围调整模块616,可以被配置为根据采集的性能数据调整一个或多个探测模 式分别对应的表数据量范围。 [0108] 本说明书一个或多个实施例中,所述装置的样本模式选择模块612还可以被配置 为在所述哈希表样本的数据量未落入所述多个探测模式分别对应的表数据量范围的情况 下,从所述多个探测模式中随机选择对应的探测模式作为选择的探测模式。 [0109] 由于本说明书实施例提供的装置基于样本累积更加准确、自适应地调整出多个探 测模式分别对应的表数据量范围,从而有助于数据库在哈希连接时使用自适应地多个探测 模式分别对应的表数据量范围来选择探测模式,以便最大化利用不同探测模式的性能优 势,有效提高哈希连接的查询性能。 [0110] 上述为本实施例的一种数据库执行哈希连接的装置的示意性方案。需要说明的 是,该数据库执行哈希连接的装置的技术方案与上述的数据库执行哈希连接的方法的技术 方案属于同一构思,数据库执行哈希连接的装置的技术方案未详细描述的细节内容,均可 以参见上述数据库执行哈希连接的方法的技术方案的描述。 [0111] 图8示出了根据本说明书一个实施例提供的一种计算设备800的结构框图。该计算 设备800的部件包括但不限于存储器810和处理器820。处理器820与存储器810通过总线还包括接入设备840,接入设备840使得计算设备800能够经由一个或 多个网络860通信。这些网络的示例包括公用交换电话网(PSTN)、局域网(LAN)、广域网 (WAN)、个域网(PAN)或诸如因特网的通信网络的组合。接入设备840可以包括有线或无线的 任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE802.11无线局域 网(WLAN)无线接口、全球微波互联接入(Wi‑MAX)接口、以太网接口、通用串行总线(USB)接 口、蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。 [0113] 在本说明书的一个实施例中,计算设备800的上述部件以及图8中未示出的其他部 11 11 CN 113297209 A 说明书 9/10页 件也可以彼此相连接,例如通过总线所示的计算设备结构框图仅仅是出于 示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其 他部件。 [0114] 计算设备800可以是任何类型的静止或移动计算设备,包括移动计算机或移动计 算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动 电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移 动设备,或者诸如台式计算机或PC的静止计算设备。计算设备800还可以是移动式或静止式 的服务器。 [0115] 其中,处理器820用于执行如下计算机可执行指令: [0116] 获取为哈希连接构建的哈希表的数据量; [0117] 通过将所述哈希表的数据量与多个探测模式分别对应的表数据量范围比较,选择 所述哈希表对应的探测模式,所述多个探测模式单次探测扫描的数据量不同; [0118] 利用选择的探测模式对哈希表执行哈希连接的探测。 [0119] 上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技 术方案与上述的数据库执行哈希连接的方法的技术方案属于同一构思,计算设备的技术方 案未详细描述的细节内容,均可以参见上述数据库执行哈希连接的方法的技术方案的描 述。 [0120] 本说明书一实施例还提供一种计算机可读存储介质,其存储有计算机指令,该指 令被处理器执行时以用于: [0121] 获取为哈希连接构建的哈希表的数据量; [0122] 通过将所述哈希表的数据量与多个探测模式分别对应的表数据量范围比较,选择 所述哈希表对应的探测模式,所述多个探测模式单次探测扫描的数据量不同; [0123] 利用选择的探测模式对哈希表执行哈希连接的探测。 [0124] 上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存 储介质的技术方案与上述的数据库执行哈希连接的方法的技术方案属于同一构思,存储介 质的技术方案未详细描述的细节内容,均可以参见上述数据库执行哈希连接的方法的技术 方案的描述。 [0125] 上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围 内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来 执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺 序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可 以的或者可能是有利的。 [0126] 所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、 对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所 述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储 器、只读存储器(ROM,Read‑Only Memory)、随机存取存储器(RAM,Random Access Memory)、 电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内 容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖 区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。 12 12 CN 113297209 A 说明书 10/10页 [0127] 需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列 的动作组合,但是本领域技术人员应该知悉,本说明书实施例并不受所描述的动作顺序的 限制,因为依据本说明书实施例,某些步骤可以采用其它顺序或者同时进行。其次,本领域 技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块 并不一定都是本说明书实施例所必须的。 [0128] 在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部 分,可以参见其它实施例的相关描述。 [0129] 以上公开的本说明书优选实施例只是用于帮助阐述本说明书。可选实施例并没有 详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书实施 例的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解 释本说明书实施例的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用 本说明书。本说明书仅受权利要求书及其全部范围和等效物的限制。 13 13 CN 113297209 A 说明书附图 1/7页 图1 图2 14 14 CN 113297209 A 说明书附图 2/7页 图3 15 15 CN 113297209 A 说明书附图 3/7页 图4 16 16 CN 113297209 A 说明书附图 4/7页 图5 17 17 CN 113297209 A 说明书附图 5/7页 图6 18 18 CN 113297209 A 说明书附图 6/7页 图7 19 19 CN 113297209 A 说明书附图 7/7页 图8 20 20

  2、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问加。

  3、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。

  4、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档

  挠性覆铜板、包括该挠性覆铜板的电子装置、及制造该挠性覆铜板的方法.pdf

  阿洛酮糖差向异构酶变体、其生产方法以及使用其生产阿洛酮糖的方法.pdf

  中金所杯全国大学生金融知识大赛题库及答案(判断题第 1 01 -500 题).doc

  中职英语基础模块2(高教版)教案:Unit3-Internship(全6课时).doc

  原创力文档创建于2008年,本站为文档C2C交易模式,即用户上传的文档直接分享给其他用户(可下载、阅读),本站只是中间服务平台,本站所有文档下载所得的收益归上传人所有。原创力文档是网络服务平台方,若您的权利被侵害,请发链接和相关诉求至 电线) ,上传者