CN109976895A - 一种数据库的多任务并发处理方法和装置 - Google Patents

一种数据库的多任务并发处理方法和装置 Download PDF

Info

Publication number
CN109976895A
CN109976895A CN201910278417.7A CN201910278417A CN109976895A CN 109976895 A CN109976895 A CN 109976895A CN 201910278417 A CN201910278417 A CN 201910278417A CN 109976895 A CN109976895 A CN 109976895A
Authority
CN
China
Prior art keywords
task
thread
processing
progress
subtask
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.)
Pending
Application number
CN201910278417.7A
Other languages
English (en)
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.)
Suzhou Wave Intelligent Technology Co Ltd
Original Assignee
Suzhou Wave Intelligent Technology 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 Suzhou Wave Intelligent Technology Co Ltd filed Critical Suzhou Wave Intelligent Technology Co Ltd
Priority to CN201910278417.7A priority Critical patent/CN109976895A/zh
Publication of CN109976895A publication Critical patent/CN109976895A/zh
Pending legal-status Critical Current

Links

Classifications

    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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
    • 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/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明实施例公开了一种数据库的多任务并发处理方法和装置,所述方法包括:在生产者消费者数据模型的消费者一方启动一个处理线程用于识别待处理任务;启动一个线程跟踪任务处理进度;启动多个线程处理每个任务。本发明实施例能同时实现优先处理优先级高的任务和按需分配线程数,有助于提高任务并发处理的效率,有利于CPU资源的合理使用和任务的合理调度。

Description

