CN117234745B - 一种面向异构计算平台的数据库负载均衡方法及装置 - Google Patents

一种面向异构计算平台的数据库负载均衡方法及装置 Download PDF

Info

Publication number
CN117234745B
CN117234745B CN202311527236.6A CN202311527236A CN117234745B CN 117234745 B CN117234745 B CN 117234745B CN 202311527236 A CN202311527236 A CN 202311527236A CN 117234745 B CN117234745 B CN 117234745B
Authority
CN
China
Prior art keywords
query
processing unit
current
bloom filter
parallel
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.)
Active
Application number
CN202311527236.6A
Other languages
English (en)
Other versions
CN117234745A (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.)
Beijing Institute of Remote Sensing Equipment
Original Assignee
Beijing Institute of Remote Sensing Equipment
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 Institute of Remote Sensing Equipment filed Critical Beijing Institute of Remote Sensing Equipment
Priority to CN202311527236.6A priority Critical patent/CN117234745B/zh
Publication of CN117234745A publication Critical patent/CN117234745A/zh
Application granted granted Critical
Publication of CN117234745B publication Critical patent/CN117234745B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本说明书提供了一种面向异构计算平台的数据库负载均衡方法及装置,涉及数据库系统控制技术领域。该方法通过创建队列结构,存储等待进入并行处理单元的查询任务;基于当前查询任务请求,结合负载均衡方法,预测出各并行处理单元查询所述当前查询任务分别所需的响应时间;根据各并行处理单元查询当前查询任务分别所需的响应时间,将响应时间较短的并行处理单元指定为当前查询任务的最优处理单元;根据布隆过滤器及布隆过滤器规则,最优处理单元响应当前查询任务请求。解决了现有负载方法仅能够进行部分负载均衡,对于负载平衡和分配、收集统计数据以定义热/冷数据方面存在不足的问题。提高了异构系统的性能,实现了无必要不延迟的负载分配。

Description

