一种数据库中的数据查询方法及装置制造方法及图纸

技术编号:10316140 阅读:159 留言:0更新日期:2014-08-13 17:35
本申请公开了数据库中的数据查询方法及装置,该方法包括:接收查询指令,确定预先存储于GPU的显存中的块索引集合中的各个块索引的状态,当GPU显存中的各个块索引均为非同步状态时,启动一个或多个GPU进程,依据查询条件,过滤GPU显存中的块索引,得到第一块索引查询结果;并跟据第一块索引查询结果确定最终数据查询结果。该方法中,CPU预先生成与数据库对应的块索引集合,块索引集合的数据量较原始数据和分区数据都要小,可将其全部复制存储于GPU的全局内存中,当GPU全局内存中的块索引均处于非同步状态时,直接利用GPU进程查询,从而避免了现有技术中多次从内存中复制分区数据的过程,缩短了查询时间,提高了查询效率。

【技术实现步骤摘要】
一种数据库中的数据查询方法及装置
本专利技术涉及数据库
,更具体的说是涉及一种数据库中的数据查询方法及装置。
技术介绍
在分析型数据库中,为了加速数据处理,通常要使用多进程/多线程并发技术。尽管CPU的核数越来越多,但其增长速度已不能满足数据处理的需要。而通用图形处理器(GraphicsProcessingUnits,简称GPU)提供了更高的并发处理能力和更大的内存带宽,适用于高度并发、运算密集、控制简单的计算应用。现有技术中利用GPU进行执行数据查询指令的过程中,由于GPU的GlobalMemory(全局内存,也称为显存)大小受限,所以为每个短查询启动GPU线程后都需要将与该查询条件对应的分区数据导入到GPU的全局内存中,当查询条件有多个时,该重复复制过程就会有多次,因此查询过程非常繁琐,并且,将数据从内存复制到GPU全局内存的时延较长,因此,大大降低了利用GPU执行查询指令的效率。
技术实现思路
有鉴于此,本专利技术实施例提供了一种数据库中的数据查询方法及装置,目的在于利用GPU的高并发处理能力加速数据查询过程中的数据过滤,减少GPU与内存间大量的数据复制,提高数据查询效率。为了实现上述目的,本专利技术实施例提供了以下技术方案:本专利技术实施例的第一方面提供一种数据库中的数据查询方法,所述数据库运行于包含有中央处理器CPU和图形处理器GPU的计算机系统之上,所述方法包括:接收查询指令,所述查询指令中包含有一个或多个查询条件;确定预先存储于所述GPU的显存中的块索引集合中的各个块索引的状态,所述块索引集合包括至少一个块索引,且所述块索引集合为所述CPU根据所述数据库中原始数据生成并存储到所述GPU的显存中的;当所述GPU的显存中的各个块索引均为非同步状态时,启动一个或多个GPU进程,依据所述查询条件,过滤所述GPU的显存中的块索引,得到第一块索引查询结果,并根据所述第一块索引查询结果确定最终数据查询结果;其中,所述计算机系统的内存中存储有所述CPU根据所述数据库中的原始数据生成的块索引集合;所述方法还包括:当所述GPU的显存中的块索引中包含有同步状态的块索引时,依据所述查询条件,过滤所述内存中保存的块索引集合中与所述GPU的显存中处于同步状态的块索引对应的块索引,得到第二块索引查询结果;启动一个或多个GPU进程,依据所述查询条件,过滤所述GPU的显存中非同步状态的块索引,得到第三块索引查询结果;依据所述第二块索引查询结果和所述第三块索引查询结果确定最终数据查询结果。结合所述第一方面或所述第一方面的第一种可能实现方式,还提供了所述第一方面的第二种可能实现方式,在确定所述GPU的显存中的块索引集合中的各个块索引的状态之前,还包括:将所述CPU根据所述数据库中的原始数据生成的块索引集合分成多个逻辑页;将所述多个逻辑页复制并连续存储到所述GPU的显存中。结合所述第一方面的第一种可能实现方式,还提供了所述第一方面的第三种可能实现方式,还包括:当所述数据库中的原始数据更新后,更新存储在所述内存中的块索引集合;生成与更新后的块索引集合对应的块索引更新位图,并在所述块索引更新位图中标记所述更新后的块索引。结合所述第一方面的第三种可能实现方式,还提供了所述第一方面的第四种可能实现方式,还包括:根据所述标记后的块索引更新位图,确定存储在所述GPU的显存中的块索引集合中需要更新的块索引,并将所述需要更新的块索引进行更新。结合所述第一方面,还提供了所述第一方面的第五种可能实现方式,所述启动一个或多个GPU进程,依据所述查询条件,过滤所述GPU的显存中的块索引,得到第一块索引查询结果,包括:为每一查询条件分配一个或多个GPU进程;启动各个查询条件所对应的一个或多个GPU进程对所述GPU的显存中的块索引进行过滤,以获得满足所述查询条件的第一块索引查询结果;所述获得满足所述查询条件的第一块索引查询结果包括:从所述GPU的显存中复制所述各个查询条件所对应的GPU进程的运行结果,所述运行结果包括:所述各个查询条件所对应的GPU进程对所述GPU的显存中的块索引进行过滤,获得与所述各个查询条件相对应的块索引过滤数组,并根据所述各个查询条件间的逻辑关系对所述块索引过滤数组进行逻辑运算之后得到的结果。结合所述第一方面的第五种可能实现方式,还提供了所述第一方面的第六种可能实现方式,所述根据所述第一块索引查询结果确定最终数据查询结果包括:将所述第一块索引查询结果与所述计算机系统的内存中的块索引集合进行逻辑运算,得到第一块索引最终查询结果;利用所述第一块索引最终查询结果过滤所述数据库中的原始数据;依据所述查询条件,从过滤后得到的原始数据中查询得到最终查询结果。结合所述第一方面的第一种可能实现方式,还提供了所述第一方面的第七种可能实现方式,所述启动一个或多个GPU进程,依据所述查询条件,过滤所述GPU的显存中非同步状态的块索引,得到第三块索引查询结果,包括:为每一查询条件分配一个或多个GPU进程;启动各个查询条件所对应的一个或多个GPU进程并行对所述GPU的显存中非同步状态的块索引进行过滤,以获得满足所述查询条件的第三块索引查询结果;所述获得满足所述查询条件的第三块索引查询结果,包括:从所述GPU的显存中复制所述各个查询条件所对应的GPU进程的运行结果,所述运行结果包括:所述各个查询条件所对应的GPU进程对所述GPU的显存中的非同步状态的块索引进行过滤,获得与各个查询条件相对应的块索引过滤数组,并根据所述各个查询条件间的逻辑关系对所述块索引过滤数组进行逻辑运算后得到的结果。结合所述第一方面的第七种可能实现方式,还提供了所述第一方面的第八种可能实现方式,所述依据第二块索引查询结果和所述第三块索引查询结果确定最终数据查询结果,包括:将所述第三块索引数据查询结果与所述计算机系统内存中的块索引集合进行逻辑运算,得到第三块索引最终查询结果;将所述第二块索引查询结果和第三块索引最终查询结果进行逻辑运算获得第二最终块索引查询结果;利用所述第二最终块索引查询结果过滤所述数据库中的原始数据;依据所述查询条件,从过滤后得到的原始数据中查询得到最终查询结果。本专利技术实施例的第二方面,提供了一种数据库中的数据查询装置,所述数据库运行于包含有中央处理器CPU和图形处理器GPU的计算机系统中,所述数据查询装置包括:查询指令接收模块,用于接收查询指令,所述查询指令中包含有一个或多个查询条件;状态确定模块,用于确定预先存储于所述GPU的显存中的块索引集合中的各个块索引的状态,所述块索引集合包括至少一个块索引,且所述块索引集合为所述CPU根据所述数据库中原始数据生成并存储到所述GPU的显存中的;第一过滤模块,用于当所述GPU的显存中的各个块索引均为非同步状态时,启动一个或多个GPU进程,依据所述查询条件,过滤所述GPU的显存中的块索引,得到第一块索引查询结果;第一结果确定模块,用于根据所述第一块索引查询结果确定最终数据查询结;其中,所述计算机系统的内存中存储有所述CPU根据所述数据库中的原始数据生成的块索引集合;所述数据查询装置还包括:第二过滤模块,用于当所述待查询块索引中包含有同步状态的块索引时,依据所述查询条件,过滤所述内存中保存的块索引集合中与所述GPU的显存中处于同步状态的块本文档来自技高网...
一种数据库中的数据查询方法及装置

