CN106227739B - 一种实现基于多任务的数据请求方法 - Google Patents

一种实现基于多任务的数据请求方法 Download PDF

Info

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
Application number
CN201610546947.1A
Other languages
English (en)
Other versions
CN106227739A (zh
Inventor
唐虎强
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
HONGYOU SOFTWARE Co.,Ltd.
Original Assignee
KARAMAY HONGYOU SOFTWARE CO Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by KARAMAY HONGYOU SOFTWARE CO Ltd filed Critical KARAMAY HONGYOU SOFTWARE CO Ltd
Priority to CN201610546947.1A priority Critical patent/CN106227739B/zh
Publication of CN106227739A publication Critical patent/CN106227739A/zh
Application granted granted Critical
Publication of CN106227739B publication Critical patent/CN106227739B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation 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/5038Allocation 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中,将已加载完的数据单页按照页索引顺序合并到数据表中,具体按照下述步骤实现:
根据页索引将已请求完成的数据单页进行排队,按照页索引顺序,从起始页开始,获取连续的数据单页,提取数据单页中的实体数据,反序列化后,进行合并,得到一个完整的数据表格。
其中,未被选择的任务所对应的数据单页存储在缓存服务器中,当收到加载任意一个数据单页的请求页数据请求时,直接从缓存服务器中提取该数据单页。
通过采用本发明公开的上述技术方案,得到了如下有益的效果:本发明中应用的任务管理机制,控制任务的创建、启动、停止、销毁以及运行状态监控等。任务以独立的线程运行,由于线程的创建、销毁都需要一定的时间开销用来分配和销毁系统资源,为了提高系统中线程的使用效率,通过线程池机制统一管理调度系统中的线程。
本发明服务采用分布式缓存机制,将为加载的数据单页添加到缓存服务器中,当接收到任意一个数据单页的加载请求时,可首先选择从缓存服务器中命中提取。这样可以有效数据提取的速度,同时可以减小对数据库服务的压力。本发明相对于传统的分页数据请求算法,本发明不仅有效降低单次请求数据对服务的压力,还可以有效提升数据加载的速度。如果忽略单次请求间的时间耗时差异,耗时模型如下:
Figure BDA0001047928530000071
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。

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中,将已加载完的数据单页按照页索引顺序合并到数据表中,具体按照下述步骤实现:
根据页索引将已请求完成的数据单页进行排队,按照页索引顺序,从起始页开始,获取连续的数据单页,提取数据单页中的实体数据,反序列化后,进行合并,得到一个完整的数据表格;
未被选择的任务所对应的数据单页存储在缓存服务器中,当收到加载任意一个数据单页的请求页数据请求时,直接从缓存服务器中提取该数据单页。
CN201610546947.1A 2016-07-13 2016-07-13 一种实现基于多任务的数据请求方法 Active CN106227739B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (6)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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