一种面向异构计算平台的数据库负载均衡方法及装置
技术领域
本文件涉及数据库系统控制技术领域,尤其涉及一种面向异构计算平台的数据库负载均衡方法及装置。
背景技术
在DBMS系统进行联机事务处理(OLAP)查询和任务时,由于其使用了不同硬件结构,这种系统异构性使得针对查询优化处理必须同时协调多个硬件或者基准套件。为联机事务处理(OLAP)查询和任务设计的数据库大部分是基于列的。目前,基于GPU的数据库,如Kinetica和OmniSci(MapD)在OLAP数据库中应用广泛。对异构的OLAP系统,有两种方法:使用不同的硬件能够进行不同的调整,但这种只依赖于硬件的方式难以创建最佳系统;使用GPU等加速器,其确实可以提高数据库性能,但由于其异构性,只能通过额外的查询优化、负载均衡来实现。
故而对于异构性的DBMS系统,使用不同的计算硬件如CPU或者GPU时,智能工作分配方法将直接影响异构系统的处理效率。通过优化算法,结合高性能的服务器端,用户可以只在客户端生成静态和/或动态查询,因此异构系统同时回答不同用户的查询,但高并发的查询过程使得执行设备承受沉重的负载。而每个处理设备具有不同的硬件规范和限制。例如,GPUs的主存储器可以是80GB,但CPUs可达到TB级;CPU中的内核数量可以是100,但GPU中的内核数量可达数千;此外,对于GPU,可以利用设备性能的线程的数量要高得多。
在针对查询特征进行优化时,查询的大小、查询所涉及的数据范围(只涉及一个列、或是需要接触到数据的所有部分)、查询过程涉及值的分布,这些关键特征直接影响多个硬件之间的协作效能。因此对于DBMS系统,查询任务分配到最强大或最快的设备并不一定产生最佳性能,应当考虑众多关键参数,协调整个硬件系统,才能获得更高的系统性效能。
通过调配上述的关键参数,处理单元之间建立良性的作业调度器或分配器,以在查询任务到达之前依据关键参数的权值判定,将每个任务分配到指定的硬件设备中进行处理,此过程被称为负载均衡。负载均衡技术分为静态的和动态两种。静态负载平衡模型将在系统运行之前,预先确定工作负载分配决策;动态负载均衡模型通过考虑系统的实时状态参数以实现负载均衡器的决策功能,可在运行中实现在处理单元(CPU/GPU)之间的工作划分。即可以基于时间戳t处存在的当前数据和状态来做出决定。
对于动态和连续的数据分析,传统的OLTP系统性能较慢。当今的先进的高性能计算硬件,如GPU,已被用作数据分析任务的加速器,这些硬件利用的是传统数据库管理系统(DBMS)上的CPU。当CPU和GPU一起使用时,由于架构异构性,即共同利用具有不同性能特性的硬件,产生了复杂的问题,需要仔细处理以优化性能。负载分配和平衡是异构体系结构下DBMS的关键问题。
现有的负载均衡技术主要在挂载了CPU和一个或多个GPU的异构系统中使用,目标常用的负载均衡方法仅能够进行部分负载均衡,但对于负载平衡和分配、收集统计数据以定义热/冷数据方面存在不足。
因此,亟需一种面向异构计算平台的数据库负载均衡方法,解决现有负载方法仅能够进行部分负载均衡,对于负载平衡和分配、收集统计数据以定义热/冷数据方面存在不足的问题。
发明内容
本说明书提供了一种面向异构计算平台的负载均衡方法及装置,用以解决现有负载方法仅能够进行部分负载均衡,对于负载平衡和分配、收集统计数据以定义热/冷数据方面存在不足的问题。
第一方面,本说明书提供了一种面向异构计算平台的负载均衡方法,包括如下步骤:
创建队列结构,存储等待进入并行处理单元的查询任务;
基于当前查询任务请求,结合预设的负载均衡算法,预测出各并行处理单元查询所述当前查询任务分别所需的响应时间;所述并行处理单元包括:GPU处理单元、CPU处理单元;
根据所述各并行处理单元查询所述当前查询任务分别所需的响应时间,将响应时间较短的并行处理单元指定为所述当前查询任务的最优处理单元;
根据预配置的布隆过滤器及布隆过滤器规则,所述最优处理单元响应所述当前查询任务请求。
第二方面,本说明书还提供了一种面向异构计算平台的负载均衡装置,包括:DBMS构建模块、负载均衡模块、CPU-GPU处理模块;其中,
所述DBMS构建模块,用于创建队列结构,存储等待进入并行处理单元的查询任务;
所述负载均衡模块,用于基于当前查询任务请求,结合预设的负载均衡算法,预测出各并行处理单元查询所述当前查询任务分别所需的响应时间;所述并行处理单元包括:GPU处理单元、CPU处理单元;根据所述各并行处理单元查询所述当前查询任务分别所需的响应时间,将响应时间较短的并行处理单元指定为所述当前查询任务的最优处理单元;
所述CPU-GPU处理模块,用于根据预配置的布隆过滤器及布隆过滤器规则,所述最优处理单元响应所述当前查询任务请求。
本实施例有益效果
本说明书提供了一种面向异构计算平台的负载均衡方法及装置,该方法通过创建队列结构,存储等待进入并行处理单元的查询任务;基于当前查询任务请求,结合负载均衡方法,预测出各并行处理单元查询所述当前查询任务分别所需的响应时间;根据各并行处理单元查询当前查询任务分别所需的响应时间,将响应时间较短的并行处理单元指定为当前查询任务的最优处理单元;根据布隆过滤器及布隆过滤器规则,最优处理单元响应当前查询任务请求。解决了现有负载方法仅能够进行部分负载均衡,对于负载平衡和分配、收集统计数据以定义热/冷数据方面存在不足的问题。该方法提出的负载均衡技术,结合了机器学习特点,使得在实际处理DBMS中的查询时,能够不断进行高效的回归模式,使得在处理多并发查询任务时,能够充分调动异构性系统中不同硬件的效能。该方法还提出了一种布隆过滤器用于数据库内存中函数管理,通过布隆过滤器提高了命中数据的效率,直接提高了存储器访问效率,减少系统的资源使用和时间消耗,避免不必要处理大量记录。该方法提高了异构系统的性能,实现了无必要不延迟的负载分配。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本说明书实施例提供的一种面向异构计算平台的负载均衡方法的示意图;
图2为本说明书实施例提供的一种面向异构计算平台的负载均衡方法流程的示意图;
图3为本说明书实施例提供的一种面向异构计算平台的负载均衡方法数据流的示意图。
图4为本说明书实施例提供的一种面向异构计算平台的负载均衡装置的示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
以下结合附图,详细说明本申请各实施例提供的技术方案。
具体实施例一
本实施例提供了一种面向异构计算平台的负载均衡方法,参见图1-图3,具体包括如下步骤:
首先,需要说明的是,本实施例提供的方法的原理为:
本实施例基于动态负载均衡方式在处理单元之间有效地分配工作负载。最佳负载平衡模型的选择取决于系统及其应用程序域。其主要调控范围在CPU和GPU(s)之间以及CPU和硬件加速器之间有效地分配工作负载方面。使用机器学习分配工作,以提高异构数据库管理系统的性能,并以最佳方式平衡设备之间的负载。本实施例采用的负载分配方法,可以有效地执行CPU和GPU上的分析查询。
具体包括如下步骤:
步骤102、构建异构数据库管理系统DBMS,采用高性能并行内核引擎,创建队列结构,存储等待进入并行处理单元的查询任务;
具体地,步骤102的一种具体实现方式可以为:
S21、自适应决定每个数据项放置位置,允许以与数据流速度相适应的速度回答查询;
S22、配置插入顺序,将时间戳作为在所有表上搜索的主索引;
S23、数据库中的记录和所述记录的字段由块号中的逻辑链接保存;
S24、相同行索引的记录保存的数据与来自同一个数据记录的不同列的列编号有同样的数量;
S25、采用高性能并行内核引擎,管理数据库中所有的函数和内核;
S26、查询结果被转换为JSON格式,并通过网络组包发送到并行内核引擎,以编译为共享对象。
进一步地,本实施例允许改善了数据局部性并减少了不必要的存储器访问。逐个相继引用同一记录的数据将在内存中保持空间上的靠近,以便在即将进行处理时,记录位于最快的内存中(首先是缓存,然后是主内存,然后是硬盘)。系统通过一个面向对象连接器来响应查询。
在DBMS中,使用了一个DBMS构建模块,该模块将当前处理单元上的负载、内存使用和其他参数考虑在内。创建一个队列结构来存储等待进入可用处理单元(CPU或GPU)的查询。当查询到达时,形成系统的当前状态的许多参数立即由负载均衡模块控制,由其决定将查询发送到队列或将其发送到何种处理单元(CPU或GPU)。
本实施例还采用一个高性能并行内核引擎,DBMS根据负载均衡和分配模块在CPU或GPU上响应客户端查询,检索查询结果并在适配器上将其转换回JSON格式,然后通过REST接口将其发送到客户端。在整个系统中,所有对象都是并行创建的,能够适用于高并发的情形,其作为指针被适配器保存,所有的系统函数都用这些对象作为传入参数调用。核心引擎通过不同的包装器将查询发送到不同的硬件,这些硬件具有用C++、Python(CPU)或CUDA(GPU)编写的函数。
基于此,在构建的DBMS中,负载均衡为采用高性能并行内核引擎提供了基础。
步骤104、基于当前查询任务请求,结合预设的负载均衡算法,预测出各并行处理单元查询所述当前查询任务分别所需的响应时间;所述并行处理单元包括:GPU处理单元、CPU处理单元;
其中,所述负载均衡算法,包括:多线性回归模型、随机森林和ADABOOST模型。
具体地,本实施例提供了一种多元线性回归模型,具体为:
(1)
其中,y表示响应时间,p1表示并行处理单元利用率百分比,p2表示并行处理单元温度,p3表示并行处理单元内存利用率,p4表示并行处理单元在当前时间戳t处的队列长度,p5表示当前在并行处理单元上运行的查询数;p6表示上一次查询与当前查询之间的时间,以秒为单位;p7表示是否为Type-1查询,如果查询类型为Type-1,则p7=1;否则,p7=0;
p8表示是否为Type-2查询,如果查询类型为Type-2,则p8=1;否则,p8=0;
其中,参数p1-p5取决于并行处理单元的特性,参数p6-p8对于两个并行处理单元是公的;表示该模型于理想化状态的误差项。
其中,所述Type-1查询关注于整个列,只对某一特定的列做出筛选;所述Type-2查询关注于单个列中的单个特定值;所述Type-3查询为组合查询,由具有不同列和值的查询组合组成。
具体示例:
本实施例设计了一个负载均衡模块,其负责在服务器上的计算硬件之间分配工作负载,以实现并行化,降低功耗和响应时间,并提高性能和效率。成功部署任务后,可以通过将等待时间保持在最低限度来缩短查询的响应时间。在DBMS中,使用了一个DBMS构建模块,该模块将当前处理单元上的负载、内存使用和其他参数考虑在内。
进一步地,本实施例提供了负载均衡方法,具体地,
对于面向异构计算平台的负载分布和平衡,查询在特定设备上的响应时间使用基于多个预测分析器的多线性回归、随机森林和ADABOOST三种算法进行建模。预测项包括查询类型、队列长度以及关于设备状态的信息。将这些预测变量,在查询到达时作为瞬时数据。确保当新查询到达时,系统可以通过使用针对每个设备训练的机器学习模型计算查询的预测响应时间并挑选具有较短预测值的设备来在设备之间进行选择。
本实施例为CPU和GPU训练了一个多元线性回归模型,其中查询的响应时间y与上面列出的变量在查询到达时的值有关,参见公式(1);
系统响应查询时,并采用面向异构计算平台的负载均衡算法进行设备选择。对于每个查询,响应时间将被作为衡量查询时间的预测值而记录到系统中。这里的响应时间定义为查询到达和完成之间的时间。
通过不断进行训练,确定系数,该模型可以在实际实现阶段中进行回归使用。给定两个设备的预测值,由/>,/>,/>,······,/>和/>,······,/>表示,预测响应时间通过下式计算:
(2)
(3)
其中,,······,/>和/>,······,/>即是多个线性函数的系数。最后,系统进行分配时选择具有较短的预测响应时间的设备。
在不同的执行设置下运行此系统,配置并预测查询限制(并发执行的查询数量)和查询到达的间隔,同时收集机器学习模型所需的数据。其执行效能将接近于理想化状态。
需要说明的是,本实施例提出的算法方法和以异构计算为基础的负载均衡器,专注于混合,CPU-GPU数据库管理系统来处理用户的查询,提出了启发式和面向异构计算平台的负载分配和平衡模型。采用多元线性回归(MLR),随机森林(RF),和Adaboost(Ada)模型来动态地决定每个传入的查询的响应时间预测的基础上的CPU和GPU的处理单元。使得应对各种回归模型的OLAP查询能够具有通用效益,其中建立的模型,能够作为负载分配和平衡的异构数据库的优选解决方案。
步骤106、根据所述各并行处理单元查询所述当前查询任务分别所需的响应时间,将响应时间较短的并行处理单元指定为所述当前查询任务的最优处理单元;
基于此,通过负载均衡算法,提出的负载均衡技术,结合了机器学习特点,使得在实际处理DBMS中的查询时,能够不断进行高效的回归模式,使得在处理多并发查询任务时,能够充分调动异构性系统中不同硬件的效能。
在执行步骤108之前,所述方法还包括:布隆过滤器配置的步骤,具体实现方式可以为:
在并行处理单元的每个块中配置布隆过滤器,其中所述布隆过滤器用于数据库内存中函数管理;
布隆指的是一种空间高效的数据结构,用于查询特定集合S中元素的成员关系;
过滤器使用大小为m比特的位向量BF[.],所有值初始均为0;
为了将元素X添加到过滤器,使用k个独立散列函数(1<i<k)来找到k比特的索引,并将它们设置为1;
插入后,对于所有1≤i≤k,有
当查询集合中元素y的存在时,使用相同的k个散列函数;
如果由散列引用的位在BF[.]中位置都是1,也就是过滤器返回肯定响应,则认为y是具有一定误报概率的传入数据流的成员;
如果由散列引用的位在BF[.]中位置都是0,也就是过滤器返回否定响应,则认为y必定不是集合S的元素。
具体示例为:
本实施例设计布隆过滤器过滤器用于数据库内存中函数管理。
当过滤器判定为“yes”时,有可能答案是错误的。但是,当答案为“no”时,y必定不是集合S的元素。
对于具有m位和k个散列函数的过滤器,当插入n个不同元素时,位等于0的概率为:
在这种情况下,即使元素不属于数据集,查询返回“yes”的误报概率为:
给定的值m,对于不同的n值,k值也随之变化,即最优的哈希函数个数是不同的。由于使用更多的控制位增加了准确性,因此使用多个散列函数有利于查询;但是,这些散列函数将更快地填充过滤器,并且由于散列冲突数量的增加而对系统处理性能产生影响。类似地,单个散列函数不会污染过滤器,但它在查询项时只信任指定单个位。对于给定值n,最佳哈希函数数量为
布隆过滤器的使用提高了存储器访问效率,减少系统的资源使用和时间消耗。DBMS中的每个块都有其布隆过滤器。如果链接到查询列的块的过滤器返回否定的响应,块中的记录将不会被处理。因此,通过布隆过滤器的检查操作,系统将避免不必要处理大量记录。使用布隆过滤器的方式不影响当前查询的结果,同时避免了处理所有块的必要性。特别是当查询相关数据项/块的数量减少时,布隆过滤器对性能的影响更加明显。
基于此,通过提出了一种布隆过滤器用于数据库内存中函数管理,通过布隆过滤器提高了命中数据的效率,直接提高了存储器访问效率,减少系统的资源使用和时间消耗,避免不必要处理大量记录。
步骤108、根据预配置的布隆过滤器及布隆过滤器规则,所述最优处理单元响应所述当前查询任务请求。
具体地,步骤108的一种具体实现方式可以为:
S81、根据预配置的布隆过滤器及布隆过滤器规则,CPU处理单元并行响应当前查询任务;其中,所述布隆过滤器规则指的是:
如果链接到查询列的块的布隆过滤器返回否定响应,则对应块中的记录将不会被处理。
具体地,S81的一种具体实现方式可以为:
数据库表中每一列被划分成连续的块,其中每个块包含固定数量值;
若所述当前查询任务为Type-2查询时,每个线程检查对应于块i的第i个过滤器;
检查查询的搜索值是否存在于每个块中,若过滤器返回否定响应,则查询的值不存在于对应的块中;
若所述当前查询任务为Type-3查询时,每个线程检查对应于块i的第i个过滤器,
如果线程得到关于查询值在至少一个数据块中的存在的否定响应,则忽略当前行集合的其余块并且移动到对应于随后行集合的下一个块集合。
具体示例:
(1)在CPU上响应查询
本实施例设计并行处理CPU查询的DBMS,使得系统能够响应许多来自多个用户的客户端查询。数据库以面向列的方式组织数据。也就是说,每一列被划分成连续的块,其中每个块包含固定数量值。由于Type-1查询遍历指定列上的所有数据,因此Bloom筛选器对此查询类型没有用处。在响应查询的过程中,Bloom过滤器用于检查查询的搜索值是否存在于每个块中。在Type-2查询中,每个线程检查对应于块i的第i个过滤器。如果过滤器返回“no”,则查询的值不存在于对应的块中。因此,该块被跳过而不处理内部的1024个值。
在响应Type-3查询时,使用对Type-2查询的相同过程。但是,查询的列与AND操作组合在一起。因此,如果线程得到关于查询值在至少一个数据块中的存在的“no”,则其忽略当前行集合的其余块并且移动到对应于随后行集合的下一个块集合。在对应的块中至少不存在一个查询值,使得检查其余的值变得毫无意义。因此,布隆过滤器节省了大量的处理时间并减少了存储器访问的次数。
S82、根据预配置的布隆过滤器及布隆过滤器规则,GPU处理单元并行响应当前查询任务。其中,所述布隆过滤器规则指的是:
如果链接到查询列的块的布隆过滤器返回否定响应,则对应块中的记录将不会被处理。
具体地,S82的一种具体实现方式可以为:
在GPU响应Type-2查询过程时,GPU内核开始处理查询,仅将携带查询列的记录的数据块复制到GPU,以保存更多内存用于正在并行处理的不同列上的其他客户端查询;
分配给查询的GPU线程的数量基于列的数量来调整,即随着查询范围涉及的列数目增多,分配的线程块也相应增多;
在GPU上,当具有多个列的查询被发送以被处理时,DBMS使用并行的线程与对应的布隆过滤器进行检查;
如果当前数据块的过滤器中有一个返回否定响应,则分配的线程将跳过搜索并移动到下一个数据块。
具体示例:
(2)在GPU上回答查询
在GPU响应Type-2查询过程时,GPU内核开始处理查询,并且仅将携带查询列的记录的数据块复制到GPU,以保存更多内存用于正在并行处理的不同列上的其他客户端查询。分配给查询的GPU线程的数量基于列的数量来调整。即随着查询范围涉及的列数目增多,分配的线程块也相应增多。这是由于在SQL查询中,列数对结果约束产生的影响是线性的,超出列数影响范围的线程块分配并没有意义。在此方法下,要检查的行数对于每个线程都是数量级的。因此,对于涉及一定列数量的查询,分配等量级的线程数量即可,可以分配剩余的线程来响应并行处理的其他客户端查询。
在GPU上,当具有多个列的查询被发送以被处理时,首先,DBMS使用并行的线程与对应的布隆过滤器进行检查。对于CPU,如果这些过滤器中有一个返回“no”,则分配的线程将跳过搜索并移动到下一个数据块。
基于此,可以有效地执行CPU和GPU上的分析查询。
综上所述,本实施例通过创建队列结构,存储等待进入并行处理单元的查询任务;基于当前查询任务请求,结合负载均衡方法,预测出各并行处理单元查询所述当前查询任务分别所需的响应时间;根据各并行处理单元查询当前查询任务分别所需的响应时间,将响应时间较短的并行处理单元指定为当前查询任务的最优处理单元;根据布隆过滤器及布隆过滤器规则,最优处理单元响应当前查询任务请求。解决了现有负载方法仅能够进行部分负载均衡,对于负载平衡和分配、收集统计数据以定义热/冷数据方面存在不足的问题。该方法提出的负载均衡技术,结合了机器学习特点,使得在实际处理DBMS中的查询时,能够不断进行高效的回归模式,使得在处理多并发查询任务时,能够充分调动异构性系统中不同硬件的效能。该方法还提出了一种布隆过滤器用于数据库内存中函数管理,通过布隆过滤器提高了命中数据的效率,直接提高了存储器访问效率,减少系统的资源使用和时间消耗,避免不必要处理大量记录。该方法提高了异构系统的性能,实现了无必要不延迟的负载分配。
具体实施例二
本实施例还提供了一个面向异构计算平台的负载均衡方法,具体流程参见图2、图3;
首先,需要说明的是,本实施例设计了一个DBMS,对其进行了配置;并且设计了一个布隆过滤器,其对查询响应时间有显著影响,减少了不必要的内存访问,使其处在一个较小的错误容限;之后设计了一个负载分配和平衡模块,并构建了一系列算法和模型。
1.异构数据库管理系统(DBMS)
本实施例设计和实现的系统能够处理大量和快速的数据流。为解决负载均衡和分配,以及在采集数据的过程中识别冷/热数据,本实施例实现了一个DBMS,自动决定每个数据项放置位置,并通过面向异构计算平台的负载分配和平衡机制,允许以与数据流速度相适应的速度回答查询。其使用插入顺序,即时间戳作为在所有表上搜索的主索引。数据库中的记录和该记录的字段由块号中的逻辑链接保存。并且规定,相同行索引的记录(并排块)保存的数据与来自同一个数据记录的不同列的列编号有同样的数量。该方案允许改善了数据局部性并减少了不必要的存储器访问。逐个相继引用同一记录的数据将在内存中保持空间上的靠近,以便在即将进行处理时,记录位于最快的内存中(首先是缓存,然后是主内存,然后是硬盘)。系统通过一个面向对象连接器来响应查询。
本实施例采用一个高性能并行内核引擎,管理数据库中所有的函数和内核,调用时从该并行内核引擎中调用。查询被转换为JSON,并通过网络组包(包装器)发送到并行内核引擎,以编译为共享对象。DBMS根据负载均衡和分配模块在CPU或GPU上响应客户端查询,检索查询结果并在适配器上将其转换回JSON格式,然后通过REST接口将其发送到客户端。在整个系统中,所有对象都是并行创建的,能够适用于高并发的情形,其作为指针被适配器保存,所有的系统函数都用这些对象作为传入参数调用。核心引擎通过不同的包装器将查询发送到不同的硬件,这些硬件具有用C++、Python(CPU)或CUDA(GPU)编写的函数。
2.布隆过滤器
本实施例设计布隆过滤器过滤器用于数据库内存中函数管理。布隆是一种空间高效的数据结构,其用于查询特定集合S中元素的成员关系。过滤器使用大小为m比特的位向量BF[.],所有值初始均为0。为了将元素X添加到过滤器,使用k个独立散列函数(1<i<k)来找到k比特的索引/>并将它们设置为1。插入后,对于所有1≤i≤k,有。当查询集合中元素y的存在时,使用相同的k个散列函数。如果由散列/>引用的位在BF[.]中位置都是1,则认为y是具有一定误报概率的传入数据流(或用于创建过滤器的数据集)的成员。也就是说,当过滤器判定为“yes”时,有可能答案是错误的。但是,当答案为“no”时,y必定不是集合S的元素。
对于具有m位和k个散列函数的过滤器,当插入n个不同元素时,位等于0的概率为:
在这种情况下,即使元素不属于数据集,查询返回“yes”的误报概率为:
给定的值m,对于不同的n值,k值也随之变化,即最优的哈希函数个数是不同的。由于使用更多的控制位增加了准确性,因此使用多个散列函数有利于查询;但是,这些散列函数将更快地填充过滤器,并且由于散列冲突数量的增加而对系统处理性能产生影响。类似地,单个散列函数不会污染过滤器,但它在查询项时只信任指定单个位。对于给定值n,最佳哈希函数数量为
布隆过滤器的使用提高了存储器访问效率,减少系统的资源使用和时间消耗。DBMS中的每个块都有其布隆过滤器。如果链接到查询列的块的过滤器返回否定的响应,块中的记录将不会被处理。因此,通过布隆过滤器的检查操作,系统将避免不必要处理大量记录。使用布隆过滤器的方式不影响当前查询的结果,同时避免了处理所有块的必要性。特别是当查询相关数据项/块的数量减少时,布隆过滤器对性能的影响更加明显。
3.查询响应方法
本实施例将查询分为三类,以更好地处理架构差异,并获得更清晰和更真实的结果:
(1)Type-1查询关注于整个列,而不针对特定值。在查询的过程中,只对某一特定的列做出筛选,例如SQL中的count、max等函数。
(2)Type-2查询关注于单个列中的单个特定值。例如SQL中对单条记录中的指定列的值进行约束查询。
(3)Type-3查询是复杂查询,由具有不同列和值的查询组合组成,即
例如在查询的过程中通过多个附加约束,整合单个表中的多列的约束,或者是多表范围的聚合查询。
基于查询的分类,根据设备的不同,本实施例对不同设备上响应查询的过程为:
(1)在CPU上响应查询
本实施例设计并行处理CPU查询的DBMS,使得系统能够响应许多来自多个用户的客户端查询。数据库以面向列的方式组织数据。也就是说,每一列被划分成连续的块,其中每个块包含固定数量值。由于Type-1查询遍历指定列上的所有数据,因此Bloom筛选器对此查询类型没有用处。在响应查询的过程中,Bloom过滤器用于检查查询的搜索值是否存在于每个块中。在Type-2查询中,每个线程检查对应于块i的第i个过滤器。如果过滤器返回“no”,则查询的值不存在于对应的块中。因此,该块被跳过而不处理内部的1024个值。
在响应Type-3查询时,使用对Type-2查询的相同过程。但是,查询的列与AND操作组合在一起。因此,如果线程得到关于查询值在至少一个数据块中的存在的“no”,则其忽略当前行集合的其余块并且移动到对应于随后行集合的下一个块集合。在对应的块中至少不存在一个查询值,使得检查其余的值变得毫无意义。因此,布隆过滤器节省了大量的处理时间并减少了存储器访问的次数。
(2)在GPU上回答查询
在GPU响应Type-2查询过程时,GPU内核开始处理查询,并且仅将携带查询列的记录的数据块复制到GPU,以保存更多内存用于正在并行处理的不同列上的其他客户端查询。分配给查询的GPU线程的数量基于列的数量来调整。即随着查询范围涉及的列数目增多,分配的线程块也相应增多。这是由于在SQL查询中,列数对结果约束产生的影响是线性的,超出列数影响范围的线程块分配并没有意义。在此方法下,要检查的行数对于每个线程都是数量级的。因此,对于涉及一定列数量的查询,分配等量级的线程数量即可,可以分配剩余的线程来响应并行处理的其他客户端查询。
在GPU上,当具有多个列的查询被发送以被处理时,首先,DBMS使用并行的线程与对应的布隆过滤器进行检查。对于CPU,如果这些过滤器中有一个返回“no”,则分配的线程将跳过搜索并移动到下一个数据块。
4.负载均衡模块
本实施例设计了一个负载均衡模块,其负责在服务器上的计算硬件之间分配工作负载,以实现并行化,降低功耗和响应时间,并提高性能和效率。成功部署任务后,可以通过将等待时间保持在最低限度来缩短查询的响应时间。在DBMS中,使用了一个DBMS构建模块,该模块将当前处理单元上的负载、内存使用和其他参数考虑在内。创建一个队列结构来存储等待进入可用处理单元(CPU或GPU)的查询。
当查询到达时,形成系统的当前状态的许多参数立即由负载均衡模块控制,由其决定将查询发送到队列或将其发送到何种处理单元(CPU或GPU)。本实施例提供了四种不同的工作分配方法。包括一种随机工作负载方法;实现了两种不同的启发式方法,在调用负载平衡器模块时使用工作负载较少(利用率)的处理单元;以及面向异构计算平台的负载均衡方法。
(1)随机工作负载分布
其中随机地做出将查询定向到CPU和GPU的队列的决定,而不管查询类型、平均查询响应时间或即时设备状态如何,这个基本策略实现的是对任务的平均分配。
(2)基本负载均衡器算法
其使用三个值:CPU使用率百分比cpu_util、GPU使用率百分比gpu_util和平均响应当前查询类型更快的设备dev,在每个步骤中计算一些值以进行决策。参数信息是从之前的查询执行记录进行推断。对于传入的查询,计算所有查询中CPU的平均响应时间,并与GPU的平均响应时间进行比较。平均时间较低的设备将被选为dev参数。在此过程中,随着数据库回答新的查询并记录结果,设备的平均响应时间会定期更新。该算法具有以下逻辑结构,用于决定分配当前查询的设备:如果CPU和GPU的利用率百分比之差大于预定义的阈值,则算法相应地选择具有较低工作负载的设备。在工作负载利用率百分比相同的情况下,算法选择随机设备。但是当系统处于轻微负载下时,很可能具有相同的利用率百分比,从而导致两个设备的利用率接近于为0%。如果在利用率之间没有显著差异,则该算法基于先前记录的结果为目前查询类型选择最快的设备。如果CPU和GPU使用百分比在基本负载均衡器算法中相等,则该方法在CPU和GPU之间随机选择设备来回答查询,而不考虑设备的当前状态。
(3)随机负载均衡器算法
通过随机性和查询的分布特点进行整合计算以提高性能。在CPU和GPU的使用百分比相等的情况下,该试探法根据查询的类型来选择查询的执行设备。GPU为Type-1查询提供更快的结果,而CPU为Type-2和Tpye-3查询提供更快的结果。因此,当使用随机负载均衡器算法时,与基本负载均衡器算法相比,这种具有预期特点的启发式算法会产生性能提升。
(4)面向异构计算平台的负载均衡
对于面向异构计算平台的负载分布和平衡,查询在特定设备上的响应时间使用基于多个预测分析器的多线性回归、随机森林和ADABOOST三种算法进行建模。预测项包括查询类型、队列长度以及关于设备状态的信息。将这些预测变量,在查询到达时作为瞬时数据。确保当新查询到达时,系统可以通过使用针对每个设备训练的机器学习模型计算查询的预测响应时间并挑选具有较短预测值的设备来在设备之间进行选择。以下是分别为CPU和GPU收集数据的变量:
p1:设备利用率百分比
p2:设备温度
p3:设备内存利用率
p4:设备在当前时间戳t处的队列长度
p5:当前在设备上运行的查询数
p6:上一次查询与当前查询之间的时间,以秒为单位
p7:是否为Type-1查询,如果查询类型为Type-1,则p7=1;否则,p7=0;
p8:是否为Type-2查询,如果查询类型为Type-2,则p8=1;否则,p8=0;
虽然变量p1,...,p5取决于设备特性,但是其余变量与查询有关并且对于两个设备是公共的。本实施例为CPU和GPU训练了一个多元线性回归模型,其中查询的响应时间y与上面列出的变量在查询到达时的值有关,参见公式(1)。系统响应查询时,并采用面向异构计算平台的负载均衡算法进行设备选择。对于每个查询,响应时间将被作为衡量查询时间的预测值而记录到系统中。这里的响应时间定义为查询到达和完成之间的时间。
通过不断进行训练,确定系数,该模型可以在实际实现阶段中进行回归使用。给定两个设备的预测值,由/>,/>,/>,······,/>和/>,······,/>表示,预测响应时间通过下式计算:
(2)
(3)
其中,,······,/>和/>,······,/>即是多个线性函数的系数。最后,系统进行分配时选择具有较短的预测响应时间的设备。
在不同的执行设置下运行此系统,配置并预测查询限制(并发执行的查询数量)和查询到达的间隔,同时收集机器学习模型所需的数据。其执行效能将接近于理想化状态。
综上所述,本实施例通过创建队列结构,存储等待进入并行处理单元的查询任务;基于当前查询任务请求,结合负载均衡方法,预测出各并行处理单元查询所述当前查询任务分别所需的响应时间;根据各并行处理单元查询当前查询任务分别所需的响应时间,将响应时间较短的并行处理单元指定为当前查询任务的最优处理单元;根据布隆过滤器及布隆过滤器规则,最优处理单元响应当前查询任务请求。解决了现有负载方法仅能够进行部分负载均衡,对于负载平衡和分配、收集统计数据以定义热/冷数据方面存在不足的问题。该方法提出的负载均衡技术,结合了机器学习特点,使得在实际处理DBMS中的查询时,能够不断进行高效的回归模式,使得在处理多并发查询任务时,能够充分调动异构性系统中不同硬件的效能。该方法还提出了一种布隆过滤器用于数据库内存中函数管理,通过布隆过滤器提高了命中数据的效率,直接提高了存储器访问效率,减少系统的资源使用和时间消耗,避免不必要处理大量记录。该方法提高了异构系统的性能,实现了无必要不延迟的负载分配。
具体实施例三
本实施例还提供了一种面向异构计算平台的负载均衡装置,参见图4,包括:DBMS构建模块401、负载均衡模块402、CPU-GPU处理模块;其中,所述CPU-GPU处理模块包括:CPU处理模块403、GPU处理模块404;其中,
所述DBMS构建模块401,用于创建队列结构,存储等待进入并行处理单元的查询任务;
所述负载均衡模块402,用于基于当前查询任务请求,结合预设的负载均衡算法,预测出各并行处理单元查询所述当前查询任务分别所需的响应时间;所述并行处理单元包括:GPU处理单元、CPU处理单元;根据所述各并行处理单元查询所述当前查询任务分别所需的响应时间,将响应时间较短的并行处理单元指定为所述当前查询任务的最优处理单元;
所述CPU-GPU处理模块,用于根据预配置的布隆过滤器及布隆过滤器规则,所述最优处理单元响应所述当前查询任务请求。
可选的,所述DBMS构建模块401,具体用于:
自适应决定每个数据项放置位置,允许以与数据流速度相适应的速度回答查询;
配置插入顺序,将时间戳作为在所有表上搜索的主索引;
数据库中的记录和所述记录的字段由块号中的逻辑链接保存;
相同行索引的记录保存的数据与来自同一个数据记录的不同列的列编号有同样的数量;
采用高性能并行内核引擎,管理数据库中所有的函数和内核;
查询结果被转换为JSON格式,并通过网络组包发送到并行内核引擎,以编译为共享对象。
可选的,所述装置还包括:布隆过滤器配置模块,其中:
所述布隆过滤器配置模块,用于:
在并行处理单元的每个块中配置布隆过滤器,其中所述布隆过滤器用于数据库内存中函数管理;
布隆指的是一种空间高效的数据结构,用于查询特定集合S中元素的成员关系;
过滤器使用大小为m比特的位向量BF[.],所有值初始均为0;
为了将元素X添加到过滤器,使用k个独立散列函数(1<i<k)来找到k比特的索引并将它们设置为1;
插入后,对于所有1≤i≤k,有
当查询集合中元素y的存在时,使用相同的k个散列函数;
如果由散列引用的位在BF[.]中位置都是1,也就是过滤器返回肯定响应,则认为y是具有一定误报概率的传入数据流的成员;
如果由散列引用的位在BF[.]中位置都是0,也就是过滤器返回否定响应,则认为y必定不是集合S的元素。
可选的,所述CPU-GPU处理模块,包括:CPU处理模块403、GPU处理模块404,其中:
所述CPU处理模块403,用于根据预配置的布隆过滤器及布隆过滤器规则,CPU处理单元并行响应当前查询任务;
所述GPU处理模块404,用于根据预配置的布隆过滤器及布隆过滤器规则,GPU处理单元并行响应当前查询任务。
可选的,所述CPU处理模块403,具体用于:
CPU处理单元中每一列被划分成连续的块,其中每个块包含固定数量值;
若所述当前查询任务为Type-2查询时,每个线程检查对应于块i的第i个过滤器;
检查查询的搜索值是否存在于每个块中,若过滤器返回否定响应,则查询的值不存在于对应的块中;
若所述当前查询任务为Type-3查询时,每个线程检查对应于块i的第i个过滤器,
如果线程得到关于查询值在至少一个数据块中的存在的否定响应,则忽略当前行集合的其余块并且移动到对应于随后行集合的下一个块集合。
可选的,所述GPU处理模块404,具体用于:
在GPU响应Type-2查询过程时,GPU内核开始处理查询,仅将携带查询列的记录的数据块复制到GPU,以保存更多内存用于正在并行处理的不同列上的其他客户端查询;
分配给查询的GPU线程的数量基于列的数量来调整;即随着查询范围涉及的列数目增多,分配的线程块也相应增多;
在GPU上,当具有多个列的查询被发送以被处理时,DBMS使用并行的线程与对应的布隆过滤器进行检查;
如果当前数据块的过滤器中有一个返回否定响应,则分配的线程将跳过搜索并移动到下一个数据块。
可选的,所述布隆过滤器规则指的是:
如果链接到查询列的块的布隆过滤器返回否定响应,则对应块中的记录将不会被处理。
可选的,所述负载均衡算法,包括:多线性回归模型、随机森林和ADABOOST模型。
其中,所述多元线性回归模型,包括:
(1)
其中,y表示响应时间,p1表示并行处理单元利用率百分比,p2表示并行处理单元温度,p3表示并行处理单元内存利用率,p4表示并行处理单元在当前时间戳t处的队列长度,p5表示当前在并行处理单元上运行的查询数;p6表示上一次查询与当前查询之间的时间,以秒为单位;p7表示是否为Type-1查询,如果查询类型为Type-1,则p7=1;否则,p7=0;
p8表示是否为Type-2查询,如果查询类型为Type-2,则p8=1;否则,p8=0;
其中,参数p1-p5取决于并行处理单元的特性,参数p6-p8对于两个并行处理单元是公的;表示该模型于理想化状态的误差项。
可选的,所述Type-1查询关注于整个列,只对某一特定的列做出筛选;所述Type-2查询关注于单个列中的单个特定值;所述Type-3查询为组合查询,由具有不同列和值的查询组合组成。
综上所述,本实施例通过创建队列结构,存储等待进入并行处理单元的查询任务;基于当前查询任务请求,结合负载均衡方法,预测出各并行处理单元查询所述当前查询任务分别所需的响应时间;根据各并行处理单元查询当前查询任务分别所需的响应时间,将响应时间较短的并行处理单元指定为当前查询任务的最优处理单元;根据布隆过滤器及布隆过滤器规则,最优处理单元响应当前查询任务请求。解决了现有负载方法仅能够进行部分负载均衡,对于负载平衡和分配、收集统计数据以定义热/冷数据方面存在不足的问题。该方法提出的负载均衡技术,结合了机器学习特点,使得在实际处理DBMS中的查询时,能够不断进行高效的回归模式,使得在处理多并发查询任务时,能够充分调动异构性系统中不同硬件的效能。该方法还提出了一种布隆过滤器用于数据库内存中函数管理,通过布隆过滤器提高了命中数据的效率,直接提高了存储器访问效率,减少系统的资源使用和时间消耗,避免不必要处理大量记录。该方法提高了异构系统的性能,实现了无必要不延迟的负载分配。
本领域内的技术人员应明白,本实施例的实施例可提供为方法、系统、或计算机程序产品。因此,本实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本实施例是参照根据本实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器 (CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器 (RAM) 和/或非易失性内存等形式,如只读存储器 (ROM) 或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存 (PRAM)、静态随机存取存储器 (SRAM)、动态随机存取存储器 (DRAM)、其他类型的随机存取存储器 (RAM)、只读存储器 (ROM)、电可擦除可编程只读存储器 (EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘 (DVD) 或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体 (transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (7)

1.一种面向异构计算平台的负载均衡方法,其特征在于,
构建异构数据库管理系统DBMS,采用高性能并行内核引擎,创建队列结构,存储等待进入并行处理单元的查询任务;
基于当前查询任务请求,结合预设的负载均衡算法,预测出各并行处理单元查询所述当前查询任务分别所需的响应时间;所述并行处理单元包括:GPU处理单元、CPU处理单元;
根据所述各并行处理单元查询所述当前查询任务分别所需的响应时间,将响应时间较短的并行处理单元指定为所述当前查询任务的最优处理单元;
根据预配置的布隆过滤器及布隆过滤器规则,所述最优处理单元响应所述当前查询任务请求;
其中,在所述根据预配置的布隆过滤器,所述最优处理单元响应所述当前查询任务请求之前,所述方法还包括:
在并行处理单元的每个块中配置布隆过滤器,其中所述布隆过滤器用于数据库内存中函数管理;
布隆指的是一种空间高效的数据结构,用于查询特定集合S中元素的成员关系;
过滤器使用大小为m比特的位向量BF[.],所有值初始均为0;
为了将元素X添加到过滤器,使用k个独立散列函数ht(1<i<k)来找到k比特的索引(k∈[1,m])并将它们设置为1;
插入后,对于所有1≤i≤k,有BF[hi]=1;
当查询集合中元素y的存在时,使用相同的k个散列函数;其中最佳哈希函数数量为
如果由散列hi(y)引用的位在BF[.]中位置都是1,也就是过滤器返回肯定响应,则认为y是具有一定误报概率的传入数据流的成员;
如果由散列hi(y)引用的位在BF[.]中位置都是0,也就是过滤器返回否定响应,则认为y必定不是集合S的元素;
其中,所述根据预配置的布隆过滤器,所述最优处理单元响应所述当前查询任务请求,包括:
根据预配置的布隆过滤器及布隆过滤器规则,CPU处理单元并行响应当前查询任务;
根据预配置的布隆过滤器及布隆过滤器规则,GPU处理单元并行响应当前查询任务;
其中,所述根据预配置的布隆过滤器及布隆过滤器规则,CPU处理单元并行响应当前查询任务,包括:
数据库表中每一列被划分成连续的块,其中每个块包含固定数量值;
若所述当前查询任务为Type-2查询时,每个线程检查对应于块i的第i个过滤器;
检查查询的搜索值是否存在于每个块中,若过滤器返回否定响应,则查询的值不存在于对应的块中;
若所述当前查询任务为Type-3查询时,每个线程检查对应于块i的第i个过滤器,
如果线程得到关于查询值在至少一个数据块中的存在的否定响应,则忽略当前行集合的其余块并且移动到对应于随后行集合的下一个块集合。
2.根据权利要求1所述的方法,其特征在于,所述构建异构数据库管理系统DBMS,采用高性能并行内核引擎,创建队列结构,存储等待进入并行处理单元的查询任务,包括:
自适应决定每个数据项放置位置,允许以与数据流速度相适应的速度回答查询;
配置插入顺序,将时间戳作为在所有表上搜索的主索引;
数据库中的记录和所述记录的字段由块号中的逻辑链接保存;
相同行索引的记录保存的数据与来自同一个数据记录的不同列的列编号有同样的数量;
采用高性能并行内核引擎,管理数据库中所有的函数和内核;
查询结果被转换为JSON格式,并通过网络组包发送到并行内核引擎,以编译为共享对象。
3.根据权利要求1所述的方法,其特征在于,所述根据预配置的布隆过滤器及布隆过滤器规则,GPU处理单元并行响应当前查询任务,包括:
在GPU响应Type-2查询过程时,GPU内核开始处理查询,仅将携带查询列的记录的数据块复制到GPU,以保存更多内存用于正在并行处理的不同列上的其他客户端查询;
分配给查询的GPU线程的数量基于列的数量来调整,即随着查询范围涉及的列数目增多,分配的线程块也相应增多;
在GPU上,当具有多个列的查询被发送以被处理时,DBMS使用并行的线程与对应的布隆过滤器进行检查;
如果当前数据块的过滤器中有一个返回否定响应,则分配的线程将跳过搜索并移动到下一个数据块。
4.根据权利要求1所述的方法,其特征在于,所述布隆过滤器规则指的是:
如果链接到查询列的块的布隆过滤器返回否定响应,则对应块中的记录将不会被处理。
5.根据权利要求1所述的方法,其特征在于,所述负载均衡算法,包括:多元线性回归模型、随机森林和ADABOOST模型;
其中所述多元线性回归模型,包括:
其中,y表示响应时间,p1表示并行处理单元利用率百分比,p2表示并行处理单元温度,p3表示并行处理单元内存利用率,p4表示并行处理单元在当前时间戳t处的队列长度,p5表示当前在并行处理单元上运行的查询数;p6表示上一次查询与当前查询之间的时间,以秒为单位;p7表示是否为Type-1查询,如果查询类型为Type-1,则p7=1;否则,p7=0;
p8表示是否为Type-2查询,如果查询类型为Type-2,则p8=1;否则,p8=0;
其中,参数p1-p5取决于并行处理单元的特性,参数p6-p8对于两个并行处理单元是公用的;ε表示该模型于理想化状态的误差项。
6.根据权利要求5所述的方法,其特征在于,所述Type-1查询关注于整个列,只对某一特定的列做出筛选;所述Type-2查询关注于单个列中的单个特定值;所述Type-3查询为组合查询,由具有不同列和值的查询组合组成。
7.一种面向异构计算平台的负载均衡装置,应用于上述权利要求1至6任一项所述的方法,其特征在于,包括:DBMS构建模块、负载均衡模块、所述CPU-GPU处理模块;其中,
所述DBMS构建模块,用于构建异构数据库管理系统DBMS,采用高性能并行内核引擎,创建队列结构,存储等待进入并行处理单元的查询任务;
所述负载均衡模块,用于基于当前查询任务请求,结合预设的负载均衡算法,预测出各并行处理单元查询所述当前查询任务分别所需的响应时间;所述并行处理单元包括:GPU处理单元、CPU处理单元;根据所述各并行处理单元查询所述当前查询任务分别所需的响应时间,将响应时间较短的并行处理单元指定为所述当前查询任务的最优处理单元;
所述CPU-GPU处理模块,用于根据预配置的布隆过滤器及布隆过滤器规则,所述最优处理单元响应所述当前查询任务请求;
所述装置还包括:布隆过滤器配置模块,其中所述布隆过滤器配置模块,用于:
在并行处理单元的每个块中配置布隆过滤器,其中所述布隆过滤器用于数据库内存中函数管理;
布隆指的是一种空间高效的数据结构,用于查询特定集合S中元素的成员关系;
过滤器使用大小为m比特的位向量BF[.],所有值初始均为0;
为了将元素X添加到过滤器,使用k个独立散列函数hi(1<i<k)来找到k比特的索引(k∈[1,m])并将它们设置为1;
插入后,对于所有1≤i≤k,有BF[ht]=1;
当查询集合中元素y的存在时,使用相同的k个散列函数;其中最佳哈希函数数量为
如果由散列hi(y)引用的位在BF[.]中位置都是1,也就是过滤器返回肯定响应,则认为y是具有一定误报概率的传入数据流的成员;
如果由散列hi(y)引用的位在BF[.]中位置都是0,也就是过滤器返回否定响应,则认为y必定不是集合S的元素;
其中所述CPU-GPU处理模块,包括CPU处理模块、GPU处理模块,其中:
所述CPU处理模块,用于根据预配置的布隆过滤器及布隆过滤器规则,CPU处理单元并行响应当前查询任务;
所述GPU处理模块,用于根据预配置的布隆过滤器及布隆过滤器规则,GPU处理单元并行响应当前查询任务;
所述CPU处理模块,具体用于:
数据库表中每一列被划分成连续的块,其中每个块包含固定数量值;
若所述当前查询任务为Type-2查询时,每个线程检查对应于块i的第i个过滤器;
检查查询的搜索值是否存在于每个块中,若过滤器返回否定响应,则查询的值不存在于对应的块中;
若所述当前查询任务为Type-3查询时,每个线程检查对应于块i的第i个过滤器,
如果线程得到关于查询值在至少一个数据块中的存在的否定响应,则忽略当前行集合的其余块并且移动到对应于随后行集合的下一个块集合。
CN202311527236.6A 2023-11-16 2023-11-16 一种面向异构计算平台的数据库负载均衡方法及装置 Active CN117234745B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311527236.6A CN117234745B (zh) 2023-11-16 2023-11-16 一种面向异构计算平台的数据库负载均衡方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311527236.6A CN117234745B (zh) 2023-11-16 2023-11-16 一种面向异构计算平台的数据库负载均衡方法及装置

Publications (2)

Publication Number Publication Date
CN117234745A CN117234745A (zh) 2023-12-15
CN117234745B true CN117234745B (zh) 2024-03-29

Family

ID=89084805

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311527236.6A Active CN117234745B (zh) 2023-11-16 2023-11-16 一种面向异构计算平台的数据库负载均衡方法及装置

Country Status (1)

Country Link
CN (1) CN117234745B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104899007A (zh) * 2015-06-15 2015-09-09 华中科技大学 利用Xeon Phi协处理器提升布隆滤波器处理性能的系统及方法
CN108089816A (zh) * 2017-11-14 2018-05-29 西北工业大学 一种基于负载均衡的查询式重复数据删除方法及装置
CN116010447A (zh) * 2022-12-26 2023-04-25 中电信数智科技有限公司 一种优化异构数据库用户查询的负载均衡方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190065258A1 (en) * 2017-08-30 2019-02-28 ScalArc Inc. Automatic Provisioning of Load Balancing as Part of Database as a Service

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104899007A (zh) * 2015-06-15 2015-09-09 华中科技大学 利用Xeon Phi协处理器提升布隆滤波器处理性能的系统及方法
CN108089816A (zh) * 2017-11-14 2018-05-29 西北工业大学 一种基于负载均衡的查询式重复数据删除方法及装置
CN116010447A (zh) * 2022-12-26 2023-04-25 中电信数智科技有限公司 一种优化异构数据库用户查询的负载均衡方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
多检测引擎监测的动态负载均衡算法;杨忠明;梁本来;秦勇;蔡昭权;;计算机应用(03);全文 *

Also Published As

Publication number Publication date
CN117234745A (zh) 2023-12-15

Similar Documents

Publication Publication Date Title
KR102011671B1 (ko) 이종 계산 장치 기반의 질의 처리 방법 및 장치
US8090710B2 (en) Index maintenance in a multi-node database
US8046354B2 (en) Method and apparatus for re-evaluating execution strategy for a database query
US8195642B2 (en) Partial indexes for multi-node database
CN103345514A (zh) 大数据环境下的流式数据处理方法
WO2015149885A1 (en) Method for querying and updating entries in a data base
EP2962226A1 (en) System and method for distributed sql join processing in shared-nothing relational database clusters using stationary tables
CN107329814A (zh) 一种基于rdma的分布式内存数据库查询引擎系统
CN109240946A (zh) 数据的多级缓存方法及终端设备
CN113821311A (zh) 任务执行方法及存储设备
US9110947B1 (en) Column-oriented task execution in a row-partitioned database system
CN109196807B (zh) 网络节点以及操作网络节点以进行资源分发的方法
US20240078235A1 (en) Task-execution planning using machine learning
CN105975345A (zh) 一种基于分布式内存的视频帧数据动态均衡存储管理方法
US11645281B1 (en) Caching query plans in database systems
CN110275681A (zh) 一种数据存储方法及数据存储系统
US11880364B2 (en) Predictive resource allocation for distributed query execution
Abdennebi et al. Machine learning‐based load distribution and balancing in heterogeneous database management systems
CN114020779A (zh) 自适应优化检索性能数据库及数据查询方法
CN110209693A (zh) 高并发数据查询方法、装置、系统、设备及可读存储介质
Wang et al. An Improved Memory Cache Management Study Based on Spark.
Wang et al. Adaptive time, monetary cost aware query optimization on cloud database systems
CN117234745B (zh) 一种面向异构计算平台的数据库负载均衡方法及装置
CN107346342A (zh) 一种基于存储计算的文件调用方法与系统
US20130013824A1 (en) Parallel aggregation system

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
GR01 Patent grant
GR01 Patent grant