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

技术编号:30046337 阅读:36 留言:0更新日期:2021-09-15 10:47
本发明专利技术公开了一种数据排序方法、装置、电子设备及存储介质。所述方法包括:确定待排序数据加载到内存中所需的排序内存,并申请所述排序内存;若所述排序内存申请成功,则根据分类标志参数的取值确定排序方式;根据所述排序方式对所述待排序数据进行排序。利用该方法,能够计算所需要的排序内存并尽量申请所需要的排序内存,有效避免由于排序内存过小导致的多次读写磁盘,从而影响排序性能,还可以避免由于排序内存过大造成的内存资源浪费。由于排序内存过大造成的内存资源浪费。由于排序内存过大造成的内存资源浪费。

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


[0001]本专利技术实施例涉及数据库
,尤其涉及一种数据排序方法、装置、电子设备及存储介质。

技术介绍

[0002]结构化查询语言(Structured Query Language,SQL)是最重要也是最常用的关系数据库操作语言,ORDER BY子句是SQL标准中用于对数据进行排序处理的子句。在数据库的功能中,排序功能是非常重要的。除了ORDER BY子句和创建二级索引要使用排序功能外,DISTINCT子句和连接操作,也可能会用到排序功能。
[0003]在相关技术中,基于内部排序和多路归并的排序方式进行数据排序,其中一种方法包括以下步骤:步骤1:按照INI参数指定内存块大小分批加载待排序的数据到内存块中,直至待排序数据全部加载完毕,或者内存块全部占满;步骤2:依次对每个内存块中的数据进行内部排序,得到多个有序片段;步骤3:对多个内存块中的有序片段进行一趟或多趟归并排序,排序完成后,判断待排序数据是否加载完毕,若未加载完毕,则将得到的有序片段保存到磁盘中,执行步骤1,否则,判断磁盘中是本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种数据排序方法,其特征在于,所述方法包括:确定待排序数据加载到内存中所需的排序内存,并申请所述排序内存;若所述排序内存申请成功,则根据分类标志参数的取值确定排序方式;根据所述排序方式对所述待排序数据进行排序。2.根据权利要求1所述的方法,其特征在于,在根据分类标志参数的取值确定排序方式之前,还包括:根据预设归并内存总大小和每路数据所占的内存大小确定最大归并路数,所述最大归并路数用于确定使用不同排序方式时对应的归并路数;其中,所述最大归并路数表示所述预设归并内存总大小最多能归并的路数;每路数据为每路包括的设定数量行的数据。3.根据权利要求1所述的方法,其特征在于,若所述分类标志参数的取值为第一预设值,则所述排序方式包括:若所述排序内存大于或等于所述待排序数据所占内存,则对所述待排序数据进行内部排序;若所述排序内存小于所述待排序数据所占内存,则将所述待排序数据分为多次加载到所述排序内存中;将每次加载到所述排序内存中的部分待排序数据进行内部排序生成有序片段,并将所述有序片段保存到磁盘上;对保存到磁盘上的多个有序片段进行一趟归并排序或多趟归并排序。4.根据权利要求1所述的方法,其特征在于,若所述分类标志参数取值为第二预设值,则所述排序方式包括:确定预设行待排序数据占用的内存块大小,并按照所述内存块大小将所述排序内存分块得到多个相同大小的内存块;将所述待排序数据加载到所述内存块中,对所述内存块中的待排序数据进行内部排序得到多个有序片段,根据有序片段的个数确定对有序片段进行一趟归并排序或多趟归并排序。5.根据权利要求4所述的方法,其特征在于,根据有序片段的个数确定对有序片段进行一趟归并排序或多趟归并排序,包括:若所述有序片段个数大于预设值,则对所述有序片段进行多趟归并排序;若所述有序片段个数小于或等于预设值,则对所述有序片段进行一趟归并排序或多趟归并排序。6.根据权利要求5所述的方法,其特征在于,所述若所述有序片段个数大于预设值,则对所述有序片段进行多趟归并排序,包括:若所述有序片段个数大于预设值,根据所述有序片段的个数以及最大归并路数确定所述多趟归并排序中第一趟归并排序对应的归并路数;以所述归并路数分别对所述内存块中的有序片段依次进行归并排序;保存排序后的有序片段;若所述排序后的有序片段全部保存在内存中,则重新确定所述排序后的有序片段个数是否大于预设值,若是,则继续对所述排序后的有序片段进行多趟归并排序,直到排序后的有序片段个数小于或等于设定值或排序后的有序片段全部保存在磁盘上;其中,若排序后
的有序片段个数小于或等于设定值,则重新对所述有序片段进行一趟归并排序或多趟归并排序。7.根据权利要求6所述的方法,其特征在于,所述保存排序后的有序片段,包括:为每一次进行归并排序申请内存空间;若申请内存空间成功,则将本次归并得到的有序片段存放至申请成功的内存空间中,释放参与本次归并的有序片段所占用的内存空间,继续进行下一次归并排序;若申请内存空间失败,则将本次归并得到的有序片段存放至磁盘上,释放参与本次归并的有序片段所占用的内存空间,并将保存到申请内存空间中的有序片段转存到磁盘上,将以后每次进行归并排序后得到的有序片段存放至磁盘上。8.根据权利要求6所述的方法,其特征在于,还包括:若所述排序后的有序片段全部保存在磁盘上,则判断所述待排序数据是否全部加载到内存块中;若是,则对保存在磁盘上的多个有序片段进行一趟归并排序或多趟归并排序;若否,则将未加载的待排序数据加载到内存块中并重新根据对所述内存块中的待排序数据进行内部排序后得到的多个有序片段的个数,确定对所述有序片段...

【专利技术属性】
技术研发人员:扈天阳万伟朱仲颖
申请(专利权)人:上海达梦数据库有限公司
类型:发明
国别省市:

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

1