CN103309958B - Gpu和cpu混合架构下的olap星型连接查询优化方法 - Google Patents
Gpu和cpu混合架构下的olap星型连接查询优化方法 Download PDFInfo
- Publication number
- CN103309958B CN103309958B CN201310204514.4A CN201310204514A CN103309958B CN 103309958 B CN103309958 B CN 103309958B CN 201310204514 A CN201310204514 A CN 201310204514A CN 103309958 B CN103309958 B CN 103309958B
- Authority
- CN
- China
- Prior art keywords
- bitmap
- gpu
- star
- connection
- olap
- 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
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种GPU和CPU混合架构下的OLAP星型连接查询优化方法,包括如下步骤:首先通过位图连接索引过滤优化OLAP星型连接操作,在GPU缓存中缓存高频访问的连接位图;其次,将满足连接位图过滤条件的事实表外键属性组加载到GPU缓存中进行星型连接过滤;最后,通过GPU所生成的过滤位图将内存大事实表的全表扫描转换为按位置随机访问,从而提高OLAP星型连接的查询处理性能。本发明提高了GPU缓存的存储效率和GPU的并行处理效率,从整体上提高混合处理器平台的OLAP查询处理性能。
Description
技术领域
本发明涉及一种数据仓库查询处理方法,尤其涉及一种在GPU和CPU混合架构下,将通用GPU作为连接位图存储和处理引擎,从而优化复杂多维查询处理的方法,属于数据库管理技术领域。
背景技术
当前,微处理器技术主要分为两个发展趋势:一是多核通用处理器技术,另一种类型是众核协处理器技术。多核通用处理器以Intel的多核处理器技术为代表,主要特征是数量较少的处理核心和多级缓存(cache)。众核协处理器主要以NVIDIA公司的通用GPU(GeneralPurposeGraphicsProcessingUnit,简写为GPGPU)和Intel公司的至强融核TM协处理器为代表。从当前和未来的发展趋势来看,众核协处理器已经成为高性能计算的基础平台。
相对于多核CPU,通用GPU的并行计算能力强但数据管理能力较弱,不适合管理复杂数据类型和复杂的内存数据结构,不适合处理复杂的控制语句,更适合于标准的向量、矩阵、数组等计算。另外,协处理器的缓存容量相对内存较小,通常采用PCI-E卡作为服务器扩展的处理设备,需要在CPU的控制下从内存中获取数据,而内存与协处理器之间的数据传输速度大大低于内存与处理器之间的传输速度,因此协处理器上的数据处理时间需要包括内存向协处理器缓存的数据传输时间和数据在协处理器上的处理时间两部分。
在数据仓库应用中,数据通常存储为复杂的星型模型或雪花状模型,一般由一个事实表和多个维表构成。维表存储复杂的数据类型,并且需要处理复杂的谓词表达式;事实表由维表外键属性和度量属性组成,需要在与维表连接的基础上对度量属性按维表中的分组属性进行分组聚集计算。维表数量较多,数据量较少(通常低于总数据量的5%),但数据类型和数据处理复杂;事实表数量庞大,其复杂的多表连接操作是分析处理的性能瓶颈。同时,分析型查询的并行处理性能受分组操作复杂度和聚集计算类型所影响,例如sum、count、average等聚集计算适合于并行处理,而median、percentile等聚集难以并行处理,因此复杂的分组聚集计算任务并不适合于通用GPU处理。
另一方面,何丙胜等人在论文《Relationalquerycoprocessingongraphicsprocessors》(刊载于《ACMTransactionsonDatabaseSystems》34卷第4期,2009年12月)中提出了Co-Processing计算模型,将查询任务负载在GPUworker和CPUworker之间协同分布,通过CPU与GPU的代价模型评估关系操作符在两个处理器节点上如何进行分配。该论文提出简单计算如选择操作适合CPU处理,复杂操作如连接操作适合GPU处理。GPU不适合做分支预测操作,因此数据库中典型的流水线(pipeline)处理技术难以在GPU中实现。连接操作会产生大量的物化数据,在数据仓库的OLAP(联机分析处理)应用中,星型连接会产生复杂的多表连接操作,通用GPU上的并行连接操作需要在每个连接操作符之间进行数据分区操作,数据预处理的代价较大。H.Pirk等人在论文《Acceleratingforeign-keyjoinsusingasymmetricmemorychannels》(发表于ProceedingsofInternationalConferenceonVeryLargeDataBases2011(VLDB),585-597)中,将GPU和CPU看作是一个分布式数据库,鉴于GPU节点的内部数据访问性能很高,但GPU与CPU之间的数据通道性能较低,提出了将数据仓库中较小的维表存储于通用GPU中,事实表外键连接属性通过外键索引在GPU中完成连接操作,并返回连接索引作为CPU中后续操作的中间数据。但是,当计算机***中配置有多个GPU时,维表分布的全复制机制会产生较大的数据冗余代价,降低了有限的GPU缓存的利用率。另外,维表数据结构多样,谓词操作复杂度高,数据量小,更加适合于CPU处理。
但就发明人所知,目前还没有利用GPU缓存作为索引存储引擎来加速内存大数据OLAP查询处理性能方面的研究。
发明内容
本发明所要解决的技术问题在于提供一种GPU和CPU混合架构下的OLAP星型连接查询优化方法。该方法将位图连接索引和星型位图过滤技术应用于GPU和CPU混合架构中,有效优化复杂多维查询处理。
为实现上述的发明目的,本发明采用下述的技术方案:
一种GPU和CPU混合架构下的OLAP星型连接查询优化方法,包括如下步骤:
首先通过位图连接索引过滤优化OLAP星型连接操作,在GPU缓存中缓存高频访问的连接位图;其次,将满足连接位图过滤条件的事实表外键属性组加载到GPU缓存中进行星型连接过滤;最后,通过GPU所生成的过滤位图将内存大事实表的全表扫描转换为按位置随机访问,从而提高OLAP星型连接的查询处理性能。
其中较优地,将位图连接索引中高频访问的关键字对应的位图作为GPU的位图索引成员,将其成员位图存储于GPU缓存中。
其中较优地,将事实表外键属性存储于内存中,通过GPU位图索引生成的过滤位图抽取满足索引条件的事实表外键属性到GPU缓存中。
其中较优地,在执行查询处理时,首先根据查询中的谓词查找GPU中是否存在匹配的连接位图,如果存在则在GPU中执行相应的位图操作,将维表谓词位图加载到GPU缓存中。
其中较优地,事实表外键在GPU中通过外键映射实现星型连接位图过滤,并更新过滤位图,确定最终满足星型连接的事实表记录位置;CPU通过GPU所生成的过滤位图对事实表进行过滤,将大事实表的全表扫描转换为按位置随机访问。
其中较优地,所述过滤位图是根据查询关键字对应的GPU缓存连接位图上的位操作而生成的位图,用于过滤需要从内存传输到GPU缓存的事实表外键组。
其中较优地,在所述OLAP星型连接操作中,通过事实表外键与维表记录位置之间的映射关系将事实表外键映射到对应的维表谓词位图对应的位置上,从而将星型连接转换为事实表外键属性依次在对应的维表谓词位图上的过滤操作。
其中较优地,事实表外键属性组在进行星型连接过滤时,根据过滤结果更新过滤位图,将星型连接过滤的位操作结果为“0”的事实表记录在对应的过滤位图位置的“1”置为“0”。
其中较优地,所述过滤位图指示事实表中对于当前查询满足谓词操作的记录的相对位置,对应的事实表记录与维表进行连接操作以完成后续的分组聚集操作。
其中较优地,将GPU缓存中a%的存储空间作为位图连接索引的存储空间配额,用于缓存所述连接位图;1-a%的存储空间作为OLAP星型连接操作中的事实表外键属性缓存和维表谓词位图;其中,a的取值范围为20~60。
与现有技术相比较,本发明对GPU和CPU混合架构下的OLAP星型连接查询技术进行了优化。在通用GPU缓存和内存之间进行存储和查询处理优化,将通用GPU作为连接位图存储和处理引擎,通过位图索引提高事实表外键属性与通用GPU缓存之间的数据传输效率。利用维表谓词过滤位图上的事实表外键星型连接过滤,更新过滤位图,并通过过滤位图在内存实现按位置随机访问,显著提高了大事实表的访问效率和查询处理性能。
附图说明
图1为GPU和CPU混合架构下的数据仓库存储模型示意图;
图2为在通用GPU中连接位图上的OLAP查询关键字位图操作示意图;
图3为基于过滤位图的事实表外键属性记录内存访问处理示意图;
图4为在通用GPU中基于过滤位图的事实表外键星型维表位图过滤操作示意图;
图5为CPU根据通用GPU过滤位图,抽取事实表记录完成OLAP查询处理示意图。
具体实施方式
下面结合附图和具体实施方式对本发明做进一步的详细说明。
根据相关研究,GPU与CPU相当于通过PCI-E总线相连的一个分布式***,其中GPU具有有限的高速缓存,适合于简单数据类型上的高速并行处理,但需要进一步降低CPU与GPU之间的数据传输代价。GPU缓存容量较小,但数据访问性能很高,适合于存储能够加速多表连接操作的索引。前已述及,众核协处理器已经成为高性能计算的基础平台。目前,众核协处理器主要以NVIDIA公司的通用GPU和Intel公司的至强融核TM协处理器为代表,其中拥有2688个处理核心,250GB/秒的显存带宽和6GB显存;至强融核TM协处理器5110P拥有60个内核(1.053GHz),240个物理线程,8GB内存和320GB/秒带宽。在下文中,以通用GPU为例进行说明,但本发明的技术内容同样适用于至强融核TM协处理器。
鉴于GPU和CPU的技术特点,本发明提出了一种在GPU和CPU混合架构下的OLAP星型连接查询优化方法。该方法将通用GPU用作OLAP星型连接(star-join)加速器,采用位图连接索引技术加速星型连接操作,利用通用GPU高性能缓存的存储访问性能和通用GPU的强大并行处理性能来提高OLAP星型连接的查询处理性能。
本发明根据通用GPU缓存较小但带宽性能高的特点,首先缓存高频访问的连接位图,并利用通用GPU的强大并行处理能力提高位图操作性能,通过通用GPU的位图索引加速提高索引性能。在通用GPU位图索引的支持下,通用GPU被用作OLAP星型连接加速器,仅将满足连接位图过滤条件的大事实表外键属性组加载到通用GPU缓存进行并行的星型连接过滤处理,利用通用GPU的强大并行处理能力加速星型连接处理性能;最后,将通用GPU生成的较小的事实表过滤位图传递给内存数据库,实现对大事实表的过滤操作,提高OLAP的表扫描效率,提高OLAP星型连接的查询处理性能。
其中,通用GPU在本发明中的主要角色是连接索引存储与处理,事实表外键星型连接过滤。通过生成的过滤位图指示事实表中OLAP查询中所需要最终进行连接的记录,消除不必要事实表记录访问时的带宽消耗和消除不必要的连接操作代价,提高内存访问的效率。
另外,为了实施本发明,内存数据库引擎需要支持基于位图的位置访问,即在列存储内存数据库中能够通过标准的位图访问接口实现按位置随机扫描,以便提高表扫描的效率。
在本发明中,将OLAP星型连接查询处理分为三个执行阶段:位图连接索引过滤、事实表外键星型维表位图过滤和基于事实表过滤位图的查询处理。通过这三个执行阶段提高索引访问性能,降低通用GPU对于内存的数据访问量,将内存大量记录数据扫描操作转换为高效的按位置随机访问,从而减少查询处理中的大事实表扫描代价,消除这些记录的连接操作代价,优化复杂多维查询处理的整体性能。下面对此展开详细具体的说明。
首先,本发明提供了一种GPU和CPU混合架构下的数据仓库存储模型。在现有技术中,并没有将数据仓库的索引、事实表和维表存储、OLAP星型连接操作等存储和处理技术在统一的GPU和CPU混合架构下进行***的优化。而且,传统连接技术在通用GPU上需要复杂HASH表等数据结构,增加了通用GPU处理的复杂性。现有技术在涉及星型连接OLAP查询时,基于分区技术的星型连接需要物化大量的中间连接结果,降低GPU缓存的使用效率,降低了通用GPU的并行处理效率。同时,缺乏索引的支持也使事实表在通用GPU连接加速时,需要在内存和通用GPU缓存之间移动大量数据,增加了通用GPU的数据预处理代价。针对上述的技术问题,本发明所提供的数据仓库存储模型在GPU和CPU之间一方面对位图索引机制进行了优化,另一方面对事实表和维表的存储和查询处理机制进行了优化。
在图1所示的数据仓库存储模型中,数据仓库中的数据对象主要包括事实表、维表和位图连接索引。其中维表采用内存存储,事实表为内存存储或磁盘存储。内存包括DRAM和flashmemory。它通过PCI-E通道访问通用GPU的缓存(即图1中的显存),同时通过内存通道供CPU内核访问。
事实表可以采用内存存储或磁盘存储。当采用磁盘存储时,事实表可以存储大量数据,但多核CPU或通用GPU的高性能计算能力被磁盘I/O的巨大延迟所抵消,使处理器处于闲置状态,浪费了强大的并行计算资源,因此在本发明中优选以大事实表内存存储为应用背景。事实表采用列存储,包括外键列和度量列。其中,事实表外键属性根据通用GPU连接位图所生成的过滤位图被按指定位置抽取到通用GPU缓存中进行星型位图过滤操作,因此事实表外键属性可以使用独立的列存储,也可以将全部外键属性以列组(columngroup)形式作为超列(supercolumn)存储。相应的过滤位图是根据查询关键字对应的通用GPU缓存连接位图上的位操作而生成的位图,用于过滤需要从内存传输到通用GPU缓存的事实表外键组,可以提高通用GPU缓存的存储效率和数据传输效率。度量属性在内存中采用列存储,根据模式特点和所使用的存储引擎决定其采用列存储或混合存储模型。
维表驻留于内存中,用于用户查询中的维表谓词处理,将生成的维表谓词过滤位图传输到通用GPU的缓存中作为事实表过滤位图。该过程,维表存储由内存数据库提供存储和复杂谓词处理功能。当用户发出查询请求时,首先通过查询改写将查询中各维表上的谓词操作转换为对应维表上的谓词处理,并生成相应的维表谓词过滤位图,如将查询
SELECTc_nation,sum(lo_revenue)asprofit
FROMcustomer,supplier,part,lineorder
WHERElo_custkey=c_custkey
ANDlo_suppkey=s_suppkey
ANDlo_partkey=p_partkey
ANDc_region='AMERICA'
ANDs_region='AMERICA'
AND(p_category='MFGR#41'ORp_category='MFGR#42')
GROUPBYc_nationORDERBYc_nation;
改写为如下三个查询,每个查询将对应维表上的谓词表达式集中处理,按照谓词表达式的结果生成一个位图向量,标识每个维表记录对查询中相关谓词的满足情况:
SELECTCASEWHENS_region='AMERICA'1ELSE0
FROMSupplier;
SELECTCASEWHEN(p_category='MFGR#41'ORp_category='MFGR#42')1ELSE0FROMPart;
SELECTCASEWHENC_region='AMERICA'1ELSE0
FROMcustomer;
位图连接索引采用内存存储或磁盘存储,用于通过预连接操作为维表中指定属性列中的成员创建位图,标识该成员在与其连接的事实表中的连接位置。在本发明中,位图连接索引可以采用标准数据库中的位图连接索引技术为指定维表的低势集属性列(或者另行指定单个列或多个列)创建,也可以采用自定义方式为指定维属性中的部分高频访问成员创建位图,将不同维表、不同属性列成员的位图作为统一的位图连接索引对象,统一位图存储和访问接口,实现根据关键字的连接位图访问。默认地,列中每个成员都创建一个连接位图指示特定列成员在事实表上的连接位置。在本发明的一个实施例中,将位图连接索引中访问频率高的部分连接位图存储在通用GPU的缓存中,作为高速连接位图存储和位图索引处理引擎,提供基于查询关键字在通用GPU中查找相关位图并进行位图运算的功能。根据查询中的关键字在通用GPU的缓存中定位相应的连接位图并进行位运算,生成过滤位图,从内存的事实表中抽取相应的外键属性组到通用GPU的缓存中,进行星型连接过滤操作。
位图连接索引中的位图(即图1中的连接位图)与事实表等长,其存储空间可以由位图数量×事实表记录数量/8(byte)来计算。在本发明中,考虑到通用GPU的缓存容量较小,因此不缓存全部的位图连接索引,而是将高频访问的谓词关键字对应的连接位图缓存于通用GPU缓存中,以便提高通用GPU缓存的存储效率。具体地说,将通用GPU的缓存作为高频访问连接位图存储引擎,将通用GPU的缓存中a%的存储空间作为位图连接索引的存储空间配额,用于存储连接位图;1-a%的存储空间作为OLAP星型连接操作中的事实表外键属性缓存。其中,a%的大小由用户指定,用于权衡索引访问性能和星型连接处理性能。在本发明的一个实施例中,a的取值范围为20~60,优选值为40。
接下来,介绍本发明中基于GPU和CPU混合架构的OLAP星型连接操作技术。
在本发明中,将一个典型的OLAP星型连接查询任务分解为三个执行阶段:(1)根据查询中的谓词关键字查找是否在通用GPU的缓存中存储有对应的连接位图,如果存在若干匹配的连接位图则根据查询谓词表达式完成相应的位图计算,通过通用GPU的并行处理,生成过滤位图;(2)在过滤位图中,按位图取值为1的位置抽取对应的事实表外键列组子集,并将维表谓词过滤位图加载到通用GPU缓存,将事实表外键值映射为维表谓词过滤位图对应的偏移位置,根据维表谓词过滤位图对应位置是否为1进行外键连接过滤,实现事实表记录在多个维表上的星型连接过滤。将过滤位图中位图值为1而对应的事实表外键星型连接过滤结果为0的位图位置置为0,更新过滤位图;(3)将通用GPU生成的最终过滤位图传回CPU,并通过过滤位图对事实表进行过滤后,完成OLAP查询处理。
在上述OLAP星型连接查询处理过程中,首先通过位图连接索引优化OLAP星型连接操作,将传统位图连接索引中高频访问的关键字对应的位图作为通用GPU位图索引成员,将其成员位图存储于通用GPU缓存中,保证较小的通用GPU缓存能够存储最有利于OLAP星型连接优化的索引数据。由于事实表外键属性存储于内存中,我们首先通过通用GPU位图索引生成的过滤位图抽取满足索引条件的事实表外键属性到通用GPU缓存中,以便提高内存与通用GPU之间的数据传输效率和通用GPU的缓存存储效率。另外,事实表上的全表扫描是OLAP星型连接操作的性能瓶颈因素,本发明通过两级过滤消减OLAP查询中事实表扫描数据量,通过通用GPU所生成的过滤位图将内存大事实表的全表扫描转换为按位置随机访问的部分扫描操作,提高事实表的存储访问效率。
在执行OLAP星型连接的查询处理时,由通用GPU存储高频访问的连接位图。查询处理执行时,首先根据查询中的谓词查找通用GPU中是否存在匹配的连接位图。如果存在,首先在通用GPU中执行相应的位图操作,通过通用GPU的强大并行处理能力提高位图操作性能,如果不存在则放弃该操作;其次,只将维表谓词过滤位图加载到通用GPU缓存中,能够提高通用GPU缓存的利用率,减少维表上复杂谓词的处理复杂度,简化数据库***的设计;再次,事实表外键在通用GPU中通过外键映射实现星型连接位图过滤,并更新过滤位图,确定最终满足星型连接的事实表记录位置。CPU通过通用GPU生成的过滤位图对事实表进行过滤,从而将大事实表的全表扫描转换为高效率的按位置随机访问,提高内存带宽性能,优化OLAP星型连接的查询处理性能。
图2为通用GPU中连接位图上的OLAP查询关键字位图操作示意图。传统的位图连接索引是在指定维表列或多个列上为每一个列成员创建标识事实表连接关系的位图,因此位图连接索引通常选择低势集的列以减少位图索引的存储开销。在OLAP星型连接查询的第一个阶段中,位图连接索引可以采取常规方法,但位图连接索引存储在大容量磁盘中,我们将查询中高频访问的谓词关键字对应的位图通过内存加载到通用GPU缓存中,以提高较小容量通用GPU缓存的空间利用率,并利用通用GPU的高并行处理能力处理大事实表连接位图上的位操作,提高位图索引处理性能。例如在图2中,查询中的谓词c_region='AMERICA'、c_region='AMERICA'和p_category='MFGR#41'对应的连接位图存储在通用GPU缓存中,但p_category='MFGR#42'对应的连接位图并未被缓存,因此OR对应的谓词关键字连接位图不完全,不参与连接位图计算,通用GPU执行对c_region='AMERICA'和c_region='AMERICA'对应关键字连接位图的并行AND运算,并生成连接过滤位图。
图3为基于过滤位图的事实表外键列的内存访问示意图。在OLAP星型连接查询的第二个阶段中,通用GPU中的连接位图操作产生了较低选择率的过滤位图,然后通用GPU根据过滤位图值为1的位置从事实表外键属性中抽取对应的外键属性组到通用GPU中,完成星型连接操作。本发明中的OLAP星型连接操作不是将传统的连接操作在通用GPU中并行化,而是通过事实表外键与维表记录位置之间的映射关系将事实表外键映射到对应的维表谓词过滤位图对应的位置上,星型连接转换为事实表外键属性依次在对应的维表谓词过滤位图上的过滤操作。该操作可以转换为数组上的按下标直接访问操作,适合于通用GPU的并行处理,并能够有较好的并行处理性能。
通过过滤位图的事实表外键属性抽取操作,大大降低了事实表外键属性在内存和通用GPU缓存之间的数据传输量,提高了带宽效率和通用GPU并行处理的效率。在根据过滤位图抽取事实表外键列组时,可以将事实表外键属性组中过滤位图值为1的位置逻辑聚合为数据块,并为每个事实表外键列组附加位图中对应位图值为1的位置,标识该事实表外键列组所对应的位图位置。抽取的事实表外键列组聚合成的数据块被传输到通用GPU缓存中,准备进行维表谓词过滤位图的过滤处理。
图4为在通用GPU中基于过滤位图的事实表外键星型维表位图过滤操作。根据数据仓库中多维存储模型的概念,维表记录可以被映射为一个有序序列,如1,2,3,…。维表谓词过滤位图是一个与维表等长的位图,分别记录了查询在当前维表中谓词表达式是否满足的状态,连接过滤位图从事实表中抽取满足位图索引运算结果的事实表外键组到通用GPU缓存,并通过事实表外键依次映射到维表谓词过滤位图的相应位置,完成星型连接过滤。事实表外键属性组在进行星型连接过滤时,根据过滤结果更新过滤位图,将星型连接过滤的位操作结果为“0”的事实表记录在对应的过滤位图位置的“1”置为“0”。如果事实表外键属性不满足星型位图过滤,如图4中第2条记录(5,1,4,2),则将位图中对应位置“4”上的“1”置为“0”,更新过滤位图。
在OLAP星型连接查询的第三个阶段中,CPU根据通用GPU过滤位图抽取事实表的记录,完成OLAP查询处理。如图5所示,通用GPU完成了位图连接索引上的位图运算,生成过滤位图,然后根据过滤位图抽取事实表的外键属性组到通用GPU的缓存,并通过维表谓词过滤位图完成星型连接过滤操作,更新过滤位图,确定事实表中满足星型连接过滤条件的记录位置。在经过连接位图过滤和事实表星型过滤二级过滤操作后,过滤位图指示事实表中对于当前查询满足谓词操作的记录的相对位置,对应的事实表记录需要与维表进行实质的连接操作以完成后续的分组聚集操作。在连接操作中,根据连接位图的访问情况可以对部分连接的维表进行剪枝,以便缩减查询树中的连接节点。最后,通用GPU中生成的过滤位置传输回内存,作为内存数据库中事实表的附加过滤条件,将对大事实表的全表扫描转换为按位图位置的随机访问,从而提高事实表的访问效率及OLAP查询处理的效率。
通用GPU生成的过滤位图需要从通用GPU缓存传输到内存完成其后的OLAP处理。当过滤位图非常稀疏时(0的位置足够多时),可以采用位图压缩存储方式以减少位图传输的数据量。在本发明的一个实施例中,采用连续的m位数值存储位图值为“1”的偏移位置的方法来压缩位图空间,如位图“01000010”存储为(2,7)。m的位数由事实表记录长度N决定,即m是大于lnN的最小基本数值类型,如lnN小于16时,可以采用shortint(16位)型数值存储位图中“1”位置的偏移值。采用位图压缩技术的阈值为位图过滤选择率η<1/m,当满足压缩条件时,过滤位图被存储为ηN个连续的m位数值序列。
在本发明的一个实施例中,索引生成的过滤位图用于在事实表上进行连接记录筛选,并且根据索引位图将用户原始输入的查询Q优化为查询Q’。在查询Q’中,如果谓词关键字存在连接位图,并且对应维表属性没有出现在分组属性中,如SQL示例中的s_region=’AMERICAN’AND(p_mfgr=’MFGR#1’ORp_mfgr=’MFGR#2’)谓词关键字存在连接位图,则索引所生成的过滤位图隐含了事实表与维表supplier和part的连接关系,查询Q’中可以将lineorder与supplier表和part表的连接操作进行剪枝,在缩减事实表扫描代价的基础上将表连接的数量减少到两个。优化后的查询Q’如下所示:
原始查询Q:
SELECTd_year,c_nation,SUM(lo_revenue-lo_supplycost)ASprofit
FROMdate,customer,supplier,part,lineorder
WHERElo_custkey=c_custkey
ANDlo_suppkey=s_suppkey
ANDlo_partkey=p_partkey
ANDlo_orderdate=d_datekey
ANDc_region=’AMERICAN’
ANDs_region=’AMERICAN’
AND(p_mfgr=’MFGR#1’ORp_mfgr=’MFGR#2’)
GROUPBYd_year,c_nation
ORDERBYd_year,c_nation
优化后的查询Q’:
SELECTd_year,c_nation,SUM(lo_revenue-lo_supplycost)ASprofit
FROMdate,customer,lineorder
WHERElo_custkey=c_custkey
ANDlo_orderdate=d_datekey
ANDc_region=’AMERICAN’
GROUPBYd_year,c_nation
ORDERBYd_year,c_nation
为了验证本发明所提供的OLAP星型连接查询优化方法的实际效果,发明人使用一台普通台式机作为实验平台,配置为IntelCorei3-2350MCPU2.30GHz,8GB内存,64位Windows7操作***,配置一块GeForce610M显卡,CUDA计算能力2.1,1GB显存,GPUClock主频1.48Ghz,48个CUDAcores,每block1024线程,GPU显存与内存之间的数据带宽约为2GB/秒。
发明人模拟大数据内存存储场景,维表和事实表都存储在内存中,GPU显存只存储选择出的TOPK关键字位图连接索引,利用GPU强大的并行处理能力加速索引位图计算,并只将索引过滤后较少的事实表外键加载到GPU进行星型连接处理,将并行写冲突较高的分组聚集计算转移到CPU处理,发挥不同处理器的优势。
在具体测试中,发明人选择SSB(StarSchemaBenchmark)作为测试标准,数据集大小为4GB(SF=4,24000000行记录),将查询中使用的谓词关键字作为***索引关键字,在预处理阶段建立连接位图并存储于GPU显存,将GPU用作独立的GPU索引处理引擎。发明人选择最具有代表性的Q4查询组作为测试查询,Q4查询为事实表与四个维表连接,包含数量较多的谓词表达式,能够更好地体现关键字位图连接索引所产生的多个位图之间位操作代价的优化。
在CPU/GPU混合平台上,OLAP星型连接查询处理分为以下几个过程:
◆索引创建BitFilter
◆BitFilter传输:GPU→CPU
◆事实表外键组传输:CPU→GPU
◆星型连接并生成分组向量
◆分组向量传输:GPU→CPU
◆事实表度量属性聚集运算
其中,CPU平台的处理过程包括:索引创建BitFilter、星型连接并生成分组向量和事实表度量属性聚集运算三个过程;CPU/GPU混合Co-OLAP则包括全部处理过程。在实验中,已通过GPU索引机制和星型连接优化最小化查询中CPU与GPU之间的数据传输量。
表1查询执行代价分析
表1显示了查询执行的代价分析结果。从表1所统计的CPU查询处理过程和CPU/GPU协同处理过程可以看出,CPU处理中代价较大的位图运算和星型连接运算在GPU中获得极高的性能,在几十微秒时间内就能完成多核CPU上万微秒完成的位图计算。即使处理大数据超长位图也能获得极高的处理性能。而星型连接操作由于进行了面向GPU处理特点的优化,把复杂的连接操作简化为数组上的按位直接访问操作,适合GPU的并行处理模式,因此多表星型连接也产生了极大的性能收益。
与现有技术相比较,本发明具有如下的技术特点:
1.将通用GPU缓存作为高频访问连接位图的存储引擎,使用较小的GPU缓存存储较小的连接位图,当查询关键字在连接位图中命中时,通用GPU能够提供高性能的并行位图访问和多个位图之间的位运算处理性能,提高连接位图的运算性能(在CPU中,大位图之间的位操作计算代价相对较大);
2.通用GPU缓存中存储的是高频且低选择率的位图。当查询中命中多个位图索引时,生成的过滤位图选择率较低,能够过滤掉事实表中的大部分记录,只需要按过滤位图取值为1的位置将事实表相关外键列数据抽取到通用GPU缓存中进行星型连接处理,能够大大减少内存与通用GPU之间的数据传输量,提高数据访问性能;
3.通用GPU中事实表外键记录通过维表谓词过滤位图进行二次过滤,通过将事实表外键值映射到由CPU生成的维表谓词过滤位图相应位置的方法,将事实表外键与维表的连接操作转换为事实表外键在维表谓词过滤位图上的过滤操作,星型连接转换为事实表外键属性在多个维表位图上的过滤操作,在通用GPU中可以通过数组结构的事实表外键与维表谓词过滤位图之间的按顺序的位图过滤完成星型连接操作,不需要物化每一个事实表外键连接的结果;
4.位图索引为第一级过滤,事实表外键星型连接过滤为第二级过滤,两级过滤操作共享一个过滤位图。第二级过滤在第一级过滤的基础上更新位图值,通用GPU完成位图索引和事实表外键过滤后将生成的过滤位图传递给内存,由CPU根据位图从事实表中抽取对应的记录进行OLAP查询处理,减少大事实表的扫描代价,有效提高大数据时OLAP的查询处理性能。
综上所述,本发明将位图连接索引和星型位图过滤技术应用于GPU和CPU混合架构中,提高通用GPU缓存的存储效率和通用GPU的并行处理效率,从整体上提高混合处理器平台的OLAP查询处理性能。本发明不仅适合于采用GPU和CPU混合架构的内存数据库应用,同样也适用于通用数据库中的分析处理应用。
以上对本发明所提供的GPU和CPU混合架构下OLAP星型连接查询优化方法进行了详细的说明。对本领域的技术人员而言,在不背离本发明实质精神的前提下对它所做的任何显而易见的改动,都将构成对本发明专利权的侵犯,将承担相应的法律责任。
Claims (9)
1.一种GPU和CPU混合架构下的OLAP星型连接查询优化方法,其特征在于包括如下步骤:
通过位图连接索引过滤优化OLAP星型连接操作,在GPU缓存中缓存高频访问的连接位图;
将满足连接位图过滤条件的事实表外键属性组加载到GPU缓存中进行星型连接过滤;
通过GPU所生成的过滤位图将内存大事实表的全表扫描转换为按位置随机访问,从而提高OLAP星型连接的查询处理性能;
在执行查询处理时,首先根据查询中的谓词查找GPU中是否存在匹配的连接位图,如果存在则在GPU中执行相应的位图操作,将维表谓词位图加载到GPU缓存中。
2.如权利要求1所述的OLAP星型连接查询优化方法,其特征在于:
将位图连接索引中高频访问的关键字对应的位图作为GPU的位图索引成员,将其成员位图存储于GPU缓存中。
3.如权利要求1所述的OLAP星型连接查询优化方法,其特征在于:
将事实表外键属性存储于内存中,通过GPU位图索引生成的过滤位图抽取满足索引条件的事实表外键属性到GPU缓存中。
4.如权利要求1所述的OLAP星型连接查询优化方法,其特征在于:
事实表外键在GPU中通过外键映射实现星型连接位图过滤,并更新过滤位图,确定最终满足星型连接的事实表记录位置;CPU通过GPU所生成的过滤位图对事实表进行过滤,将大事实表的全表扫描转换为按位置随机访问。
5.如权利要求1、3或4所述的OLAP星型连接查询优化方法,其特征在于:
所述过滤位图是根据查询关键字对应的GPU缓存连接位图上的位操作而生成的位图,用于过滤需要从内存传输到GPU缓存的事实表外键组。
6.如权利要求5所述的OLAP星型连接查询优化方法,其特征在于:
所述过滤位图指示事实表中对于当前查询满足谓词操作的记录的相对位置,对应的事实表记录与维表进行连接操作以完成后续的分组聚集操作。
7.如权利要求1所述的OLAP星型连接查询优化方法,其特征在于:
在所述OLAP星型连接操作中,通过事实表外键与维表记录位置之间的映射关系将事实表外键映射到对应的维表谓词位图对应的位置上,将星型连接转换为事实表外键属性依次在对应的维表谓词位图上的过滤操作。
8.如权利要求7所述的OLAP星型连接查询优化方法,其特征在于:
事实表外键属性组在进行星型连接过滤时,根据过滤结果更新过滤位图,将星型连接过滤的位操作结果为“0”的事实表记录在对应的过滤位图位置的“1”置为“0”。
9.如权利要求1~3中任意一项所述的OLAP星型连接查询优化方法,其特征在于:
将GPU缓存中a%的存储空间作为位图连接索引的存储空间配额,用于缓存所述连接位图;1-a%的存储空间作为OLAP星型连接操作中的事实表外键属性缓存;其中,a的取值范围为20~60。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310204514.4A CN103309958B (zh) | 2013-05-28 | 2013-05-28 | Gpu和cpu混合架构下的olap星型连接查询优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310204514.4A CN103309958B (zh) | 2013-05-28 | 2013-05-28 | Gpu和cpu混合架构下的olap星型连接查询优化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103309958A CN103309958A (zh) | 2013-09-18 |
CN103309958B true CN103309958B (zh) | 2016-06-29 |
Family
ID=49135176
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310204514.4A Active CN103309958B (zh) | 2013-05-28 | 2013-05-28 | Gpu和cpu混合架构下的olap星型连接查询优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103309958B (zh) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102014101710A1 (de) * | 2014-02-12 | 2015-08-13 | Uniscon Universal Identity Control Gmbh | Verfahren und System zum Sichern von Datenbankrelationen vor unberechtigtem Zugriff |
CN103995879B (zh) * | 2014-05-27 | 2017-12-15 | 华为技术有限公司 | 基于olap***的数据查询方法、装置及*** |
CN104318511B (zh) * | 2014-10-24 | 2018-10-26 | 江西创成电子有限公司 | 一种电脑显卡及其图像处理方法 |
CN104361113B (zh) * | 2014-12-01 | 2017-06-06 | 中国人民大学 | 一种内存‑闪存混合存储模式下的olap查询优化方法 |
CN105512216A (zh) * | 2015-11-30 | 2016-04-20 | 青岛海尔智能家电科技有限公司 | 数据存储和读取方法、装置及*** |
CN105786948A (zh) * | 2015-12-29 | 2016-07-20 | 国网冀北电力有限公司技能培训中心 | 一种基于gpu的olap*** |
CN107451090B (zh) * | 2016-06-01 | 2020-09-11 | 华为技术有限公司 | 数据处理***和数据处理方法 |
CN106202408B (zh) * | 2016-07-11 | 2019-10-18 | 华北电力大学(保定) | 基于olap的数据查询服务器、***和方法 |
CN106844703B (zh) * | 2017-02-04 | 2019-08-02 | 中国人民大学 | 一种面向数据库一体机的内存数据仓库查询处理实现方法 |
CN108733681B (zh) | 2017-04-14 | 2021-10-22 | 华为技术有限公司 | 信息处理方法及装置 |
CN107341126A (zh) * | 2017-06-14 | 2017-11-10 | 中国神华能源股份有限公司 | 移动对象查询装置 |
CN109685712B (zh) * | 2017-10-18 | 2023-05-23 | 阿里巴巴集团控股有限公司 | 图像缓存和使用方法及装置、终端 |
CN108256087B (zh) * | 2018-01-22 | 2020-12-04 | 北京腾云天下科技有限公司 | 一种基于位图结构的数据导入、查询及处理方法 |
CN108681472A (zh) * | 2018-05-17 | 2018-10-19 | 广州优视网络科技有限公司 | 图片加载方法、装置及电子设备 |
US20220147503A1 (en) * | 2020-08-11 | 2022-05-12 | Massachusetts Mutual Life Insurance Company | Systems and methods to generate a database structure with a low-latency key architecture |
CN113032427B (zh) * | 2021-04-12 | 2023-12-08 | 中国人民大学 | 一种用于cpu和gpu平台的向量化查询处理方法 |
CN112989082B (zh) * | 2021-05-20 | 2021-07-23 | 南京甄视智能科技有限公司 | Cpu和gpu混合的自适应人脸搜索方法及*** |
CN116451278A (zh) * | 2023-06-19 | 2023-07-18 | 杭州世平信息科技有限公司 | 星型连接工作负载查询隐私保护方法、***、设备及介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101416150A (zh) * | 2006-02-06 | 2009-04-22 | 泰克莱克公司 | 用于索引、验证、恢复和合并由范围限定数字数据索引的数据库的方法、***和计算机程序产品 |
CN102663114A (zh) * | 2012-04-17 | 2012-09-12 | 中国人民大学 | 面向并发olap的数据库查询处理方法 |
CN102663116A (zh) * | 2012-04-11 | 2012-09-12 | 中国人民大学 | 面向列存储数据仓库的多维olap查询处理方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8965866B2 (en) * | 2009-12-17 | 2015-02-24 | Business Objects Software Limited | Optimizing data transfer time on graphics processor units |
-
2013
- 2013-05-28 CN CN201310204514.4A patent/CN103309958B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101416150A (zh) * | 2006-02-06 | 2009-04-22 | 泰克莱克公司 | 用于索引、验证、恢复和合并由范围限定数字数据索引的数据库的方法、***和计算机程序产品 |
CN102663116A (zh) * | 2012-04-11 | 2012-09-12 | 中国人民大学 | 面向列存储数据仓库的多维olap查询处理方法 |
CN102663114A (zh) * | 2012-04-17 | 2012-09-12 | 中国人民大学 | 面向并发olap的数据库查询处理方法 |
Non-Patent Citations (1)
Title |
---|
图形处理器加速的联机分析处理***;方艺璇 等;《第29届中国数据库学术会议论文集》;20121001;第431-435页 * |
Also Published As
Publication number | Publication date |
---|---|
CN103309958A (zh) | 2013-09-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103309958B (zh) | Gpu和cpu混合架构下的olap星型连接查询优化方法 | |
CN102663116B (zh) | 面向列存储数据仓库的多维olap查询处理方法 | |
Li et al. | Hippogriffdb: Balancing i/o and gpu bandwidth in big data analytics | |
CN104866608B (zh) | 一种数据仓库中基于连接索引的查询优化方法 | |
CN104361113B (zh) | 一种内存‑闪存混合存储模式下的olap查询优化方法 | |
US8285709B2 (en) | High-concurrency query operator and method | |
CN103631870B (zh) | 一种用于大规模分布式数据处理的***及其方法 | |
CN103294831B (zh) | 列存储数据库中基于多维数组的分组聚集计算方法 | |
Govindaraju et al. | Fast and approximate stream mining of quantiles and frequencies using graphics processors | |
US7895151B2 (en) | Fast bulk loading and incremental loading of data into a database | |
JP4073033B1 (ja) | 結合演算の処理機能の向上を考慮した合成関係演算を利用したマルチオペレーション・プロセッシングを用いたデータベースのクエリー処理システム | |
CN102663114B (zh) | 面向并发olap的数据库查询处理方法 | |
US8762407B2 (en) | Concurrent OLAP-oriented database query processing method | |
US10824622B2 (en) | Data statistics in data management systems | |
US11797509B2 (en) | Hash multi-table join implementation method based on grouping vector | |
CN103942342B (zh) | 一种内存数据库oltp&olap并发查询优化方法 | |
Wesley et al. | An analytic data engine for visualization in tableau | |
CN108536692B (zh) | 一种执行计划的生成方法、装置及数据库服务器 | |
CN103246749B (zh) | 面向分布式计算的矩阵数据库***及其查询方法 | |
CN108536705A (zh) | 数据库***中对象的编码及运算方法与数据库服务器 | |
WO2010005447A1 (en) | Methods and systems for generating query plans that are compatible for execution in hardware | |
CN111581234B (zh) | Rac多节点数据库查询方法、装置及*** | |
CN105868388A (zh) | 一种基于fpga的内存olap查询优化方法 | |
Chattopadhyay et al. | Procella: Unifying serving and analytical data at YouTube | |
CN115237937A (zh) | 一种基于星际文件***的分布式协同查询处理*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |