CN106227739A - 一种实现基于多任务的数据请求方法 - Google Patents
一种实现基于多任务的数据请求方法 Download PDFInfo
- Publication number
- CN106227739A CN106227739A CN201610546947.1A CN201610546947A CN106227739A CN 106227739 A CN106227739 A CN 106227739A CN 201610546947 A CN201610546947 A CN 201610546947A CN 106227739 A CN106227739 A CN 106227739A
- Authority
- CN
- China
- Prior art keywords
- data
- page
- task
- single page
- data single
- 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
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 (8)
1.一种实现基于多任务的数据请求方法,其特征在于,该方法包括:
S1,将数据库中存储的记录集合按预设拆分成多个数据单页,同时,按照预设设置数据单页中记载的记录数,并对每个数据单页进行页索引;
S2,获取第n页数据请求的同时,获取数据单页的总页数m;
S3,根据未加载的数据单页的总页数设置动态分配的任务数,所述动态分配的任务数为m,并设置每条任务所需加载的数据单页,具体为:
设置编号为1的任务加载第n数据单页;设置编号为2的任务加载第n+1数据单页;设置编号为3的任务加载第n+2数据单页;直至设置编号为m的任务加载第n+m-1数据单页;
S4,按照任务的编号顺次执行加载,直至加载完m页数据单页为止;将已加载完的数据单页按照页索引顺序合并到数据表中。
2.根据权利要求1所述方法,其特征在于,所述每个数据单页包括头部信息和序列化的实体数据集;所述头部信息包括页索引、记录数和总页数。
3.根据权利要求1所述方法,其特征在于,步骤S4,采用实时任务管理按照任务的编号顺次执行加载,所述实时任务管理,具体按照下述步骤实现:
S41,将需要进行加载的任务按照优先级排序;从编号为1的任务开始,按需加入到任务执行列队中;并调动与所述编号为1的任务相对应的线程进行加载数据单页;
S42,判断任务执行列队中的任务数是否达到任务执行列队的上限,如果是,则执行程序休息一定时间t,所述t为预先设置休息时间;如果否,则进入S43;
S43,判断所述待执行任务列表中的任务是否为空,如果否,按优先级获取任务A则进入S44;
S44,将任务A添加到任务执行列队,并获取执行所述任务A的线程A;
S45,执行并完成任务A,获取与所述任务A相对的数据单页实体数据。
4.根据权利要求3所述方法,其特征在于,当加载完成任务A时,将与执行所述任务A的线程添加到空闲线程池中。
5.根据权利要求3所述方法,其特征在于,步骤S43中,判断所述待执行任务列表中的任务是否为空,同时还进行线程池监控,还包括以下步骤:
如果为空,则判断线程池中已有的线程的数目是否小于最大运行的任务数,如果是,则创建新线程,加入到空闲线程池并启动;如果否,则执行程序休息一定时间t,所述t为预先设置休息时间;
如果不为空,则判断空闲线程池中的线程数是否大于最小预留执行任务数;如果是,则将多余的线程从空闲线程池中删除并销毁;如果否,则执行程序休息一定时间t,所述t为预先设置休息时间。
6.根据权利要求1所述方法,其特征在于,步骤S4中,将已加载完的数据单页按照页索引顺序合并到数据表中,具体按照下述步骤实现:
根据页索引将已请求完成的数据单页进行排队,按照页索引顺序,从起始页开始,获取连续的数据单页,提取数据单页中的实体数据,反序列化后,进行合并,得到一个完整的数据表格。
7.根据权利要求3所述方法,其特征在于,未被选择的任务所对应的数据单页存储在缓存服务器中,当收到加载任意一个数据单页的请求页数据请求时,直接从缓存服务器中提取该数据单页。
8.根据权利要求1所述方法,其特征在于,步骤S2,获取请求第n页数据的请求的同时,获取数据单页的总页数m,具体按照下述步骤实现:
获取第n数据单页中的记录数和数据集中的总数据数,计算得到数据单页的总页数m,并将所述总页数添加到每个数据单页包括头部信息中。
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 true CN106227739A (zh) | 2016-12-14 |
CN106227739B 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) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108733461A (zh) * | 2017-04-18 | 2018-11-02 | 北京京东尚科信息技术有限公司 | 分布式任务调度方法和装置 |
CN112433803A (zh) * | 2020-12-09 | 2021-03-02 | 上海创远仪器技术股份有限公司 | 无线电Web单页面应用中实现多任务切换的方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020188601A1 (en) * | 2001-03-27 | 2002-12-12 | International Business Machines Corporation | Apparatus and method for determining clustering factor in a database using block level sampling |
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 | 迈普通信技术股份有限公司 | 一种数据查询方法及装置 |
-
2016
- 2016-07-13 CN CN201610546947.1A patent/CN106227739B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020188601A1 (en) * | 2001-03-27 | 2002-12-12 | International Business Machines Corporation | Apparatus and method for determining clustering factor in a database using block level sampling |
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 |
---|
FENGDONG SUN ET AL.: "Paging query optimization of massive data in oracle 10g database", 《2011 INTERNATIONAL CONFERENCE ON COMPUTER SCIENCE AND SERVICE SYSTEM》 * |
曹红兵: "基于多线程和分页技术的数据库查询", 《科技信息》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108733461A (zh) * | 2017-04-18 | 2018-11-02 | 北京京东尚科信息技术有限公司 | 分布式任务调度方法和装置 |
CN112433803A (zh) * | 2020-12-09 | 2021-03-02 | 上海创远仪器技术股份有限公司 | 无线电Web单页面应用中实现多任务切换的方法 |
CN112433803B (zh) * | 2020-12-09 | 2023-06-20 | 上海创远仪器技术股份有限公司 | 无线电Web单页面应用中实现多任务切换的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106227739B (zh) | 2020-01-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107193960B (zh) | 一种分布式爬虫系统及周期性增量抓取方法 | |
EP3796150A1 (en) | Storage volume creation method and apparatus, server, and storage medium | |
CN104123340A (zh) | 一种数据库分表分页查询方法及系统 | |
CN102385554B (zh) | 重复数据删除系统的优化方法 | |
CN104820670A (zh) | 一种电力信息大数据的采集和存储方法 | |
CN102855293B (zh) | 一种电动汽车及充换电设施系统海量数据处理方法 | |
CN103942098A (zh) | 一种任务处理系统和方法 | |
CN107436813A (zh) | 一种元数据服务器动态负载均衡的方法及系统 | |
CN105243155A (zh) | 一种大数据抽取和交换系统 | |
CN102043675A (zh) | 一种基于任务处理请求任务量大小的线程池管理方法 | |
CN103856567A (zh) | 基于Hadoop分布式文件系统的小文件存储方法 | |
CN105378716B (zh) | 一种数据存储格式的转换方法及装置 | |
CN104142860A (zh) | 应用服务系统的资源调整方法与装置 | |
CN104933160B (zh) | 一种面向安全监测业务分析的etl框架设计方法 | |
CN106547612A (zh) | 一种多任务处理方法及装置 | |
CN104317669A (zh) | 一种云端异构存储系统及其数据副本管理方法 | |
CN103701920A (zh) | 云环境下配置虚拟应用服务器的方法 | |
CN103440290A (zh) | 大数据加载系统和方法 | |
CN101093454A (zh) | 一种在分布式系统中执行sql脚本文件的方法和装置 | |
CN106227739A (zh) | 一种实现基于多任务的数据请求方法 | |
CN102508727A (zh) | 一种通过软件实现磁盘阵列中的缓存掉电保护方法 | |
CN103970256B (zh) | 一种基于内存压缩和cpu动态调频的节能方法及系统 | |
CN104158875A (zh) | 一种分摊减轻数据中心服务器任务的方法及系统 | |
CN107798111A (zh) | 一种分布式环境中大批量导出数据的方法 | |
Jia | Google cloud computing platform technology architecture and the impact of its cost |
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 |