CN109002467B - 一种基于向量化执行的数据库排序方法及系统 - Google Patents
一种基于向量化执行的数据库排序方法及系统 Download PDFInfo
- Publication number
- CN109002467B CN109002467B CN201810588554.6A CN201810588554A CN109002467B CN 109002467 B CN109002467 B CN 109002467B CN 201810588554 A CN201810588554 A CN 201810588554A CN 109002467 B CN109002467 B CN 109002467B
- Authority
- CN
- China
- Prior art keywords
- sorting
- memory
- line
- group
- output
- 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
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种向量化执行的数据库排序方法,包括:将输入数据向量化为多个输入数据行组;在计算节点的内存中开辟大小为最适粒度的缓冲区;将该输入数据行组依次追加至该缓冲区的末尾空位;仅当该缓冲区满或所有该输入数据行组均已追加至该缓冲区时,将存入该缓冲区的输入数据行组调入该计算节点的处理器缓存进行排序以得到缓存输出数据行组,将该缓存输出数据行组输出至该内存并清空该缓冲区;当该内存满或所有该缓存输出数据行组均已输出至该内存时,将该内存中的该缓存输出行组排序以生成输出数据行组,将该输出数据行组保存至该计算结点的磁盘并释放内存;合并所有该输出数据行组以得到顺序排列的全序输出数据行组。
Description
技术领域
本发明涉及数据管理领域,具体涉及一种基于向量化执行的数据库排序方法及系统。
背景技术
在数据库领域中,排序(Sort)是最为重要的操作之一,广泛被用于实现:分组(grouping)、聚合(aggregation)、连接(join)和shuffle等操作。为了处理任意大小的数据集(可能大于内存容量),数据库中的sort一般均指的是外部排序(external sort)。外部排序算法可分为两个阶段,被称为两阶段多路归并排序(Two-phase,Multiway Merge-sort,TPMMS),其过程如下:
1)基于内存的排序,将需要排序的数据在内存中进行缓存,当无更多可用内存时,进行一次基于内存数据的局部排序,并将结果溢写(spill)到磁盘文件中。
2)当所有需要排序的数据都进行完内存排序,形成多个局部序时,采用多路归并算法同时处理多个局部序,并生成最终的、全局的序。
向量化执行(Vectorized Execution)是最早在分析型数据库MonetDB中提出的,提升分析类(analytical)查询执行性能的执行引擎优化技术。
为了执行一条SQL查询,执行引擎会按照其语义将执行逻辑组织成一棵算子树,如图1A所示,传统执行引擎的算子树每次处理一条记录最终产生结果,而Vectorizedexecution将迭代粒度从一行变成了行组(Record Batch),如图1B所示,在Record Batch内逻辑数据行Record(如图2A所示)逐列组织在一起(如图2B所示),并逐列处理。
通过将迭代粒度变为每次处理Record Batch,Record Batch内按列组织、逐列处理,Vectorized execution被证明可以有效提升分析类查询的执行效率。其优势具体在于减少解释执行开销:从每次处理一行变为每次处理行组(N行),函数调用数目减少为原来的1/N;更好的数据局部性和代码局部性,因而可以更好地利用到CPU Cache;为编译器和CPU提供了进一步自动优化的可能性。
为了在分析型数据库中实现向量执行,其关键问题之一就在于如何高效地实现向量化Sort。
TimSort是结合了合并排序(merge sort)和插入排序(insertion sort)的混合排序算法,这种算法首先识别数据中已经存在的顺序,而后利用这些局部序的知识来更高效地排出全序。概括地说,TimSort分成了两个过程:1)识别(排列)大于最小个数序列(identifyruns),顺序扫描要sort的序列,识别其中的有序部分(或对无序数据进行插入排序),使得有序部分长度达到算法设定的最小值(minimum size);2)将识别出的最小序两两合并(merge sort)最终拿到全序。
针对Sort的优化当前有:
1、Cache-conscious sort(Cache感知的sort):为了充分利用CPU访问数据时,访问CPU cache速度远快于访问内存速度这一特点,AlphaSort将TPMMS的第一阶段内存局部排序进一步划分成了两个部分:基于cache的排序(将到达的数据缓存在cache中,cache满时排局部序并进行记录)和内存中的归并排序(将基于cache的局部序合并成更大的基于内存的局部序)。缺点在于:AlphaSort是基于行,而非recordbatch的;内存中的归并排序在比较时无法避免对内存的随机访问。
2、Vectorized sort:Apache Drill是一个基于大规模并行数据库(MPP)架构的数据分析系统,它采用了向量化执行技术来提升查询分析速度。它的内存排序也是两阶段的:对于到达的vectorized record batch,进行一次局部排序,并将序结果存储在一个数组(sort index array)中(数组的每行表示batch中的行在序中的出现位置),当内存满时,根据合并多个序数组,生成一个基于内存的局部序。缺点在于:record batch粒度不一定是cache最优;在进行内存排序时,按照序数组(sort index array)访问内存中的数据实际上仍是对内存的随机访问,性能很差。
发明内容
针对上述问题,本发明提出一种向量化执行的数据库排序方法,包括:步骤1,将输入数据向量化为多个输入数据行组;步骤2,在计算节点的内存中开辟大小为最适粒度的缓冲区;步骤3,将该输入数据行组依次追加至该缓冲区的末尾空位;仅当该缓冲区满或所有该输入数据行组均已追加至该缓冲区时,将存入该缓冲区的输入数据行组调入该计算节点的处理器缓存进行排序以得到缓存输出数据行组,将该缓存输出数据行组输出至该内存并清空该缓冲区;重复步骤3直到所有该输入数据行组均已完成排序;步骤4,当该内存满或所有该缓存输出数据行组均已输出至该内存时,将该内存中的该缓存输出行组排序以生成输出数据行组,将该输出数据行组保存至该计算结点的磁盘并释放该内存;重复步骤4直到所有该缓存输出数据行组均已完成排序;步骤5,合并所有该输出数据行组以得到顺序排列的全序输出数据行组。
本发明所述的数据库排序方法,其中该最适粒度的大小为当前可用的该处理器缓存的大小除以最大排序/重排宽度所得的值;其中该最大排序/重排宽度为所有该输入数据行组的所有排序列宽度总和与最大单列宽度中的最大值。
本发明所述的数据库排序方法,其中所述步骤3的排序过程具体包括:步骤31,以该缓冲区中的输入数据行组为第一行组,将该第一行组调入该处理器缓存,对该第一行组进行排序以获得对应该第一行组的每行的排序行号并生成第一行号数组;步骤32,根据该第一行号数组对该第一行组进行重新组织,以生成顺序排列的该缓存输出行组;步骤33,将该缓存输出行组输出至内存并清空该缓冲区。
本发明所述的数据库排序方法,其中所述步骤4的排序过程具体包括:步骤41,以该内存中的缓存输出行组为第二行组,对该第二行组进行排序以获得对应该第二行组的每行的排序行号并生成第二行号数组;步骤42,根据该第二行号数组对该第二行组进行重新组织,以生成顺序排列的该输出数据行组;步骤43,将该输出数据行组保存至该磁盘并释放该内存。
本发明所述的数据库排序方法,其中步骤3中采用逐列拷贝将该输入数据行组追加至该缓冲区。
本发明还涉及一种向量化执行的数据库排序系统,其特征在于,包括:
向量化模块,用于将输入数据向量化为多个输入数据行组;
缓冲区模块,用于在处理器缓存中开辟大小为最适粒度的缓冲区;
数据输入模块,用于将该输入数据行组拷贝并依次追加至该缓冲区的末尾空位;
缓冲区数据排序模块,用于对缓冲区内的输入数据行组进行排序;其中仅当该缓冲区满时,对存入该缓冲区的输入数据行组进行排序以得到缓存输出数据行组,将该缓存输出数据行组输出至该内存并清空该缓冲区;
缓冲区数据输出模块,用于将该缓冲区数据排序模块获得的多个该缓存输出数据行组输出至该内存;其中将该缓存输出数据行组依次追加至该内存的末尾空位;
内存数据排序模块,用于对该内存中的缓存输出行组进行排序以生成输出数据行组;其中当该内存满或所有该缓存输出数据行组均已追加至该内存时,将该内存中的缓存输出行组排序以生成输出数据行组。
本发明所述的数据库排序系统,其中该最适粒度的大小为当前可用的该处理器缓存的大小除以最大排序/重排宽度所得的值;其中该最大排序/重排宽度为所有该输入数据行组的所有排序列宽度总和与最大单列宽度中的最大值。
本发明所述的数据库排序方法,其中该缓冲区数据排序模块包括:
缓存排序模块,用于对该缓冲区中的输入数据行组进行排序;其中以该缓冲区中的输入数据行组为第一行组,将该第一行组调入该处理器缓存,并对该第一行组进行排序获得对应该第一行组的每行的排序行号以生成第一行号数组;
缓存重排序模块,用于获取该缓存输出行组;其中根据该第一行号数组对该第一行组进行重新组织,以生成顺序排列的该缓存输出行组;
缓存输出模块,用于将该缓存输出行组输出至内存并清空该缓冲区。
本发明所述的数据库排序系统,其中该内存数据排序模块包括:
内存排序模块,用于对该内存中的缓存输出行组进行排序;其中以该内存中的缓存输出行组为第二行组,对该第二行组进行排序以获得对应该第二行组的每行的排序行号并生成第二行号数组;
内存重排序模块,用于获取该输出数据行组;其中根据该第二行号数组对该第二行组进行重新组织,以生成顺序排列的该输出数据行组;
内存输出模块,用于将该输出数据行组保存至该磁盘并释放该内存。
本发明所述的数据库排序系统,其中该数据输入模块中采用逐列拷贝将将该输入数据行组拷贝至该缓冲区。
附图说明
图1A是传统执行引擎的算子树处理记录示意图。
图1B是向量化执行引擎的算子树处理记录示意图。
图2A、图2B是Record Batch内部数据结构示意图。
图3是本发明的一种向量化执行的数据库排序方法流程图。
图4是本发明的一种向量化执行的数据库排序方法缓存排序步骤流程图。
图5是本发明的一种向量化执行的数据库排序方法内存排序步骤流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明提出的基于向量化执行的数据库排序方法及系统进一步详细说明。应当理解,此处所描述的具体实施方法仅仅用以解释本发明,并不用于限定本发明。
本发明的目的是解决使用向量化(Vectorized execution)加速数据查询引擎时如何高效进行外部排序(external sort)的内存排序部分(in-memory sort)问题,从而提出了一种CPU cache友好的向量化排序算法。
图3是本发明的一种向量化执行的数据库排序方法流程图。如图3所示,本发明的排序方法主要包括缓存排序(in cache sort)步骤和内存排序步骤,具体包括:
步骤S1,将需要排序的数据(输入数据)划分为多个输入数据行组,以使排序过程的处理对象不再是单独的数据行,而是向量化的数据行组;
步骤S2,在计算结点的内存中开辟缓冲区,其中缓冲区的排序粒度大小为最适粒度,最适粒度为当前可用处理器缓存的大小除以最大排序/重排宽度所得的值,最大排序/重排宽度为所有输入数据行组的所有排序列宽度总和与最大单列宽度中的最大值;
步骤S3,将向量化的输入数据行组逐列拷贝至缓冲区,并依次追加至缓冲区的末尾空位;当缓冲区满时,或所有剩余的输入数据行组均已拷贝至缓冲区时,计算节点的处理器将存入该缓冲区的输入数据行组调入计算节点的处理器缓存进行排序以得到缓存输出数据行组,将该缓存输出数据行组输出至该内存并清空该缓冲区;
步骤S4,重复步骤S3,直到所有向量化的输入数据行组均经过计算节点的处理器的处理完成排序,这样就生成了一个或多个缓存输出数据行组;
步骤S5,一个或多个缓存输出数据行组输出至计算节点的内存,当内存满或所有该缓存输出数据行组均已输出至该内存时,将内存中的缓存输出行组排序以生成输出数据行组,将该输出数据行组保存至该计算结点的磁盘并释放内存;
步骤S6,重复步骤S5直到所有缓存输出数据行组均经过计算节点的处理器的处理完成排序,这样就生成了一个或多个数据数据行组;
步骤S7,合并所有该输出数据行组以得到顺序排列的全序输出数据行组。
图4是本发明的一种向量化执行的数据库排序方法缓存排序步骤流程图。如图4所示,缓存排序步骤(步骤S3)采用TimSort方法,包括:
步骤S31,当缓冲区满,或所有剩余的输入数据行组均已拷贝至缓冲区时,对缓冲区中的输入数据行组进行排序,获得对应输入数据行组的每行的排序行号,并将排序行号生成行号数组;如对输入数据行组CBDA进行排序得到行号数组3241;
步骤32,根据行号数组对缓冲区中的输入数据行组进行重新组织,生成顺序排列的缓存输出行组;如根据行号数组3241,将输入数据行组CBDA重新组织为缓存输出行组ABCD;
步骤33,将缓存输出行组输出至计算节点的内存并清空该缓冲区。
图5是本发明的一种向量化执行的数据库排序方法内存排序步骤流程图。如图5所示,内存排序步骤(步骤S5)也采用TimSort方法,包括:
步骤S51,当计算节点的内存满,或所有剩余的缓存输出行组均已拷贝至内存时,对内存中的缓存输出行组进行排序,获得对应缓存输出行组的每行的排序行号,并将排序行号生成行号数组;
步骤52,根据行号数组对内存中的缓存输出行组进行重新组织,生成顺序排列的输出数据行组;
步骤53,将输出数据行组保存至计算节点的磁盘并释放内存。
具体来说,本发明包括在排序前缓存多个输入数据行组(record batch)至最优CPU Cache排序粒度(最适粒度)的缓存机制,包括:
1、CPU cache内最适排序粒度的计算方法——最适粒度(即每次缓存内排序记录数)等于当前可用Cache大小除以最大排序/重排行宽,其中最大排序/重排行宽为所有排序列宽度和与最大单列宽度的较大值;
2、聚集多个record batch至最适粒度的缓存方式:在内存中开辟一块大小为最适粒度的record batch做缓冲区,对到来需要排序的record batch,追加至缓冲区末尾空位,若缓冲区已满,则将当前缓冲区排序并清空缓冲区,若缓冲区不满,则暂不排序;
3、将record batch拷贝至缓冲区的方式为逐列拷贝,以获得更高的拷贝效率;
4、采用更优的排序算法加速in cache排序:由于排序列通常会有有序、近似有序的特点,因此选用TimSort,而非传统的QuickSort算法,以充分利用数据本身有序性,加速对缓冲区的in cache排序;
5、将排序结果输出为行号数组(sort index array),按下标逐一遍历数组可得到按排序列的数据访问;
6、根据排序结果(行号数组)对缓冲区数据进行重排的机制:按照sort indexarray,将缓冲区中数据逐列重排,形成一个在排序列上实际有序的新record batch,并将这个record batch保存在内存中。
本发明还包括更优的排序算法加速内存中(in memory)排序,包括:
1、在内存满时,其中保存了大量的、由3生成的局部有序的record batch,为了生成一个内存全局序,采用opt-TimSort算法以加速排序;原始的TimSort算法分为两步,识别有序部分和归并排序。Opt-TimSort针对已知每个局部序特性,避免timsort的识别序过程,进一步加速timsort排序。
本发明提出的vectorized external sort,解决了现有的外部排序算法的内存排序中对CPU cache不友好的问题。通过缓存到达数据至最优cache排序粒度、选用优化的排序算法、重排数据等一系列方法,实现了CPU cache友好的外部排序算法。图5展示了vectorized sort的内存排序流程。
如图5所示,本发明的内存排序分成两个阶段,in cache的排序和in memory的局部序的合并:数据首先在cache中进行聚集、到达最佳粒度后进行in-cache TimSort,并根据sort得出的序重排(re-arrange)数据,将重排后的数据缓存在内存中,最后,当无更多可用内存时,进行局部序的合并,得到内存中数据的全序。
本发明的目的是:
1、找到最优的in cache排序粒度,缓存到达的record batch至最优粒度;
2、高效进行in cache排序,采用TimSort最大利用数据潜在序;
3、in cache排序后数据的重新组织,按照序关系重组cache中数据,使得后续对数据的访问顺序化;
4、内存排序的优化,利用记录的cache数据的已有序,避免序的二次识别。
实例1:缓存数据至最佳cache排序粒度
在向量化引擎中,数据的迭代粒度(record batch)并不是最适的in cache sort粒度。因此需要在in cache sort之前进行数据的聚合,最适的排序粒度(子不是粒度)为:
由于参与排序的列可能有多个,因此要保证所有排序列vector可以同时放入cache,而在后续重排(reorder)过程中,是逐列进行的,因此也要保证最大的列vector可以放入cache,因此由如上的最适排序粒度。
实例2:优化的in cache排序
利用TimSort算法对in cache数据进行排序,排序结果输出为一个sort indexarray。
实例3:in cache数据的重新组织
根据sort index array,逐vector重排cache中的数据,产生的结果是实际有序的数据(之后不再需要sort index array)。
实例4:优化的内存数据排序
修改TimSort算法,将经过cache排序的局部序的run标注给TimSort,使得TimSort可以直接进行merge sort部分。
Claims (8)
1.一种向量化执行的数据库排序方法,其特征在于,包括:
步骤1,将输入数据向量化为多个输入数据行组;
步骤2,在计算节点的内存中开辟大小为最适粒度的缓冲区;该最适粒度的大小为该计算节点的处理器缓存大小除以最大排序/重排宽度所得的值;其中该最大排序/重排宽度为所有该输入数据行组的所有排序列宽度总和与最大单列宽度中的最大值;
步骤3,将该输入数据行组依次追加至该缓冲区的末尾空位;仅当该缓冲区满或所有该输入数据行组均已追加至该缓冲区时,将存入该缓冲区的输入数据行组调入该处理器缓存进行排序以得到缓存输出数据行组,将该缓存输出数据行组输出至该内存并清空该缓冲区;重复步骤3直到所有该输入数据行组均已完成排序;
步骤4,当该内存满或所有该缓存输出数据行组均已输出至该内存时,将该内存中的该缓存输出行组排序以生成输出数据行组,将该输出数据行组保存至该计算节点的磁盘并释放该内存;重复步骤4直到所有该缓存输出数据行组均已完成排序;
步骤5,合并所有该输出数据行组以得到顺序排列的全序输出数据行组。
2.如权利要求1所述的数据库排序方法,其特征在于,所述步骤3的排序过程具体包括:
步骤31,以该缓冲区中的输入数据行组为第一行组,将该第一行组调入该处理器缓存,并对该第一行组进行排序获得对应该第一行组的每行的排序行号以生成第一行号数组;
步骤32,根据该第一行号数组对该第一行组进行重新组织,以生成顺序排列的该缓存输出行组;
步骤33,将该缓存输出行组输出至内存并清空该缓冲区。
3.如权利要求1所述的数据库排序方法,其特征在于,所述步骤4的排序过程具体包括:
步骤41,以该内存中的缓存输出行组为第二行组,对该第二行组进行排序以获得对应该第二行组的每行的排序行号并生成第二行号数组;
步骤42,根据该第二行号数组对该第二行组进行重新组织,以生成顺序排列的该输出数据行组;
步骤43,将该输出数据行组保存至该磁盘并释放该内存。
4.如权利要求1所述的数据库排序方法,其特征在于,步骤3中采用逐列拷贝将该输入数据行组追加至该缓冲区。
5.一种向量化执行的数据库排序系统,其特征在于,包括:
向量化模块,用于将输入数据向量化为多个输入数据行组;
缓冲区模块,用于在计算节点的内存中开辟大小为最适粒度的缓冲区;该最适粒度的大小为该计算节点的处理器缓存大小除以最大排序/重排宽度所得的值;其中该最大排序/重排宽度为所有该输入数据行组的所有排序列宽度总和与最大单列宽度中的最大值;
数据输入模块,用于将该输入数据行组拷贝并依次追加至该缓冲区的末尾空位;
缓冲区数据排序模块,用于对缓冲区内的输入数据行组进行排序;其中仅当该缓冲区满时,对存入该缓冲区的输入数据行组进行排序以得到缓存输出数据行组,将该缓存输出数据行组输出至该内存并清空该缓冲区;
缓冲区数据输出模块,用于将该缓冲区数据排序模块获得的多个该缓存输出数据行组输出至该内存;其中将该缓存输出数据行组依次追加至该内存的末尾空位;
内存数据排序模块,用于对该内存中的缓存输出行组进行排序以生成输出数据行组;其中当该内存满或所有该缓存输出数据行组均已追加至该内存时,将该内存中的缓存输出行组排序以生成输出数据行组。
6.如权利要求5所述的数据库排序系统,其特征在于,该缓冲区数据排序模块包括:
缓存排序模块,用于对该缓冲区中的输入数据行组进行排序;其中以该缓冲区中的输入数据行组为第一行组,将该第一行组调入该处理器缓存,并对该第一行组进行排序获得对应该第一行组的每行的排序行号以生成第一行号数组;
缓存重排序模块,用于获取该缓存输出行组;其中根据该第一行号数组对该第一行组进行重新组织,以生成顺序排列的该缓存输出行组;
缓存输出模块,用于将该缓存输出行组输出至内存并清空该缓冲区。
7.如权利要求5所述的数据库排序系统,其特征在于,该内存数据排序模块包括:
内存排序模块,用于对该内存中的缓存输出行组进行排序;其中以该内存中的缓存输出行组为第二行组,对该第二行组进行排序以获得对应该第二行组的每行的排序行号并生成第二行号数组;
内存重排序模块,用于获取该输出数据行组;其中根据该第二行号数组对该第二行组进行重新组织,以生成顺序排列的该输出数据行组;
内存输出模块,用于将该输出数据行组保存至该计算节点的磁盘并释放该内存。
8.如权利要求5所述的数据库排序系统,其特征在于,该数据输入模块中采用逐列拷贝将该输入数据行组拷贝至该缓冲区。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810588554.6A CN109002467B (zh) | 2018-06-08 | 2018-06-08 | 一种基于向量化执行的数据库排序方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810588554.6A CN109002467B (zh) | 2018-06-08 | 2018-06-08 | 一种基于向量化执行的数据库排序方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109002467A CN109002467A (zh) | 2018-12-14 |
CN109002467B true CN109002467B (zh) | 2021-04-27 |
Family
ID=64600568
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810588554.6A Active CN109002467B (zh) | 2018-06-08 | 2018-06-08 | 一种基于向量化执行的数据库排序方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109002467B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112861145B (zh) * | 2021-01-06 | 2023-12-12 | 华控清交信息科技(北京)有限公司 | 一种数据处理方法、装置和用于数据处理的装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5852826A (en) * | 1996-01-26 | 1998-12-22 | Sequent Computer Systems, Inc. | Parallel merge sort method and apparatus |
CN103440246A (zh) * | 2013-07-19 | 2013-12-11 | 百度在线网络技术(北京)有限公司 | 用于MapReduce的中间结果数据排序方法及系统 |
CN104331497A (zh) * | 2014-11-19 | 2015-02-04 | 中国科学院自动化研究所 | 一种利用向量指令并行处理文件索引的方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7454420B2 (en) * | 2004-11-08 | 2008-11-18 | Sas Institute Inc. | Data sorting method and system |
-
2018
- 2018-06-08 CN CN201810588554.6A patent/CN109002467B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5852826A (en) * | 1996-01-26 | 1998-12-22 | Sequent Computer Systems, Inc. | Parallel merge sort method and apparatus |
CN103440246A (zh) * | 2013-07-19 | 2013-12-11 | 百度在线网络技术(北京)有限公司 | 用于MapReduce的中间结果数据排序方法及系统 |
CN104331497A (zh) * | 2014-11-19 | 2015-02-04 | 中国科学院自动化研究所 | 一种利用向量指令并行处理文件索引的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109002467A (zh) | 2018-12-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10558495B2 (en) | Variable sized database dictionary block encoding | |
US8165988B2 (en) | Fast batch loading and incremental loading of data into a database | |
US8862625B2 (en) | Accessing data in a column store database based on hardware compatible indexing and replicated reordered columns | |
US11308053B2 (en) | Buffered data-loading in column-partitioned database tables | |
JP2015532749A (ja) | 集約/グループ化動作:フィルタリング方法のハードウェア実装 | |
US8423499B2 (en) | Search device and search method | |
Sukhwani et al. | Database analytics: A reconfigurable-computing approach | |
US11526960B2 (en) | GPU-based data join | |
CN107209768A (zh) | 用于数据集的可扩展排序的方法和设备 | |
CN112000846A (zh) | 基于gpu分组lsm树索引的方法 | |
Sukhwani et al. | Large payload streaming database sort and projection on FPGAs | |
CN109002467B (zh) | 一种基于向量化执行的数据库排序方法及系统 | |
US10997175B2 (en) | Method for predicate evaluation in relational database systems | |
Nassar et al. | Chi squared feature selection over Apache Spark | |
Kuno et al. | Deferred maintenance of indexes and of materialized views | |
KR101081726B1 (ko) | GPU를 이용한 R-tree에서의 범위 질의의 병렬 처리 방법 | |
US7644083B1 (en) | Efficiently performing inequality joins | |
Wu et al. | Efficiently Processing Large Relational Joins on GPUs | |
CN107807952B (zh) | 一种基于Spark的Apriori并行化方法、系统及装置 | |
CN108920533B (zh) | 一种向量化的整体同步并行计算方法及系统 | |
Shen et al. | Using vectorized execution to improve SQL query performance on spark | |
CN117112238B (zh) | 一种olap数据库排序算子中的高性能归并方法 | |
US20230401034A1 (en) | Methods, Systems, and Circuits for Coordinated Optimization in In-Memory Sorting | |
Graefe | Priority queues for database query processing | |
JPH10269225A (ja) | データベース分割方法 |
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 |