数据排序方法、装置、电子设备及存储介质制造方法及图纸

技术编号:35230098 阅读:55 留言:0更新日期:2022-10-15 10:51
本申请实施例涉及一种数据排序方法、装置、电子设备及存储介质,方法包括:由待排序标识集得到T个子标识集并启动与其对应的T个线程;根据子标识集中标识分布特征将各个子标识集划分为N个区间,将待排序标识集对应的待排序数据集存储到本地非一致内存访问节点;将各个子标识集中标识分布特征相同的区间进行组合,得到N个目标子标识集,针对任一线程启动C个协程交错执行;针对任一协程,确定协程对应的目标子标识集,采用单指令多数据流向量化方式对目标子标识集循环筛选出最小或最大标识,并从本地非一致内存访问节点中获取其对应的数据,以组成N个有序目标子数据集,合并得到有序数据集。可同时解决待排序数据排序过程中遇到的多个瓶颈。到的多个瓶颈。到的多个瓶颈。

【技术实现步骤摘要】
数据排序方法、装置、电子设备及存储介质


[0001]本申请实施例涉及计算机
,尤其涉及一种数据排序方法、装置、电子设备及存储介质。

技术介绍

[0002]现代硬件的发展为内存数据库执行数据带来新的挑战,多核或者众核机器大大提升了计算速度,NUMA(Non Uniform Memory Access,非一致内存访问)架构使得单机算力能够水平扩展,同时访问内存的延迟和计算延迟的差距越来越大,并且单机不同非一致内存访问节点内存的访问速度也不对称。而数据库的执行性能并不能完全受益于当代计算机架构中的强大算力,因为数据库中的算子并没有复杂计算,更多是移动数据,反而使得内存访问的瓶颈越明显。
[0003]内存访问的瓶颈主要体现在两个方面:首先是跨非一致内存访问节点的内存访问比访问本地非一致内存访问节点慢2倍左右,频繁的跨非一致内存访问节点内存访问会降低CPU(central processing unit,中央处理器)处理效率。此外,本地非一致内存访问节点内存访问面临cache misses瓶颈,即CPU所要访问的数据在高速缓存中查询不到,需要频繁访问内存。而访问内存的代价比CPU计算的代价高出两个数量级。类似于木桶原理,当把内存访问的瓶颈消除后,branch misses(预测错误的分支指令数)又会相继成为明显瓶颈。
[0004]具体对于排序算子来说,在排序过程中需要拿到所有数据后才能进行排序,首先对所有数据的键值进行排序,然后根据键值的顺序调整所有数据的顺序。具体的,在调整数据过程中,根据键值顺序获取数据时,将整条数据复制到新的顺序对应的位置,在复制数据过程存在大量的随机访问,带来大量的cache misses和跨非一致内存访问节点访问数据,产生了较大的延迟,且在执行排序过程中,CPU采用分支预测执行,一旦分支预测失败,大量的指令需要重新执行,从而带来branch misses的开销。

技术实现思路

