CN106227739B - 一种实现基于多任务的数据请求方法 - Google Patents
一种实现基于多任务的数据请求方法 Download PDFInfo
- Publication number
- CN106227739B CN106227739B CN201610546947.1A CN201610546947A CN106227739B CN 106227739 B CN106227739 B CN 106227739B CN 201610546947 A CN201610546947 A CN 201610546947A CN 106227739 B CN106227739 B CN 106227739B
- Authority
- CN
- China
- Prior art keywords
- data
- task
- page
- data single
- single page
- 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
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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/278—Data partitioning, e.g. horizontal or vertical partitioning
-
- 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/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种实现基于多任务的数据请求方法,涉及计算机数据处理领域。该方法包括:将数据库中存储的记录集合按预设拆分成多个数据单页,同时,按照预设设置数据单页中记载的记录数,并对每个数据单页进行页索引;获取第n页数据的请求的同时,获取数据单页的总页数m;根据未加载的数据单页的总页数设置动态分配的任务数,所述动态分配的任务数为m,并设置每条任务所需加载的数据单页;按照任务的编号顺次执行加载,直至加载完m页数据单页为止;将已加载完的数据单页按照页索引顺序合并到数据表中。本发明相对于传统的分页数据请求算法,不仅有效降低单次请求数据对服务的压力,还可以有效提升数据加载的速度。
Description
技术领域
本发明涉及计算机数据处理领域,尤其涉及一种实现基于多任务的数据请求方法。
背景技术
随着企业信息系统的推广应用,累积的历史数据也越来越庞大,这些数据作为重要资产服务于企业生产经营。因为企业信息系统中的很多应用,需要向系统提交数据请求以便于提取大量的历史数据进行分析统计,现有对系统的数据请求采用两种方式进行:
第一种采用一次提取所有数据的方式,但是,当数据量过大时,采用这种方式进行数据提取会造成数据服务器的内存消耗较大、连接处理时间长,影响服务性能,从而影响整个系统的响应速度。
第二种采用分页的方式,依次请求,尽管这种方式能有效缓解单次请求对数据服务器的压力,同时提升界面响应时间。但是,当数据体过于庞大时,如记录数超过十万条甚至上百万条,就会存在分页数过大,请求时间过长的问题,影响到数据的请求效率。
因此,在数据处理领域内,亟需找到一种数据请求方法,来解决企业中大数据量的请求访问中存在的效率慢的问题。
发明内容
本发明的目的在于提供一种实现基于多任务的数据请求方法,可有效提升数据量的请求效率和数据的处理能力,从而解决现有技术中存在的前述问题。
为了实现上述目的,本发明所述实现基于多任务的数据请求方法,该方法包括:
S1,将数据库中存储的记录集合按预设拆分成多个数据单页,同时,按照预设设置数据单页中记载的记录数,并对每个数据单页进行页索引;
S2,获取请求第n页数据的请求的同时,获取数据单页的总页数m;
S3,根据为加载的数据单页的总页数设置动态分配的任务数,所述动态分配的任务数为m,并设置每条任务所需加载的数据单页,具体为:
设置编号为1的任务加载第n数据单页;设置编号为2的任务加载第n+1数据单页;设置编号为3的任务加载第n+2数据单页;直至设置编号为m的任务加载第n+m-1数据单页;
S4,按照任务的编号顺次执行加载,直至加载完m页数据单页为止;将已加载完的数据单页按照页索引顺序合并到数据表中。
优选地,所述每个数据单页包括头部信息和序列化的实体数据集;所述头部信息包括页索引、记录数和总页数。
优选地,步骤S4,采用实时任务管理按照任务的编号顺次执行加载,所述实时任务管理,具体按照下述步骤实现:
S41,将需要进行加载的任务按照优先级排序;从编号为1的任务开始,按需加入到任务执行列队中;并调动与所述编号为1的任务相对应的线程进行加载数据单页;
S42,判断任务执行列队中的任务数是否达到任务执行列队的上限,如果是,则执行程序休息一定时间t,所述t为预先设置休息时间;如果否,则进入S43;
S43,判断所述待执行任务列表中的任务是否为空,如果否,按优先级获取任务A则进入S44;
S44,将任务A添加到任务执行列队,并获取执行所述任务A的线程A;
S45,执行并完成任务A,获取与所述任务A相对的数据单页实体数据。
更优选地,当加载完成任务A时,将与执行所述任务A的线程添加到空闲线程池中。
更优选地,步骤S43中,判断所述待执行任务列表中的任务是否为空,同时还进行线程池监控,还包括以下步骤:
如果为空,则判断线程池中已有的线程的数目是否小于最大运行的任务数,如果是,则创建新线程,加入到空闲线程池并启动;如果否,则执行程序休息一定时间t,所述t为预先设置休息时间;
如果不为空,则判断空闲线程池中的线程数是否大于最小预留执行任务数;如果是,则将多余的线程从空闲线程池中删除并销毁;如果否,则执行程序休息一定时间t,所述t为预先设置休息时间。
优选地,步骤S4中,将已加载完的数据单页按照页索引顺序合并到数据表中,具体按照下述步骤实现:
根据页索引将已请求完成的数据单页进行排队,按照页索引顺序,从起始页开始,获取连续的数据单页,提取数据单页中的实体数据,反序列化后,进行合并,得到一个完整的数据表格。
更优选地,未被选择的任务所对应的数据单页存储在缓存服务器中,当收到加载任意一个数据单页的请求页数据请求时,直接从缓存服务器中提取该数据单页。
优选地,步骤S2,获取请求第n页数据的请求的同时,获取数据单页的总页数m,具体按照下述步骤实现:
获取第n数据单页中的记录数和数据集中的总数据数,计算得到数据单页的总页数m,并将所述总页数添加到每个数据单页包括头部信息中。
本发明的有益效果是:
本发明中应用的任务管理机制,控制任务的创建、启动、停止、销毁以及运行状态监控等。任务以独立的线程运行,由于线程的创建、销毁都需要一定的时间开销用来分配和销毁系统资源,为了提高系统中线程的使用效率,通过线程池机制统一管理调度系统中的线程。
本发明服务采用分布式缓存机制,将为加载的数据单页添加到缓存服务器中,当接收到任意一个数据单页的加载请求时,可首先选择从缓存服务器中命中提取。这样可以有效数据提取的速度,同时可以减小对数据库服务的压力。
本发明相对于传统的分页数据请求算法,不仅有效降低单次请求数据对服务的压力,还可以有效提升数据加载的速度。
附图说明
图1是实现基于多任务的数据请求方法的流程图;
图2是实时任务管理中通过线程池管理任务运行的示意图;
图3是实时任务管理中任务执行的流程图;
图4是实时任务管理中线程池监控流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不用于限定本发明。
实施例
本实施例所述实现基于多任务的数据请求方法,该方法包括:
S1,将数据库中存储的记录集合按预设拆分成多个数据单页,同时,按照预设设置数据单页中记载的记录数,并对每个数据单页进行页索引;
S2,获取请求第n页数据的请求的同时,获取数据单页的总页数m;
S3,根据为加载的数据单页的总页数设置动态分配的任务数,所述动态分配的任务数为m,并设置每条任务所需加载的数据单页,具体为:
设置编号为1的任务加载第n数据单页;设置编号为2的任务加载第n+1数据单页;设置编号为3的任务加载第n+2数据单页;直至设置编号为m的任务加载第n+m-1数据单页;
S4,按照任务的编号顺次执行加载,直至加载完m页数据单页为止;将已加载完的数据单页按照页索引顺序合并到数据表中。
其中,所述每个数据单页包括头部信息和序列化的实体数据集;所述头部信息包括页索引、记录数和总页数。
(一)步骤S2,获取请求第n页数据的请求的同时,获取数据单页的总页数m,具体按照下述步骤实现:
获取第n数据单页中的记录数和数据集中的总数据数,计算得到数据单页的总页数m,并将所述总页数添加到每个数据单页包括头部信息中。
(二)步骤S4,采用史诗任务管理按照任务的编号顺次执行加载,所述实时任务管理,具体按照下述步骤实现:
S41,将需要进行加载的任务按照优先级排序;从编号为1的任务开始,按需加入到任务执行列队中;并调动与所述编号为1的任务相对应的线程进行加载数据单页;
S42,判断任务执行列队中的任务数是否达到任务执行列队的上限,如果是,则执行程序休息一定时间t,所述t为预先设置休息时间;如果否,则进入S43;
S43,判断所述待执行任务列表中的任务是否为空,如果否,按优先级获取任务A则进入S44;
S44,将任务A添加到任务执行列队,并获取执行所述任务A的线程A;
S45,执行并完成任务A,获取与所述任务A相对的数据单页实体数据。
其中,当加载完成任务A时,将与执行所述任务A的线程添加到空闲线程池中。
其中,步骤S43中,判断所述待执行任务列表中的任务是否为空,同时还进行线程池监控,还包括以下步骤:
如果为空,则判断线程池中已有的线程的数目是否小于最大运行的任务数,如果是,则创建新线程,加入到空闲线程池并启动;如果否,则执行程序休息一定时间t,所述t为预先设置休息时间;
如果不为空,则判断空闲线程池中的线程数是否大于最小预留执行任务数;如果是,则将多余的线程从空闲线程池中删除并销毁;如果否,则则执行程序休息一定时间t,所述t为预先设置休息时间。
(三)步骤S4中,将已加载完的数据单页按照页索引顺序合并到数据表中,具体按照下述步骤实现:
根据页索引将已请求完成的数据单页进行排队,按照页索引顺序,从起始页开始,获取连续的数据单页,提取数据单页中的实体数据,反序列化后,进行合并,得到一个完整的数据表格。
其中,未被选择的任务所对应的数据单页存储在缓存服务器中,当收到加载任意一个数据单页的请求页数据请求时,直接从缓存服务器中提取该数据单页。
通过采用本发明公开的上述技术方案,得到了如下有益的效果:本发明中应用的任务管理机制,控制任务的创建、启动、停止、销毁以及运行状态监控等。任务以独立的线程运行,由于线程的创建、销毁都需要一定的时间开销用来分配和销毁系统资源,为了提高系统中线程的使用效率,通过线程池机制统一管理调度系统中的线程。
本发明服务采用分布式缓存机制,将为加载的数据单页添加到缓存服务器中,当接收到任意一个数据单页的加载请求时,可首先选择从缓存服务器中命中提取。这样可以有效数据提取的速度,同时可以减小对数据库服务的压力。本发明相对于传统的分页数据请求算法,本发明不仅有效降低单次请求数据对服务的压力,还可以有效提升数据加载的速度。如果忽略单次请求间的时间耗时差异,耗时模型如下:
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。
Claims (1)
1.一种实现基于多任务的数据请求方法,其特征在于,该方法包括:
步骤S1,将数据库中存储的记录集合按预设拆分成多个数据单页,同时,按照预设设置数据单页中记载的记录数,并对每个数据单页进行页索引;
步骤S2,获取第n页数据请求的同时,获取数据单页的总页数m;
步骤S3,根据未加载的数据单页的总页数设置动态分配的任务数,所述动态分配的任务数为m,并设置每条任务所需加载的数据单页,具体为:
设置编号为1的任务加载第n数据单页;设置编号为2的任务加载第n+1数据单页;设置编号为3的任务加载第n+2数据单页;直至设置编号为m的任务加载第n+m-1数据单页;
步骤S4,按照任务的编号顺次执行加载,直至加载完m页数据单页为止;将已加载完的数据单页按照页索引顺序合并到数据表中;
步骤S4,采用实时任务管理按照任务的编号顺次执行加载,所述实时任务管理,具体按照下述步骤实现:
步骤S41,将需要进行加载的任务按照优先级排序;从编号为1的任务开始,按需加入到任务执行列队中;并调动与所述编号为1的任务相对应的线程进行加载数据单页;
步骤S42,判断任务执行列队中的任务数是否达到任务执行列队的上限,如果是,则执行程序休息一定时间t,所述t为预先设置休息时间;如果否,则进入步骤S43;
步骤S43,判断待执行任务列表中的任务是否为空,如果否,按优先级获取任务A则进入S44;
步骤S44,将任务A添加到任务执行列队,并获取执行所述任务A的线程A;
步骤S45,执行并完成任务A,获取与所述任务A相对的数据单页实体数据;
当加载完成任务A时,将与执行所述任务A的线程添加到空闲线程池中;
步骤S43中,判断所述待执行任务列表中的任务是否为空,同时还进行线程池监控,还包括以下步骤:
如果为空,则判断线程池中已有的线程的数目是否小于最大运行的任务数,如果是,则创建新线程,加入到空闲线程池并启动;如果否,则执行程序休息一定时间t,所述t为预先设置休息时间;
如果不为空,则判断空闲线程池中的线程数是否大于最小预留执行任务数;如果是,则将多余的线程从空闲线程池中删除并销毁;如果否,则执行程序休息一定时间t,所述t为预先设置休息时间;
所述每个数据单页包括头部信息和序列化的实体数据集;所述头部信息包括页索引、记录数和总页数;
步骤S2,获取请求第n页数据的请求的同时,获取数据单页的总页数m,具体按照下述步骤实现:
获取第n数据单页中的记录数和数据集中的总数据数,计算得到数据单页的总页数m,并将所述总页数添加到每个数据单页包括头部信息中;
步骤S4中,将已加载完的数据单页按照页索引顺序合并到数据表中,具体按照下述步骤实现:
根据页索引将已请求完成的数据单页进行排队,按照页索引顺序,从起始页开始,获取连续的数据单页,提取数据单页中的实体数据,反序列化后,进行合并,得到一个完整的数据表格;
未被选择的任务所对应的数据单页存储在缓存服务器中,当收到加载任意一个数据单页的请求页数据请求时,直接从缓存服务器中提取该数据单页。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610546947.1A CN106227739B (zh) | 2016-07-13 | 2016-07-13 | 一种实现基于多任务的数据请求方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610546947.1A CN106227739B (zh) | 2016-07-13 | 2016-07-13 | 一种实现基于多任务的数据请求方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106227739A CN106227739A (zh) | 2016-12-14 |
CN106227739B true CN106227739B (zh) | 2020-01-21 |
Family
ID=57520599
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610546947.1A Active CN106227739B (zh) | 2016-07-13 | 2016-07-13 | 一种实现基于多任务的数据请求方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106227739B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108733461B (zh) * | 2017-04-18 | 2021-09-14 | 北京京东尚科信息技术有限公司 | 分布式任务调度方法和装置 |
CN112433803B (zh) * | 2020-12-09 | 2023-06-20 | 上海创远仪器技术股份有限公司 | 无线电Web单页面应用中实现多任务切换的方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1858735A (zh) * | 2005-12-30 | 2006-11-08 | 华为技术有限公司 | 一种海量数据的处理方法 |
CN101325561A (zh) * | 2007-06-12 | 2008-12-17 | 阿里巴巴集团控股有限公司 | 一种处理电子邮件的方法、装置及系统 |
CN101593202A (zh) * | 2009-01-14 | 2009-12-02 | 中国人民解放军国防科学技术大学 | 基于共享Cache多核处理器的数据库哈希连接方法 |
CN101930472A (zh) * | 2010-09-09 | 2010-12-29 | 南京中兴特种软件有限责任公司 | 一种支持分布式数据库基于并行查询的方法 |
CN102591721A (zh) * | 2011-12-30 | 2012-07-18 | 北京新媒传信科技有限公司 | 一种分配线程执行任务的方法和系统 |
CN104268295A (zh) * | 2014-10-24 | 2015-01-07 | 迈普通信技术股份有限公司 | 一种数据查询方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6785684B2 (en) * | 2001-03-27 | 2004-08-31 | International Business Machines Corporation | Apparatus and method for determining clustering factor in a database using block level sampling |
-
2016
- 2016-07-13 CN CN201610546947.1A patent/CN106227739B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1858735A (zh) * | 2005-12-30 | 2006-11-08 | 华为技术有限公司 | 一种海量数据的处理方法 |
CN101325561A (zh) * | 2007-06-12 | 2008-12-17 | 阿里巴巴集团控股有限公司 | 一种处理电子邮件的方法、装置及系统 |
CN101593202A (zh) * | 2009-01-14 | 2009-12-02 | 中国人民解放军国防科学技术大学 | 基于共享Cache多核处理器的数据库哈希连接方法 |
CN101930472A (zh) * | 2010-09-09 | 2010-12-29 | 南京中兴特种软件有限责任公司 | 一种支持分布式数据库基于并行查询的方法 |
CN102591721A (zh) * | 2011-12-30 | 2012-07-18 | 北京新媒传信科技有限公司 | 一种分配线程执行任务的方法和系统 |
CN104268295A (zh) * | 2014-10-24 | 2015-01-07 | 迈普通信技术股份有限公司 | 一种数据查询方法及装置 |
Non-Patent Citations (2)
Title |
---|
Paging query optimization of massive data in oracle 10g database;Fengdong Sun et al.;《2011 International Conference on Computer Science and Service System》;20110804;第2388-2391页 * |
基于多线程和分页技术的数据库查询;曹红兵;《科技信息》;20071231(第14期);第59、77页 * |
Also Published As
Publication number | Publication date |
---|---|
CN106227739A (zh) | 2016-12-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20180285167A1 (en) | Database management system providing local balancing within individual cluster node | |
US9027028B2 (en) | Controlling the use of computing resources in a database as a service | |
US20170109203A1 (en) | Task scheduling | |
CN103617087A (zh) | 一种适合迭代计算的MapReduce优化方法 | |
US20190236201A1 (en) | Techniques for processing database tables using indexes | |
US20140115016A1 (en) | Systems and methods for enabling parallel processing of write transactions | |
US9817753B2 (en) | Flash memory management | |
CN101093454A (zh) | 一种在分布式系统中执行sql脚本文件的方法和装置 | |
CN109582649B (zh) | 一种元数据存储方法、装置、设备及可读存储介质 | |
WO2021114848A1 (zh) | 数据库的数据读写方法及装置 | |
CN106227739B (zh) | 一种实现基于多任务的数据请求方法 | |
US10579419B2 (en) | Data analysis in storage system | |
CN112000703B (zh) | 数据入库处理方法、装置、计算机设备和存储介质 | |
CN110750517A (zh) | 一种本地存储引擎系统的数据处理方法、装置以及设备 | |
CN1851651A (zh) | 嵌入式sram操作系统进程优先权调度的实现方法 | |
CN1825288A (zh) | 嵌入式sram操作系统进程多队列调度的实现方法 | |
CN115525226A (zh) | 硬件批量指纹计算方法、装置及设备 | |
US10007434B1 (en) | Proactive release of high performance data storage resources when exceeding a service level objective | |
CN117093335A (zh) | 分布式存储系统的任务调度方法及装置 | |
US20120166404A1 (en) | Real-time text indexing | |
US7865514B2 (en) | Computer system and database management method using the same | |
CN113741810B (zh) | 一种数据迁移方法及装置 | |
CN116842299B (zh) | 动态数据访问风险控制系统与方法 | |
US11334489B2 (en) | Elastic columnar cache for cloud databases | |
CN117472568A (zh) | 一种多线程任务处理方法及终端 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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 | ||
CP03 | Change of name, title or address |
Address after: 834000 Jiyun Road, Karamay District, Karamay City, Xinjiang Uygur Autonomous Region, 197-2 Patentee after: HONGYOU SOFTWARE Co.,Ltd. Address before: 834000 No. 22, long march road, the Xinjiang Uygur Autonomous Region, Karamay Patentee before: KARAMAY HONGYOU SOFTWARE Co.,Ltd. |
|
CP03 | Change of name, title or address |