一种数据库的多任务并发处理方法和装置
技术领域
本发明涉及数据库技术,尤指一种数据库的多任务并发处理方法和装置。
背景技术
“生产者消费者”数据处理模型是在一个系统中,存在“生产者”和“消费者”两种角色,他们通过内存缓冲区进行通信。因双方处理速度等方面的原因,通常存在一个数据缓冲机制,一般是针对数据“消费者”一方处理能力较弱的情形。有些应用系统采用文件及文件上的文件锁作为缓冲方式,而多数应用系统采用成熟的数据库缓冲方式。采用数据库缓冲的优势是数据库提供了数据同步上的保障,应用无需再考虑同步问题。
当基于数据库缓冲的“消费者”一方的数据处理对象,即数据库表记录是一些任务参数时,“消费者”一方的数据处理进程可采用顺序处理、并发处理等多种处理方式。但是,启动一个进程逐个顺序处理的方式缺点是耗时较长、无法优先处理高优先级任务。多线程处理形式的线程池技术的缺点是线程总数是一定的,因而缺乏灵活性,具体是线程池中指定的线程总数较少时,仍存在耗时较长等问题,指定的总数较多时,由于多数线程处于不工作状态,导致CPU利用率很低。因此,现有技术对数据库的多任务情况的处理方法有缺陷。
发明内容
为了解决上述技术问题,本发明实施例提供了一种数据库的多任务并发处理方法和装置,能同时实现优先处理优先级高的任务和按需分配线程数,提高了任务并发处理的效率。
为了达到本发明目的,一方面,本发明实施例提供了一种数据库的多任务并发处理方法,包括:
在生产者消费者数据模型的消费者一方启动一个处理线程用于识别待处理任务;
启动一个线程跟踪任务处理进度;
启动多个线程处理每个任务。
进一步地,所述在生产者消费者数据模型的消费者一方启动一个处理线程用于识别待处理任务还包括:
在数据库表上设置一个用于标识当前任务的处理进度的字段,所述字段的不同值表示任务的处理进度情况及优先级;
识别待处理任务的线程,每隔指定的时间间隔扫描所述数据库表,将未处理的一组任务按照优先级排列;按照所述优先级将所述待处理任务全部分配出去后,休眠指定的时间间隔后重新扫描所述数据库表。
进一步地,所述启动一个线程跟踪任务处理进度包括:
跟踪任务处理进度的线程对任务作切分并启动多个线程来分别处理切分出来的子任务,等切分出来的所述子任务全部执行完后,更新任务的进度标识数值。
进一步地,所述启动一个线程跟踪任务处理进度还包括:
所述切分出来的子任务上存在一个数据缓冲,采用内存队列作为缓冲方式,处理切分子任务的线程结束运行后,所述内存队列中子任务数目减一,所有子任务都处理完毕后则内存队列为空,队列为空时,更新所述进度标识数值。
进一步地,所述启动多个线程处理每个任务包括:
每个线程处理一个切分出来的子任务;每个线程完成具体的功能后,操作内存队列使所述子任务数减一。
另一方面,本发明实施例还提供了一种数据库的多任务并发处理装置,包括:
识别模块,用于在生产者消费者数据模型的消费者一方启动一个处理线程用于识别待处理任务;
跟踪模块,用于启动一个线程跟踪任务处理进度;
处理模块,用于启动多个线程处理每个任务。
进一步地,所述识别模块用于:
在数据库表上设置一个用于标识当前任务的处理进度的字段,所述字段的不同值表示任务的处理进度情况及优先级;
识别待处理任务的线程,每隔指定的时间间隔扫描所述数据库表,将未处理的一组任务按照优先级排列;按照所述优先级将所述待处理任务全部分配出去后,休眠指定的时间间隔后重新扫描所述数据库表。
进一步地,所述跟踪用于:
跟踪任务处理进度的线程对任务作切分并启动多个线程来分别处理切分出来的子任务,等切分出来的所述子任务全部执行完后,更新任务的进度标识数值。
进一步地,所述跟踪还用于:
所述切分出来的子任务上存在一个数据缓冲,采用内存队列作为缓冲方式,处理切分子任务的线程结束运行后,所述内存队列中子任务数目减一,所有子任务都处理完毕后则内存队列为空,队列为空时,更新所述进度标识数值。
进一步地,所述处理模块用于:
每个线程处理一个切分出来的子任务;每个线程完成具体的功能后,操作内存队列使所述子任务数减一。
本发明实施例通过在生产者消费者数据模型的消费者一方启动一个处理线程用于识别待处理任务;启动一个线程跟踪任务处理进度;启动多个线程处理每个任务。本发明实施例能同时实现优先处理优先级高的任务和按需分配线程数,有助于提高任务并发处理的效率,有利于CPU资源的合理使用和任务的合理调度。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。
图1为本发明实施例数据库的多任务并发处理方法的流程图;
图2为本发明实施例数据库的多任务并发处理装置的结构图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图1为本发明实施例数据库的多任务并发处理方法的流程图,如图1所示,本发明实施例的方法包括以下步骤:
步骤100:在生产者消费者数据模型的消费者一方启动一个处理线程用于识别待处理任务;
步骤101:启动一个线程跟踪任务处理进度;
步骤102:启动多个线程处理每个任务。
具体地,本发明实施例涉及基于数据库的多任务并发处理的技术,是针对每个任务的多道程序并行处理方法,能同时解决优先处理优先级高的任务和按需分配线程数的方法。
本发明实施例提出一种在“消费者”一方启动一个处理线程,用于识别待处理任务、启动一个线程跟踪任务处理进度并启动多个线程处理每个任务的多道程序并行处理数据库表中任务的方法。本方法可同时解决优先级高的任务优先处理和线程数按需分配问题。
本发明技术实现的具体实施过程分成三部分:
第一,表字段设计和识别待处理任务的线程逻辑设计与实现;
第二,跟踪任务处理进度的线程逻辑设计与实现;
第三,处理每个任务的多个线程的逻辑的设计与实现。
每部分展开如下:
数据库表,假设为表A上设置一个用于标识当前任务的处理进度的字段,比如此字段的值为数字0和1时表示任务未处理,数字0表示高优先级,数字1表示低优先级,数字-1表示任务处理中,数字2表示任务处理完成。识别待处理任务的线程每隔指定的时间间隔扫描表A,从中取出值为数字0或1的一组任务形成一个任务列表B,对列表B按优先级排序,然后按顺序从列表B中取出每个任务,先将此任务的进度标识修改为-1,表示任务处理中。然后启动一个跟踪线程对任务作后续处理。当列表B中任务全部分配出去后休眠指定的时间间隔后重新扫描表A。
跟踪任务处理进度的线程的一个功能是对任务作切分并启动多个线程来分别处理切分出来的子任务一个是等切分出来的子任务全部执行完后更新任务的进度标识为数字2,表示任务处理完成。实际上切分出来的子任务上也存在一个数据缓冲,一般可采用内存队列作为缓冲方式,处理切分子任务的线程结束运行后,内存队列中子任务数目减一,所有子任务都处理完毕后则内存队列为空,队列为空时跟踪线程更新进度标识为数字2。
处理每个任务的多个线程的逻辑设计与实现,实际上这儿的每个线程处理一个切分出来的子任务。每个线程完成具体的功能,可以是读写网络或读写磁盘等即可,完成具体功能后操作内存队列使子任务数减一。
上述实施方案可解决任务优先级问题,同时保证了线程池方式的灵活性。
本发明实施例提出的是多道程序并行处理数据库表中任务的方法,给出了任务并发处理的新思路和新方式,有助于提高并发处理的效率,有利于CPU资源的合理使用和任务的合理调度。
本发明实施例的方法在每个具体任务的层次上进行多线程处理,而不是在所有任务上作多线程处理,同时利用任务进度标识字段,保证了高优先级任务的优先执行。这种方式解决了单线程处理的低效及全局线程池的资源浪费或不灵活等问题。
图2为本发明实施例数据库的多任务并发处理装置的结构图,如图2所示,本发明实施例另一方面提供的一种数据库的多任务并发处理装置,包括:
识别模块201,用于在生产者消费者数据模型的消费者一方启动一个处理线程用于识别待处理任务;
跟踪模块202,用于启动一个线程跟踪任务处理进度;
处理模块203,用于启动多个线程处理每个任务。
进一步地,所述识别模块201用于:
在数据库表上设置一个用于标识当前任务的处理进度的字段,所述字段的不同值表示任务的处理进度情况及优先级;
识别待处理任务的线程,每隔指定的时间间隔扫描所述数据库表,将未处理的一组任务按照优先级排列;按照所述优先级将所述待处理任务全部分配出去后,休眠指定的时间间隔后重新扫描所述数据库表。
进一步地,所述跟踪模块202用于:
跟踪任务处理进度的线程对任务作切分并启动多个线程来分别处理切分出来的子任务,等切分出来的所述子任务全部执行完后,更新任务的进度标识数值。
进一步地,所述跟踪模块202还用于:
所述切分出来的子任务上存在一个数据缓冲,采用内存队列作为缓冲方式,处理切分子任务的线程结束运行后,所述内存队列中子任务数目减一,所有子任务都处理完毕后则内存队列为空,队列为空时,更新所述进度标识数值。
进一步地,所述处理模块203用于:
每个线程处理一个切分出来的子任务;每个线程完成具体的功能后,操作内存队列使所述子任务数减一。
本发明实施例基于数据库表记录的任务并发执行的思路和具体的实施步骤通过在生产者消费者数据模型的消费者一方启动一个处理线程用于识别待处理任务;启动一个线程跟踪任务处理进度;启动多个线程处理每个任务。本发明实施例能同时实现优先处理优先级高的任务和按需分配线程数,有助于提高任务并发处理的效率,有利于CPU资源的合理使用和任务的合理调度。
虽然本发明所揭露的实施方式如上,但所述的内容仅为便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式及细节上进行任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。