【技术保护点】
一种数据库中的数据查询方法,所述数据库运行于包含有中央处理器CPU和图形处理器GPU的计算机系统之上,其特征在于,所述方法包括: 接收查询指令,所述查询指令中包含有一个或多个查询条件; 确定预先存储于所述GPU的显存中的块索引集合中的各个块索引的状态,所述块索引集合包括至少一个块索引,且所述块索引集合为所述CPU根据所述数据库中原始数据生成并存储到所述GPU的显存中的; 当所述GPU的显存中的各个块索引均为非同步状态时,启动一个或多个GPU进程,依据所述查询条件,过滤所述GPU的显存中的块索引,得到第一块索引查询结果,并根据所述第一块索引查询结果确定最终数据查询结果。

【技术特征摘要】
1.一种数据库中的数据查询方法,所述数据库运行于包含有中央处理器CPU和图形处理器GPU的计算机系统之上,其特征在于,所述方法包括:接收查询指令,所述查询指令中包含有一个或多个查询条件;确定预先存储于所述GPU的显存中的块索引集合中的各个块索引的状态,所述块索引集合包括至少一个块索引,且所述块索引集合为所述CPU根据所述数据库中原始数据生成并存储到所述GPU的显存中的;当所述GPU的显存中的各个块索引均为非同步状态时,启动一个或多个GPU进程,依据所述查询条件,过滤所述GPU的显存中的块索引,得到第一块索引查询结果,并根据所述第一块索引查询结果确定最终数据查询结果;其中,所述计算机系统的内存中存储有所述CPU根据所述数据库中的原始数据生成的块索引集合;所述方法还包括:当所述GPU的显存中的块索引中包含有同步状态的块索引时,依据所述查询条件,过滤所述内存中保存的块索引集合中与所述GPU的显存中处于同步状态的块索引对应的块索引,得到第二块索引查询结果;启动一个或多个GPU进程,依据所述查询条件,过滤所述GPU的显存中非同步状态的块索引,得到第三块索引查询结果;依据所述第二块索引查询结果和所述第三块索引查询结果确定最终数据查询结果。2.根据权利要求1所述的方法,其特征在于,在确定所述GPU的显存中的块索引集合中的各个块索引的状态之前,还包括:将所述CPU根据所述数据库中的原始数据生成的块索引集合分成多个逻辑页;将所述多个逻辑页复制并连续存储到所述GPU的显存中。3.根据权利要求1所述的方法,其特征在于,还包括:当所述数据库中的原始数据更新后,更新存储在所述内存中的块索引集合;生成与更新后的块索引集合对应的块索引更新位图,并在所述块索引更新位图中标记所述更新后的块索引。4.根据权利要求3所述的方法,其特征在于,还包括:根据所述标记后的块索引更新位图,确定存储在所述GPU的显存中的块索引集合中需要更新的块索引,并将所述需要更新的块索引进行更新。5.根据权利要求1所述的方法,其特征在于,所述启动一个或多个GPU进程,依据所述查询条件,过滤所述GPU的显存中的块索引,得到第一块索引查询结果,包括:为每一查询条件分配一个或多个GPU进程;启动各个查询条件所对应的一个或多个GPU进程对所述GPU的显存中的块索引进行过滤,以获得满足所述查询条件的第一块索引查询结果;所述获得满足所述查询条件的第一块索引查询结果包括:从所述GPU的显存中复制所述各个查询条件所对应的GPU进程的运行结果,所述运行结果包括:所述各个查询条件所对应的GPU进程对所述GPU的显存中的块索引进行过滤,获得与所述各个查询条件相对应的块索引过滤数组,并根据所述各个查询条件间的逻辑关系对所述块索引过滤数组进行逻辑运算之后得到的结果。6.根据权利要求5所述的方法,其特征在于,所述根据所述第一块索引查询结果确定最终数据查询结果包括:将所述第一块索引查询结果与所述计算机系统的内存中的块索引集合进行逻辑运算,得到第一块索引最终查询结果;利用所述第一块索引最终查询结果过滤所述数据库中的原始数据;依据所述查询条件,从过滤后得到的原始数据中查询得到最终查询结果。7.根据权利要求1所述的方法,其特征在于,所述启动一个或多个GPU进程,依据所述查询条件,过滤所述GPU的显存中非同步状态的块索引,得到第三块索引查询结果,包括:为每一查询条件分配一个或多个GPU进程;启动各个查询条件所对应的一个或多个GPU进程并行对所述GPU的显存中非同步状态的块索引进行过滤,以获得满足所述查询条件的第三块索引查询结果;所述获得满足所述查询条件的第三块索引查询结果,包括:从所述GPU的显存中复制所述各个查询条件所对应的GPU进程的运行结果,所述运行结果包括:所述各个查询条件所对应的GPU进程对所述GPU的显存中的非同步状态的块索引进行过滤,获得与各个查询条件相对应的块索引过滤数组,并根据所述各个查询条件间的逻辑关系对所述块索引过滤数组进行逻辑运算后得到的结果。8.根据权利要求7所述的方法,其特征在于,所述依据第二块索引查询结果和所述第三块索引查询结果确定最终数据查询结果,包括:将所述第三块索引数据查询结果与所述计算机系统内存中的块索引集合进行逻辑运算,得到第三块索引最终查询结果;将所述第二块索引查询结果和...

【专利技术属性】
技术研发人员:马庆利陈志标
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1