CN114546943A - 基于多进程调用的数据库文件排序优化方法及装置 - Google Patents
基于多进程调用的数据库文件排序优化方法及装置 Download PDFInfo
- Publication number
- CN114546943A CN114546943A CN202210156759.3A CN202210156759A CN114546943A CN 114546943 A CN114546943 A CN 114546943A CN 202210156759 A CN202210156759 A CN 202210156759A CN 114546943 A CN114546943 A CN 114546943A
- Authority
- CN
- China
- Prior art keywords
- data
- sub
- sequence
- sorting
- reading
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 252
- 238000005457 optimization Methods 0.000 title claims abstract description 14
- 230000008569 process Effects 0.000 claims abstract description 209
- 238000012163 sequencing technique Methods 0.000 claims description 40
- 238000004590 computer program Methods 0.000 claims description 6
- 230000001186 cumulative effect Effects 0.000 claims description 4
- FFBHFFJDDLITSX-UHFFFAOYSA-N benzyl N-[2-hydroxy-4-(3-oxomorpholin-4-yl)phenyl]carbamate Chemical compound OC1=C(NC(=O)OCC2=CC=CC=C2)C=CC(=C1)N1CCOCC1=O FFBHFFJDDLITSX-UHFFFAOYSA-N 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于多进程调用的数据库文件排序优化方法及装置,包括:根据排序内存的大小,按照待排序的数据文件的原始顺序,将待排序的数据文件,划分出多个子块,并划分为多部分子数据;确定该部分子数据的中间位置,并为该部分子数据配置两个进程;该进程执行如下步骤:从该子块的至少两个位置分别选取一个数据段,判断该至少两个数据段的数据顺序是否一致;若至少两个数据段的数据顺序一致,且与当前数据读取的方向相反,则改变该进程读取该子块的顺序;将各进程输出的文件序列按照所述原始顺序进行整理。在排序过程中通过改变进程的数据读取顺序,能够保证每个进程的数据排序效率,尤其适用于大容量、多子块的数据排序场景。
Description
技术领域
本发明涉及数据库技术领域,尤其涉及一种基于多进程调用的数据库文件排序优化方法及装置。
背景技术
在数据库领域中,排序(Sort)是最为重要的操作之一,广泛被用于实现:分组(grouping)、聚合(aggregation)、连接(join)和shuffle等操作。为了处理任意大小的数据集(可能大于内存容量),数据库中的sort一般均指的是外部排序(external sort)。外部排序算法可分为两个阶段,其过程如下:
基于内存的排序,将需要排序的数据在内存中进行缓存,当无更多可用内存时,进行一次基于内存数据的局部排序,并将结果溢写(spill)到磁盘文件中。
当所有需要排序的数据都进行完内存排序,形成多个局部序时,归并多个局部序,并生成最终的、全局的序。
而现有的数据库的外部排序需要读取大量的外部数据,导致了数据库排序的过程冗长,缓慢。
发明内容
本发明实施例提供一种多进程负载均衡的数据库文件排序优化方法及装置,极大提高外部排序的效率,并且充分利用现有的硬件优势,缩短外部排序的时间。
本发明实施例提出一种基于多进程调用的数据库文件排序优化方法,包括:
基于参与排序的进程的数量为各进程分配固定大小的排序内存;
根据排序内存的大小,按照待排序的数据文件的原始顺序,将待排序的数据文件,划分出多个子块,并将待排序的数据文件,按照所述原始顺序,划分为多部分子数据,每部分子数据包括至少两个子块;
确定该部分子数据的中间位置,并为该部分子数据配置两个进程,且其中一个进程从该中间位置向该部分子数据的数据首依序读取一个子块,另一个进程从该中间位置向该部分子数据的数据尾依序读取一个子块;
该进程执行如下步骤:
从该子块的至少两个位置分别选取一个数据段,判断该至少两个数据段的数据顺序是否一致;
若至少两个数据段的数据顺序一致,且与当前数据读取的方向相反,则改变该进程读取该子块的顺序,否则按照当前读取顺序,将该子块读取到内存,并执行排序;
将各进程输出的文件序列按照所述原始顺序进行整理,以获得排序结果。
可选的,还包括:为各进程配置一计时器,并基于该计时器记录该进程执行排序的累积时长;
基于该计时器所记录的累积时长与临近进程对应的计时器所记录的累积时长进行对比,其中所述临近进程为执行相邻部分子数据的排序,且初始数据读取方向与该进程相对的进程;
根据比对结果,基于该部分子数据与相邻部分子数据动态调整该进程的排序任务。
可选的,基于该计时器所记录的累积时长与临近进程对应的计时器所记录的累积时长进行对比包括:
基于对应的累积时长确定该进程与临近进程处理单个子块的平均耗时,并计算该进程的平均耗时与临近进程的平均耗时的偏差;
在所述偏差小于第一预设阈值的情况下,按照待排序的数据文件的原始顺序,依次将相邻部分子数据的子块确定为该进程的排序任务。
可选的,从该子块的至少两个位置分别选取一个数据段包括:
随机从该子块的至少两个位置选取一个数据段,并基于该进程的数据读取方向读取该两个位置的数据段。
可选的,判断该至少两个数据段的数据顺序是否一致包括:
以该进程的数据读取方向为正方向,不执行排序,确定该数据段中与正方向相同顺序的数据占该数据段的比例;
在所述比例超过第一预设阈值的情况下,确定该数据段的数据顺序;
对比至少两个数据段数据顺序,以确定该至少两个数据段的数据顺序是否一致。
可选的,将各进程输出的文件序列按照所述原始顺序进行整理包括:
调用多个归并进程,通过该归并进程接收并处理该排序进程输出的文件序列,以获得相应的子文件;
整理各子文件,以获得所述排序文件。
可选的,将待排序的数据文件,按照所述原始顺序,所划分出的多部分子数据的大小相同。
本发明实施例还提出一种基于多进程调用的数据库文件排序优化装置,包括处理器,所述处理器具有多个进程,所述处理器被配置为:
基于参与排序的进程的数量为各进程分配固定大小的排序内存;
根据排序内存的大小,按照待排序的数据文件的原始顺序,将待排序的数据文件,划分出多个子块,并将待排序的数据文件,按照所述原始顺序,划分为多部分子数据,每部分子数据包括至少两个子块;
确定该部分子数据的中间位置,并为该部分子数据配置两个进程,且其中一个进程从该中间位置向该部分子数据的数据首依序读取一个子块,另一个进程从该中间位置向该部分子数据的数据尾依序读取一个子块;
该进程执行如下步骤:
从该子块的至少两个位置分别选取一个数据段,判断该至少两个数据段的数据顺序是否一致;
若至少两个数据段的数据顺序一致,且与当前数据读取的方向相反,则改变该进程读取该子块的顺序,否则按照当前读取顺序,将该子块读取到内存,并执行排序;
将各进程输出的文件序列按照所述原始顺序进行整理,以获得排序结果。
本发明实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现前述各实施例所述的基于多进程调用的数据库文件排序优化方法的步骤。
本发明实施例通过将外部排序利用多个进程来执行,并且在排序过程中通过改变进程的数据读取顺序,能够保证每个进程的数据排序效率,并且特殊的数据处理流程能够进一步实现排序任务的动态分配,尤其适用于大容量多子块的数据排序场景。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1为本实施例的排序方法的基本流程示意图;
图2为本实施例的排序方法的数据读取示例。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
本发明实施例提出本发明实施例提出一种基于多进程调用的数据库文件排序优化方法,本申请的方法可以应用于处理器包括多个进程的场景,如图1所示,本申请的排序方法包括如下步骤:
在步骤S10中,基于参与排序的进程的数量为各进程分配固定大小的排序内存。例如当前共有6个进程执行排序,而总的可用内存为1.2G,则每个进程可以获得200M的内存,具体的可以根据进程的数量以及当前总的可用内存来确定各进程分配的内存。本示例中,将总的可用内存均分给各进程,从而能够保证各进程每次读取的数据量是相同的,保证各进程的负载均衡。
在步骤S20中,根据排序内存的大小,按照待排序的数据文件的原始顺序,将待排序的数据文件,划分出多个子块,并将待排序的数据文件,按照所述原始顺序,划分为多部分子数据,每部分子数据包括至少两个子块。例如图2所示,本示例中按照待排序的数据文件的原始顺序,将待排序的数据文件,划分出多个子块,根据前述示例,每个子块的大小可以是200M,由此每个进程可用读取完整的200M的数据,从而保证硬件资源的利用率。进一步的本示例中还将待排序的数据文件,按照所述原始顺序,划分为多部分子数据,例如图2中包括两部分的子数据,该部分子数据包括多个子块,且子块的数量可以是偶数。可选的,将待排序的数据文件,按照所述原始顺序,所划分出的多部分子数据的大小相同,例如图2中进程1、进程2以及进程3、进程4所处理的两部分子数据的容量是一样的。通过这样的数据划分能够保证每两个进程所分到的子数据是相同的,提高各进程负载的均衡性。
在步骤S30中,确定该部分子数据的中间位置,并为该部分子数据配置两个进程,且其中一个进程从该中间位置向该部分子数据的数据首依序读取一个子块,另一个进程从该中间位置向该部分子数据的数据尾依序读取一个子块。具体的,如图2所示,本示例中利用进程1、进程2、进程3以及进程4进行举例说明,其中每部分子数据包括12个子块,则进程1从子块6开始向子块1依次读取,并执行排序,进程2从子块7开始向子块12依次读取,并执行排序。
该进程执行如下步骤:
在步骤S40中,从该子块的至少两个位置分别选取一个数据段,判断该至少两个数据段的数据顺序是否一致。
在步骤S50中,若至少两个数据段的数据顺序一致,且与当前数据读取的方向相反,则改变该进程读取该子块的顺序,否则按照当前读取顺序,将该子块读取到内存,并执行排序。
本示例中的读取数据是具有方向性的,在不改变数据读取方向的情况下,进程1从子块6倒序读取是指:进程1从子块6的最后一个字节一直读取到子块6的第1个字节。进程2从子块7正序读取是指:进程2从子块7的第一个字节一直读到子块i的尾字节,然后,进程2依此继续读取子块8-子块12。通过设计这样的数据载入方式能够有效避免并行读取可能带来的数据乱序问题,并且有利于根据数据的原始顺序排序后输出。本申请中进一步的,还判断了该子块的数据顺序,在该进程读取完整的该子块到内存之前,本示例中从该子块的至少两个位置分别选取一个数据段,判断该至少两个数据段的数据顺序是否一致。在数据库中数据的排列较多是有大致顺序的,但是具体的顺序是不定的。较为简单的示例,例如数据段{23,22,26,28,25,31,35},显然按照正序读取,处理效率会更高;而相反,则逆序处理效率会更高。本发明所指的排序可以是从小到大的正序排序,具体的排序方式也可以是其他设定的顺序。本示例中,通过从该子块选取至少两个数据段,从而能够判断出该子块的大致的数据方向,从而确定出该进程读取该子块的方向,极大提高处理效率,并且通过这样的方式,还减小了进程2正序读取而子块全是逆序所可能造成的与进程1的数据处理量的差距,提高排序的效率。
在步骤S60中,将各进程输出的文件序列按照所述原始顺序进行整理,以获得排序结果。
本发明实施例通过将外部排序利用多个进程来执行,并且在排序过程中通过改变进程的数据读取顺序,能够保证每个进程的数据排序效率,并且特殊的数据处理流程能够进一步实现排序任务的动态分配。
在一些具体场景中,由于不可预期的因素,以及数据排序处理本身存在的运算量的差距,在处理大容量的子块的排序的过程中实际的用时可能存在差距,本示例中数据库文件排序优化方法还包括:
为各进程配置一计时器,并基于该计时器记录该进程执行排序的累积时长;
基于该计时器所记录的累积时长与临近进程对应的计时器所记录的累积时长进行对比,其中所述临近进程为执行相邻部分子数据的排序,且初始数据读取方向与该进程相对的进程。本示例中所指的初始数据读取方向例如是进程2对子块7的原定读取方为向右,进程3对子块18的原定读取方为向左,则进程3为进程2的临近进程,以此类推进程5为进程4的临近进程。
根据比对结果,基于该部分子数据与相邻部分子数据动态调整该进程的排序任务。
具体的,本示例中为每个进程配置一个计时器,从而通过该计时器记录该进程执行排序的累积时长,在各进程同时执行子块读取并排序的情况下,该累积时长是相同的,但也存在不同的进程由于硬件因素引起的读取时间不同的问题,本示例中通过配置相应的计时器,能够准确确定各进程处理各子块的排序的累积时长,由此可以基于该计时器所记录的累积时长与临近进程对应的计时器所记录的累积时长进行对比,来确定各进程的数据处理速度。作为一种示例性的比对方式,可以对比处理相同数量的子块各进程所消耗的时长,例如进程2相比进程3处理相同数量的子块消耗了更多的时间,则可以基于该部分子数据与相邻部分子数据动态调整将进程2的任务调整给进程3。
作为示例性的一种任务的调整方式,本示例中基于该计时器所记录的累积时长与临近进程对应的计时器所记录的累积时长进行对比包括:
基于对应的累积时长确定该进程与临近进程处理单个子块的平均耗时,并计算该进程的平均耗时与临近进程的平均耗时的偏差。本示例中通过确定该进程与临近进程处理单个子块的平均耗时,由此可以提前判断出该进程处理子块排序的速率,并能够动态调整与临近进程的任务量。保证在实际执行大容量的数据排序任务的情况下的数据处理效率,提高硬件的使用率。
在所述偏差小于第一预设阈值的情况下,按照待排序的数据文件的原始顺序,依次将相邻部分子数据的子块确定为该进程的排序任务。例如进程2的处理单个子块的平均耗时-进程3的处理单个子块的平均耗时小于第一预设阈值,可以从属于进程3部分子数据的数据首部依次将子块分配给进程2,相反,可以将属于进程2部分子数据的数据尾部依次将子块分配给进程3。本示例中相比对比各进程处理相同数量的子块所消耗的时长,不会受到由于处理某一个子块的排序时间较长所带来的影响,在处理的数据量大且划分的子块数量多的情况下,能够提前将位于该进程与临近进程之间子块的排序任务进行动态调度,从而进一步保证硬件资源的利用率。并且本示例中仅将位于该进程与临近进程之间子块的排序任务进行动态调度,进一步保证了待排序数据的整体顺序,也即即使在任务动态调整之后,各进程输出的文件序列是与原始数据顺序是对应的,不会存在数据乱序的问题,保证后续的整理进程的数据处理效率。
在一些示例中,在各进程执行排序的时间相同的情况下,可以直接对所处理的子块进行计数,具体的可以通过为各子块配置相应的编号实现。例如为各子块配置连续的编号,从而可以根据当前的时间以及当前处理的子块的编号,确定该进程已经处理完成的子块的数量,在该进程与临近进程所处理的子块的总量的偏差超过预设数量阈值的情况下,基于该偏差动态调整该进程与临近进程的任务量。
可选的,从该子块的至少两个位置分别选取一个数据段包括:
随机从该子块的至少两个位置选取一个数据段,并基于该进程的数据读取方向读取该两个位置的数据段。本示例中读取的两个位置的数据段的大小是相同的,例如子块的大小为200M,则读取2M的数据段进行预先处理,并且读取该数据段的顺序与该进程读取顺序的方向相同。通过这样的设计能够快速判断出各数据段的数据顺序。一些示例中例如可以设置所选取的数据段与该子块的大小比例为1:100,通过设置合适的数据段的比例能够确保快速判定出数据段的数据方向,并且具有很小的数据处理量。
可选的,判断该至少两个数据段的数据顺序是否一致包括:
以该进程的数据读取方向为正方向,不执行排序,确定该数据段中与正方向相同顺序的数据占该数据段的比例;
在所述比例超过第一预设阈值的情况下,确定该数据段的数据顺序。具体的例如第一预设阈值可以为60%、70%等。
对比至少两个数据段数据顺序,以确定该至少两个数据段的数据顺序是否一致。
也即本示例中对于各进程初始读取的子块,可以随机从该子块中选取至少两个数据段,不执行排序并判断该子块的数据顺序(例如可以在至少两个数据段数据顺序相同的情况下,确定该子块具有相应的数据顺序)。在一些场景中,例如在进程2处理完子块i之后,进入子块i-1,在确定子块i的数据顺序并执行数据读取后,可以以子块i所确定的数据顺序为基础,在子块i-1中减少选取的数据段的数量,例如从子块i-1中选取至少一个数据段,并与在先所确定的进程对子块i的数据读取正方向进行比对,若比对一致,则不改变对子块i-1的读取方向,若不一致,则从子块i-1中再选取至少一个数据段,重复前述判断该至少两个数据段的数据顺序是否一致的过程。通过这样的设计能够加速确定各子块的数据读取方向,进一步提高进程执行数据排序的效率。
可选的,将各进程输出的文件序列按照所述原始顺序进行整理包括:
调用多个归并进程,通过该归并进程接收并处理该排序进程输出的文件序列,以获得相应的子文件;
整理各子文件,以获得所述排序文件。
具体的,本示例中例如可以通过与执行排序进程数量相同数量的归并进程,在一个排序进程处理完成一个子块后,通过相应的归并进程执行归并,最终并行输出排序文件。例如,对25G的数据进行排序,如果每个子块是200MB,则共会产生125个排序文件。为了最大化提高并行性,在这125个文件输出的过程中,归并进程可以同步执行归并处理。6个进程最终产生6个排序后的子文件,最后需要将这6个子文件进行归并排序,得到最终的排序文件。本申请的方案由于没有改变子块的顺序,因此可以直接按照与原始顺序执行归并,提高归并的速度。本申请的提案尤其适用于对大容量的数据多子块执行排序的场景,例如在超过50G,子块数量超过200个,能够有效提高数据排序的效率。
综上,本申请提出了一种多进程负载均衡的数据库文件排序优化,通过优化进程对待排序文件的读取方式,以及基于待排序数据文件的原始顺序在临近的进程之间动态调整执行排序的任务,从而极大提高了负载均衡性,尤其适用于对大容量多子块的排序任务。
本发明实施例还提出一种基于多进程调用的数据库文件排序优化装置,包括处理器,所述处理器具有多个进程,所述处理器被配置为:
基于参与排序的进程的数量为各进程分配固定大小的排序内存;
根据排序内存的大小,按照待排序的数据文件的原始顺序,将待排序的数据文件,划分出多个子块,并将待排序的数据文件,按照所述原始顺序,划分为多部分子数据,每部分子数据包括至少两个子块;
确定该部分子数据的中间位置,并为该部分子数据配置两个进程,且其中一个进程从该中间位置向该部分子数据的数据首依序读取一个子块,另一个进程从该中间位置向该部分子数据的数据尾依序读取一个子块;
该进程执行如下步骤:
从该子块的至少两个位置分别选取一个数据段,判断该至少两个数据段的数据顺序是否一致;
若至少两个数据段的数据顺序一致,且与当前数据读取的方向相反,则改变该进程读取该子块的顺序,否则按照当前读取顺序,将该子块读取到内存,并执行排序;
将各进程输出的文件序列按照所述原始顺序进行整理,以获得排序结果。
本发明实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现本申请各实施例所述的多进程负载均衡的数据库文件排序优化方法的步骤。
此外,尽管已经在本文中描述了示例性实施例,其范围包括任何和所有基于本公开的具有等同元件、修改、省略、组合(例如,各种实施例交叉的方案)、改编或改变的实施例。权利要求书中的元件将被基于权利要求中采用的语言宽泛地解释,并不限于在本说明书中或本申请的实施期间所描述的示例,其示例将被解释为非排他性的。因此,本说明书和示例旨在仅被认为是示例,真正的范围和精神由以下权利要求以及其等同物的全部范围所指示。
以上描述旨在是说明性的而不是限制性的。例如,上述示例(或其一个或更多方案)可以彼此组合使用。例如本领域普通技术人员在阅读上述描述时可以使用其它实施例。另外,在上述具体实施方式中,各种特征可以被分组在一起以简单化本公开。这不应解释为一种不要求保护的公开的特征对于任一权利要求是必要的意图。相反,本公开的主题可以少于特定的公开的实施例的全部特征。从而,以下权利要求书作为示例或实施例在此并入具体实施方式中,其中每个权利要求独立地作为单独的实施例,并且考虑这些实施例可以以各种组合或排列彼此组合。本发明的范围应参照所附权利要求以及这些权利要求赋权的等同形式的全部范围来确定。
以上实施例仅为本公开的示例性实施例,不用于限制本发明,本发明的保护范围由权利要求书限定。本领域技术人员可以在本公开的实质和保护范围内,对本发明做出各种修改或等同替换,这种修改或等同替换也应视为落在本发明的保护范围内。
Claims (9)
1.一种基于多进程调用的数据库文件排序优化方法,其特征在于,包括:
基于参与排序的进程的数量为各进程分配固定大小的排序内存;
根据排序内存的大小,按照待排序的数据文件的原始顺序,将待排序的数据文件,划分出多个子块,并将待排序的数据文件,按照所述原始顺序,划分为多部分子数据,每部分子数据包括至少两个子块;
确定该部分子数据的中间位置,并为该部分子数据配置两个进程,且其中一个进程从该中间位置向该部分子数据的数据首依序读取一个子块,另一个进程从该中间位置向该部分子数据的数据尾依序读取一个子块;
该进程执行如下步骤:
从该子块的至少两个位置分别选取一个数据段,判断该至少两个数据段的数据顺序是否一致;
若至少两个数据段的数据顺序一致,且与当前数据读取的方向相反,则改变该进程读取该子块的顺序,否则按照当前读取顺序,将该子块读取到内存,并执行排序;
将各进程输出的文件序列按照所述原始顺序进行整理,以获得排序结果。
2.如权利要求1所述的基于多进程调用的数据库文件排序优化方法,其特征在于,还包括:
为各进程配置一计时器,并基于该计时器记录该进程执行排序的累积时长;
基于该计时器所记录的累积时长与临近进程对应的计时器所记录的累积时长进行对比,其中所述临近进程为执行相邻部分子数据的排序,且初始数据读取方向与该进程相对的进程;
根据比对结果,基于该部分子数据与相邻部分子数据动态调整该进程的排序任务。
3.如权利要求2所述的基于多进程调用的数据库文件排序优化方法,其特征在于,基于该计时器所记录的累积时长与临近进程对应的计时器所记录的累积时长进行对比包括:
基于对应的累积时长确定该进程与临近进程处理单个子块的平均耗时,并计算该进程的平均耗时与临近进程的平均耗时的偏差;
在所述偏差小于第一预设阈值的情况下,按照待排序的数据文件的原始顺序,依次将相邻部分子数据的子块确定为该进程的排序任务。
4.如权利要求1所述的基于多进程调用的数据库文件排序优化方法,其特征在于,从该子块的至少两个位置分别选取一个数据段包括:
随机从该子块的至少两个位置选取一个数据段,并基于该进程的数据读取方向读取该两个位置的数据段。
5.如权利要求4所述的基于多进程调用的数据库文件排序优化方法,其特征在于,判断该至少两个数据段的数据顺序是否一致包括:
以该进程的数据读取方向为正方向,不执行排序,确定该数据段中与正方向相同顺序的数据占该数据段的比例;
在所述比例超过第一预设阈值的情况下,确定该数据段的数据顺序;
对比至少两个数据段数据顺序,以确定该至少两个数据段的数据顺序是否一致。
6.如权利要求1所述的基于多进程调用的数据库文件排序优化方法,其特征在于,将各进程输出的文件序列按照所述原始顺序进行整理包括:
调用多个归并进程,通过该归并进程接收并处理该排序进程输出的文件序列,以获得相应的子文件;
整理各子文件,以获得所述排序文件。
7.如权利要求1所述的基于多进程调用的数据库文件排序优化方法,其特征在于,将待排序的数据文件,按照所述原始顺序,所划分出的多部分子数据的大小相同。
8.一种基于多进程调用的数据库文件排序优化装置,其特征在于,包括处理器,所述处理器具有多个进程,所述处理器被配置为:
基于参与排序的进程的数量为各进程分配固定大小的排序内存;
根据排序内存的大小,按照待排序的数据文件的原始顺序,将待排序的数据文件,划分出多个子块,并将待排序的数据文件,按照所述原始顺序,划分为多部分子数据,每部分子数据包括至少两个子块;
确定该部分子数据的中间位置,并为该部分子数据配置两个进程,且其中一个进程从该中间位置向该部分子数据的数据首依序读取一个子块,另一个进程从该中间位置向该部分子数据的数据尾依序读取一个子块;
该进程执行如下步骤:
从该子块的至少两个位置分别选取一个数据段,判断该至少两个数据段的数据顺序是否一致;
若至少两个数据段的数据顺序一致,且与当前数据读取的方向相反,则改变该进程读取该子块的顺序,否则按照当前读取顺序,将该子块读取到内存,并执行排序;
将各进程输出的文件序列按照所述原始顺序进行整理,以获得排序结果。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述的基于多进程调用的数据库文件排序优化方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210156759.3A CN114546943B (zh) | 2022-02-21 | 2022-02-21 | 基于多进程调用的数据库文件排序优化方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210156759.3A CN114546943B (zh) | 2022-02-21 | 2022-02-21 | 基于多进程调用的数据库文件排序优化方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114546943A true CN114546943A (zh) | 2022-05-27 |
CN114546943B CN114546943B (zh) | 2024-06-21 |
Family
ID=81674802
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210156759.3A Active CN114546943B (zh) | 2022-02-21 | 2022-02-21 | 基于多进程调用的数据库文件排序优化方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114546943B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09231053A (ja) * | 1996-02-27 | 1997-09-05 | Nec Software Ltd | 並列ソート装置 |
CN102968496A (zh) * | 2012-12-04 | 2013-03-13 | 天津神舟通用数据技术有限公司 | 基于任务驱动和双缓冲机制的并行排序方法 |
CN110413849A (zh) * | 2019-07-22 | 2019-11-05 | 上海赜睿信息科技有限公司 | 一种数据排序方法及装置 |
CN111913955A (zh) * | 2020-06-22 | 2020-11-10 | 中科驭数(北京)科技有限公司 | 数据的排序处理装置、方法和存储介质 |
-
2022
- 2022-02-21 CN CN202210156759.3A patent/CN114546943B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09231053A (ja) * | 1996-02-27 | 1997-09-05 | Nec Software Ltd | 並列ソート装置 |
CN102968496A (zh) * | 2012-12-04 | 2013-03-13 | 天津神舟通用数据技术有限公司 | 基于任务驱动和双缓冲机制的并行排序方法 |
CN110413849A (zh) * | 2019-07-22 | 2019-11-05 | 上海赜睿信息科技有限公司 | 一种数据排序方法及装置 |
CN111913955A (zh) * | 2020-06-22 | 2020-11-10 | 中科驭数(北京)科技有限公司 | 数据的排序处理装置、方法和存储介质 |
Non-Patent Citations (2)
Title |
---|
DEMIANZHANG: "多线程外排序解决大数据排序问题1(并行快排和并行归并)【转】", 博客园:HTTPS:WWW.CNBLOGS.COM/DEMIAN/P/9593108.HTML, 5 September 2018 (2018-09-05), pages 1 - 8 * |
郭诚欣;陈红;孙辉;李翠平;吴天贞;: "基于现代硬件的并行内存排序方法综述", 计算机学报, vol. 40, no. 09, 30 September 2017 (2017-09-30), pages 112 - 134 * |
Also Published As
Publication number | Publication date |
---|---|
CN114546943B (zh) | 2024-06-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8620932B2 (en) | Parallel sorting apparatus, method, and program | |
EP2176751B1 (en) | Scheduling by growing and shrinking resource allocation | |
KR20190049593A (ko) | 콘볼루션 신경망에서의 연산들을 수행하는 방법 및 장치 | |
CN109426484B (zh) | 一种数据排序装置、方法及芯片 | |
US20050144167A1 (en) | Parallel merge/sort processing device, method, and program | |
CN107908714A (zh) | 一种数据归并排序方法及装置 | |
EP2901275A1 (en) | Loop vectorization methods and apparatus | |
CN113342886A (zh) | 数据交换方法和装置 | |
CN112085644A (zh) | 多列数据排序方法、装置、可读存储介质和电子设备 | |
US6865527B2 (en) | Method and apparatus for computing data storage assignments | |
CN111586094A (zh) | 一种文件上传方法、装置及计算机设备 | |
CN113177024B (zh) | 一种海量数据场景下的数据全局合并方法 | |
CN112527505B (zh) | 多线程综合的控制方法及装置 | |
CN110088730B (zh) | 任务处理方法、装置、介质及其设备 | |
CN108009111B (zh) | 数据流连接方法及装置 | |
CN110008382B (zh) | 一种确定TopN数据的方法、系统及设备 | |
CN114546943A (zh) | 基于多进程调用的数据库文件排序优化方法及装置 | |
CN114546944B (zh) | 多进程负载均衡的数据库文件排序优化方法及装置 | |
CN115130672A (zh) | 一种软硬件协同优化卷积神经网络计算的方法及装置 | |
CN110442619B (zh) | 搜索结果排序方法、装置、电子设备及存储介质 | |
CN112100446B (zh) | 搜索方法、可读存储介质和电子设备 | |
CN112596895A (zh) | 一种sql语义感知的弹性倾斜处理方法及系统 | |
CN108958702B (zh) | 一种排序网络、排序方法及排序装置 | |
CN105573834A (zh) | 于异构平台的面向高维数据的词汇树构建方法 | |
JP2021018711A (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 |