Claims (10)

1.一种数据库的多任务并发处理方法,其特征在于,包括:
在生产者消费者数据模型的消费者一方启动一个处理线程用于识别待处理任务;
启动一个线程跟踪任务处理进度;
启动多个线程处理每个任务。
2.根据权利要求1所述的数据库的多任务并发处理方法,其特征在于,所述在生产者消费者数据模型的消费者一方启动一个处理线程用于识别待处理任务还包括:
在数据库表上设置一个用于标识当前任务的处理进度的字段,所述字段的不同值表示任务的处理进度情况及优先级;
识别待处理任务的线程,每隔指定的时间间隔扫描所述数据库表,将未处理的一组任务按照优先级排列;按照所述优先级将所述待处理任务全部分配出去后,休眠指定的时间间隔后重新扫描所述数据库表。
3.根据权利要求2所述的数据库的多任务并发处理方法,其特征在于,所述启动一个线程跟踪任务处理进度包括:
跟踪任务处理进度的线程对任务作切分并启动多个线程来分别处理切分出来的子任务,等切分出来的所述子任务全部执行完后,更新任务的进度标识数值。
4.根据权利要求3所述的数据库的多任务并发处理方法,其特征在于,所述启动一个线程跟踪任务处理进度还包括:
所述切分出来的子任务上存在一个数据缓冲,采用内存队列作为缓冲方式,处理切分子任务的线程结束运行后,所述内存队列中子任务数目减一,所有子任务都处理完毕后则内存队列为空,队列为空时,更新所述进度标识数值。
5.根据权利要求4所述的数据库的多任务并发处理方法,其特征在于,所述启动多个线程处理每个任务包括:
每个线程处理一个切分出来的子任务;每个线程完成具体的功能后,操作内存队列使所述子任务数减一。
6.一种数据库的多任务并发处理装置,其特征在于,包括:
识别模块,用于在生产者消费者数据模型的消费者一方启动一个处理线程用于识别待处理任务;
跟踪模块,用于启动一个线程跟踪任务处理进度;
处理模块,用于启动多个线程处理每个任务。
7.根据权利要求6所述的数据库的多任务并发处理装置,其特征在于,所述识别模块用于:
在数据库表上设置一个用于标识当前任务的处理进度的字段,所述字段的不同值表示任务的处理进度情况及优先级;
识别待处理任务的线程,每隔指定的时间间隔扫描所述数据库表,将未处理的一组任务按照优先级排列;按照所述优先级将所述待处理任务全部分配出去后,休眠指定的时间间隔后重新扫描所述数据库表。
8.根据权利要求7所述的数据库的多任务并发处理装置,其特征在于,所述跟踪用于:
跟踪任务处理进度的线程对任务作切分并启动多个线程来分别处理切分出来的子任务,等切分出来的所述子任务全部执行完后,更新任务的进度标识数值。
9.根据权利要求8所述的数据库的多任务并发处理装置,其特征在于,所述跟踪还用于:
所述切分出来的子任务上存在一个数据缓冲,采用内存队列作为缓冲方式,处理切分子任务的线程结束运行后,所述内存队列中子任务数目减一,所有子任务都处理完毕后则内存队列为空,队列为空时,更新所述进度标识数值。
10.根据权利要求9所述的数据库的多任务并发处理装置,其特征在于,所述处理模块用于:
每个线程处理一个切分出来的子任务;每个线程完成具体的功能后,操作内存队列使所述子任务数减一。
CN201910278417.7A 2019-04-09 2019-04-09 一种数据库的多任务并发处理方法和装置 Pending CN109976895A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910278417.7A CN109976895A (zh) 2019-04-09 2019-04-09 一种数据库的多任务并发处理方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910278417.7A CN109976895A (zh) 2019-04-09 2019-04-09 一种数据库的多任务并发处理方法和装置