[0005]鉴于此,为解决上述在调整数据过程中,根据键值顺序获取数据时,将整条数据复制到新的顺序的位置,在复制数据过程存在大量的随机访问,带来大量的cache misses和跨非一致内存访问节点访问的延迟,且在执行排序过程中,CPU采用分支预测执行,一旦分支预测失败,大量的指令需要重新执行,从而带来branch misses的技术问题,本申请实施例提供一种数据排序方法、装置、电子设备及存储介质。
[0006]第一方面,本申请实施例提供一种数据排序方法,所述方法包括:对待排序标识集进行切分,得到T个子标识集,并启动T个线程,所述线程与所述子标识集一一对应;针对任一所述子标识集,根据所述子标识集中标识分布特征对所述子标识集进行划分,得到N个区间,将所述待排序标识集对应的待排序数据集存储到本地非一致内存访问节点;
将各个所述子标识集中标识分布特征相同的区间进行组合,得到N个目标子标识集,针对任一所述线程启动C个协程,其中,所述C个协程交错执行;针对任一协程,确定所述协程对应的目标子标识集,采用单指令多数据流向量化方式对目标子标识集循环筛选出最小或最大标识,以获取本地非一致内存访问节点中所述最小或最大标识对应的数据,组成有序目标子数据集,以得到N个有序目标子数据集;将所述N个有序目标子数据集进行合并,得到所述待排序标识集对应的待排序数据的有序数据集。
[0007]在一个可选的实施方式中,所述针对任一所述子标识集,根据所述子标识集中标识分布特征对所述子标识集进行划分,得到N个区间,将所述待排序标识集对应的待排序数据集存储到本地非一致内存访问节点,包括:针对任一所述线程,对所述线程对应的所述子标识集进行排序,以得到T个有序子标识集;统计T个所述有序子标识集的标识分布特征,根据T个所述有序子标识集的标识分布特征,确定N个区间范围;针对任一所述有序子标识集,根据N个所述区间范围对所述有序子标识集进行划分,得到N个区间;对所述N个区间进行切分,得到M个区间集;将各个有序子标识集中区间范围相同的区间集进行组合,得到M个所述区间范围相同的区间集的第一集合,将任一所述第一集合对应的数据存储到一个本地非一致内存访问节点。
[0008]在一个可选的实施方式中,所述对所述N个区间进行切分,得到M个区间集,包括:确定一个本地非一致内存访问节点的存储空间,根据所述存储空间对所述N个区间进行切分,得到M个区间集。
[0009]在一个可选的实施方式中,所述N个目标子标识集包括:N个标识数量分布均匀的目标子标识集。
[0010]在一个可选的实施方式中,所述针对任一协程,确定所述协程对应的目标子标识集,采用单指令多数据流向量化方式对目标子标识集循环筛选出最小或最大标识,以获取本地非一致内存访问节点中所述最小或最大标识对应的数据,组成有序目标子数据集,包括:针对任一协程,确定所述协程对应的目标子标识集,采用单指令多数据流向量化方式对目标子标识集循环筛选出最小或最大标识;根据所述最小或最大标识执行数据预取指令,并暂停所述协程;当所述数据预取指令将所述最小或最大标识对应的数据预取成功时,重新执行所述协程;从所述本地非一致内存访问节点中获取所述数据预取指令预取到的所述最小或最大标识对应的数据,组成有序目标子数据集。
[0011]在一个可选的实施方式中,所述根据所述最小或最大标识执行数据预取指令,并暂停所述协程之后,还包括:按照预设的优先级通知所述协程对应的线程中启动的第一协程,以使所述第一协
程执行所述确定所述协程对应的目标子标识集,采用单指令多数据流向量化方式对目标子标识集循环筛选出最小或最大标识,以获取本地非一致内存访问节点中所述最小或最大标识对应的数据,组成有序目标子数据集的步骤。
[0012]在一个可选的实施方式中,所述确定所述协程对应的目标子标识集,采用单指令多数据流向量化方式对目标子标识集循环筛选出最小或最大标识,以获取本地非一致内存访问节点中所述最小或最大标识对应的数据,组成有序目标子数据集,包括:确定所述协程对应的目标子标识集,确定所述目标子标识集中的T个区间,确定所述单指令多数据流向量化方式对应的一个指令能够同时处理的数据的第一数量;生成一棵叶子结点数量为T的二叉树,其中,所述目标子标识集中的T个区间与T个叶子结点一一对应,所述二叉树的各个节点中可存放的标识数量为所述第一数量;迭代执行以下步骤,直至得到所述目标子标识集对应的有序目标子数据集:确定当前迭代过程中参与归并的叶子结点,从所述参与归并的叶子结点对应的区间中获取第二数量的最小或最大标识;从所述参与归并的叶子结点开始,按照从左到右或从右到左的顺序两两归并,直至得到当前迭代过程中的第一数量的最小或最大的有序标识;根据所述第一数量的最小或最大的有序标识执行数据预取指令,并暂停所述协程;当所述数据预取指令将所述第一数量的最小或最大的有序标识对应的数据预取成功时,重新执行所述协程;从所述本地非一致内存访问节点中获取所述数据预取指令预取到的第一数量的最小或最大的有序标识对应的数据,以组成有序目标子数据集;根据所述第一数量的最小或最大的有序本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据排序方法,其特征在于,所述方法包括:对待排序标识集进行切分,得到T个子标识集,并启动T个线程,所述线程与所述子标识集一一对应;针对任一所述子标识集,根据所述子标识集中标识分布特征对所述子标识集进行划分,得到N个区间,将所述待排序标识集对应的待排序数据集存储到本地非一致内存访问节点;将各个所述子标识集中标识分布特征相同的区间进行组合,得到N个目标子标识集,针对任一所述线程启动C个协程,其中,所述C个协程交错执行;针对任一协程,确定所述协程对应的目标子标识集,采用单指令多数据流向量化方式对目标子标识集循环筛选出最小或最大标识,以获取本地非一致内存访问节点中所述最小或最大标识对应的数据,组成有序目标子数据集,以得到N个有序目标子数据集;将所述N个有序目标子数据集进行合并,得到所述待排序标识集对应的待排序数据的有序数据集。2.根据权利要求1所述的方法,其特征在于,所述针对任一所述子标识集,根据所述子标识集中标识分布特征对所述子标识集进行划分,得到N个区间,将所述待排序标识集对应的待排序数据集存储到本地非一致内存访问节点,包括:针对任一所述线程,对所述线程对应的所述子标识集进行排序,以得到T个有序子标识集;统计T个所述有序子标识集的标识分布特征,根据T个所述有序子标识集的标识分布特征,确定N个区间范围;针对任一所述有序子标识集,根据N个所述区间范围对所述有序子标识集进行划分,得到N个区间;对所述N个区间进行切分,得到M个区间集;将各个有序子标识集中区间范围相同的区间集进行组合,得到M个所述区间范围相同的区间集的第一集合,将任一所述第一集合对应的数据存储到一个本地非一致内存访问节点。3.根据权利要求2所述的方法,其特征在于,所述对所述N个区间进行切分,得到M个区间集,包括:确定一个本地非一致内存访问节点的存储空间,根据所述存储空间对所述N个区间进行切分,得到M个区间集。4.根据权利要求1所述的方法,其特征在于,所述N个目标子标识集包括:N个标识数量分布均匀的目标子标识集。5.根据权利要求1所述的方法,其特征在于,所述针对任一协程,确定所述协程对应的目标子标识集,采用单指令多数据流向量化方式对目标子标识集循环筛选出最小或最大标识,以获取本地非一致内存访问节点中所述最小或最大标识对应的数据,组成有序目标子数据集,包括:针对任一协程,确定所述协程对应的目标子标识集,采用单指令多数据流向量化方式对目标子标识集循环筛选出最小或最大标识;根据所述最小或最大标识执行数据预取指令,并暂停所述协程;
当所述数据预取指令将所述最小或最大标识对应的数据预取成功时,重新执行所述协程;从所述本地非一致内存访问节点中获取所述数据预取指令预取到的所述最小或最大标识对应的数据,组成有序目标子数据集。6.根据权利要求5所述的方法,其特征在于,所述根据所述最小或最大标识执行数据预取指令,并暂停所述协程之后,还包括:按照预设的优先级通知所述协程对应的线程中启动的第一协程,以使所述第一协程执行所述确定所述协程对应的目标子标识集,采用单指令多数据流向量化方式对目标子标识集循环筛选出最小或最大标识,以获取本地非一致内存访问节点中所述最小或最大标识对应的数据,组成有序目标子数据集的步骤。7.根据权利要求1所述的方法,其特征在于,所述确定所述协程对应的目标子标识集,采用单指令多数据流向量化方式对目标子标识集循环筛选出最小或最大标识,以获取本地非一致内存访问节点中所述最小或最大标识对应的数据,组成有序目标子数据集,包括:确定所述协程对应的目标子标识集,确定所述目标子标识集中的T个区间,确定所述单指令多数据流向量化方式对应的一个指令能够同时处理的数据的第一数量;...

【专利技术属性】
技术研发人员:方祝和
申请(专利权)人:北京镜舟科技有限公司
类型:发明
国别省市:

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

1