Publications (1)

Publication Number Publication Date
CN109976895A true CN109976895A (zh) 2019-07-05

Family

ID=67083527

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910278417.7A Pending CN109976895A (zh) 2019-04-09 2019-04-09 一种数据库的多任务并发处理方法和装置

Country Status (1)

Country Link
CN (1) CN109976895A (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102129393A (zh) * 2011-03-09 2011-07-20 南京恩瑞特实业有限公司 通用定时任务管理的实现方法
US20130124193A1 (en) * 2011-11-15 2013-05-16 Business Objects Software Limited System and Method Implementing a Text Analysis Service
CN105892996A (zh) * 2015-12-14 2016-08-24 乐视网信息技术(北京)股份有限公司 一种批量数据处理的流水线作业方法及装置
CN106325980A (zh) * 2015-06-30 2017-01-11 中国石油化工股份有限公司 一种多线程并发系统
US20170061364A1 (en) * 2015-08-28 2017-03-02 Exacttarget, Inc. Database systems and related queue management methods
CN107945031A (zh) * 2017-12-25 2018-04-20 泰康保险集团股份有限公司 数据处理系统和再保危险单位数据生成方法
CN108280150A (zh) * 2018-01-05 2018-07-13 宝付网络科技(上海)有限公司 一种分布式异步业务分发方法及系统
CN109358960A (zh) * 2018-11-01 2019-02-19 郑州云海信息技术有限公司 一种任务分发方法、系统、设备及计算机可读存储介质

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102129393A (zh) * 2011-03-09 2011-07-20 南京恩瑞特实业有限公司 通用定时任务管理的实现方法
US20130124193A1 (en) * 2011-11-15 2013-05-16 Business Objects Software Limited System and Method Implementing a Text Analysis Service
CN106325980A (zh) * 2015-06-30 2017-01-11 中国石油化工股份有限公司 一种多线程并发系统
US20170061364A1 (en) * 2015-08-28 2017-03-02 Exacttarget, Inc. Database systems and related queue management methods
CN105892996A (zh) * 2015-12-14 2016-08-24 乐视网信息技术(北京)股份有限公司 一种批量数据处理的流水线作业方法及装置
CN107945031A (zh) * 2017-12-25 2018-04-20 泰康保险集团股份有限公司 数据处理系统和再保危险单位数据生成方法
CN108280150A (zh) * 2018-01-05 2018-07-13 宝付网络科技(上海)有限公司 一种分布式异步业务分发方法及系统
CN109358960A (zh) * 2018-11-01 2019-02-19 郑州云海信息技术有限公司 一种任务分发方法、系统、设备及计算机可读存储介质

Similar Documents

Publication Publication Date Title
US8473951B2 (en) Method and system for traversing in reverse chronological order along a critical path of a plurality of jobs, and reducing time gaps between jobs until an estimated end time of the last job is less than or equal to a target end time
JP4694595B2 (ja) スリープキュー管理
US10089142B2 (en) Dynamic task prioritization for in-memory databases
JP3987384B2 (ja) 実行キュー管理
Linn et al. Hybrid flow shop scheduling: a survey
CN104199730B (zh) 一种基于同步i/o复用机制的单线程多任务处理方法
US8607249B2 (en) System and method for efficient concurrent queue implementation
KR101686010B1 (ko) 실시간 멀티코어 시스템의 동기화 스케쥴링 장치 및 방법
US20130117753A1 (en) Many-core Process Scheduling to Maximize Cache Usage
US9104500B1 (en) Lock-free job scheduler for multi-processor systems
WO2013165450A1 (en) Process scheduling using scheduling graph to minimize managed elements
EP3008594A1 (en) Assigning and scheduling threads for multiple prioritized queues
CN106462395A (zh) 多线程处理器架构中的线程等待
US20140047455A1 (en) Deterministic parallelization through atomic task computation
WO2013041366A1 (en) Concurrent processing of queued messages
CN108319495A (zh) 任务处理方法及装置
CN112559159A (zh) 一种基于分布式部署的任务调度方法
CN112579267A (zh) 一种去中心化大数据作业流调度方法及装置
US9367350B2 (en) Meta-scheduler with meta-contexts
CN105607956B (zh) 一种计算机中的任务分配方法及系统
CN106021100B (zh) 一种支持并行测试的测试任务运行调度方法
EP2840513A1 (en) Dynamic task prioritization for in-memory databases
CN105227648B (zh) 一种基于时间桶的地铁综合监控系统时间序列触发方法
CN109976895A (zh) 一种数据库的多任务并发处理方法和装置
CN103530742B (zh) 提高排程运算速度的方法及装置

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
RJ01 Rejection of invention patent application after publication

Application publication date: 20190705

RJ01 Rejection of invention patent application after publication