CN116795518B - 扫描算子执行方法、装置、电子设备和计算机可读介质 - Google Patents

扫描算子执行方法、装置、电子设备和计算机可读介质 Download PDF

Info

Publication number
CN116795518B
CN116795518B CN202311075681.3A CN202311075681A CN116795518B CN 116795518 B CN116795518 B CN 116795518B CN 202311075681 A CN202311075681 A CN 202311075681A CN 116795518 B CN116795518 B CN 116795518B
Authority
CN
China
Prior art keywords
operator
scanning
thread
scanning operator
input
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
CN202311075681.3A
Other languages
English (en)
Other versions
CN116795518A (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.)
Beijing Flywheel Data Technology Co ltd
Original Assignee
Beijing Flywheel Data 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 Beijing Flywheel Data Technology Co ltd filed Critical Beijing Flywheel Data Technology Co ltd
Priority to CN202311075681.3A priority Critical patent/CN116795518B/zh
Publication of CN116795518A publication Critical patent/CN116795518A/zh
Application granted granted Critical
Publication of CN116795518B publication Critical patent/CN116795518B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/484Precedence
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5021Priority
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

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的资源利用率,减少了CPU资源的浪费以及缩短了线程执行扫描算子的耗时。

Description

扫描算子执行方法、装置、电子设备和计算机可读介质
技术领域
本公开的实施例涉及计算机技术领域,具体涉及扫描算子执行方法、装置、电子设备和计算机可读介质。
背景技术
通过线程对扫描算子的执行,可以对数据库进行查询等操作,且可以提升CPU资源的利用率。目前,在执行扫描算子操作时,通常采用的方式为:采用多线程并行执行多个扫描算子,当扫描算子需执行IO操作时,计算线程暂停对扫描算子的操作,等待扫描算子执行IO操作后,继续执行扫描算子。
然而,发明人发现,当采用上述方式执行扫描算子时,经常会存在如下技术问题:
第一,当扫描算子需执行IO操作时,执行扫描算子的线程暂停执行扫描算子的计算逻辑,等待扫描算子执行IO操作后再继续执行扫描算子的计算逻辑,造成在扫描算子执行IO操作时,CPU分配给执行扫描算子的资源为空闲状态,造成CPU的资源利用率较低,导致CPU资源的浪费以及线程执行扫描算子的耗时较长。
第二,在IO线程执行IO任务时,未考虑对数据库查询语句进行消冗处理,IO线程执行IO任务的性能较差,造成执行IO任务的耗时较长。
第三,在计算线程执行扫描算子的计算逻辑时,未考虑预测计算线程执行扫描算子的计算逻辑需耗费的CPU资源量,造成为计算线程划分的CPU资源量的准确性较低,导致所划分的资源量浪费或资源量不足。
该背景技术部分中所公开的以上信息仅用于增强对本发明构思的背景的理解,并因此,其可包含并不形成本国的本领域普通技术人员已知的现有技术的信息。
发明内容
本公开的内容部分用于以简要的形式介绍构思,这些构思将在后面的具体实施方式部分被详细描述。本公开的内容部分并不旨在标识要求保护的技术方案的关键特征或必要特征,也不旨在用于限制所要求的保护的技术方案的范围。
本公开的一些实施例提出了扫描算子执行方法、装置、电子设备和计算机可读介质,来解决以上背景技术部分提到的技术问题中的一项或多项。
第一方面,本公开的一些实施例提供了一种扫描算子执行方法,该方法包括:根据对应目标数据库的扫描操作信息,控制第一线程执行扫描算子选择操作,得到扫描算子序列;将所得到的扫描算子序列中满足第一执行优先级条件的扫描算子确定为目标扫描算子;根据输入输出任务队列、目标扫描算子和扫描算子阻塞队列,执行以下调度步骤:控制上述第一线程执行目标扫描算子,以及控制第二线程执行输入输出任务队列中满足第一预设执行条件的输入输出任务,其中,上述第一线程和上述第二线程并发运行;响应于检测到目标扫描算子需执行输入输出任务,控制上述第一线程向输入输出任务队列提交对应目标扫描算子的输入输出任务,以及将目标扫描算子提交到扫描算子阻塞队列,得到变更输入输出任务队列和变更扫描算子阻塞队列;响应于确定变更扫描算子阻塞队列中不存在满足第二预设执行条件的扫描算子,将扫描算子序列中满足第二执行优先级条件的扫描算子确定为变更目标扫描算子;将所得到的变更输入输出任务队列、变更目标扫描算子和变更扫描算子阻塞队列分别作为输入输出任务队列、目标扫描算子和扫描算子阻塞队列,再次执行上述调度步骤。
第二方面,本公开的一些实施例提供了一种扫描算子执行装置,装置包括:控制单元,被配置成根据对应目标数据库的扫描操作信息,控制第一线程执行扫描算子选择操作,得到扫描算子序列;确定单元,被配置成将所得到的扫描算子序列中满足第一执行优先级条件的扫描算子确定为目标扫描算子;执行单元,被配置成根据输入输出任务队列、目标扫描算子和扫描算子阻塞队列,执行以下调度步骤:控制上述第一线程执行目标扫描算子,以及控制第二线程执行输入输出任务队列中满足第一预设执行条件的输入输出任务,其中,上述第一线程和上述第二线程并发运行;响应于检测到目标扫描算子需执行输入输出任务,控制上述第一线程向输入输出任务队列提交对应目标扫描算子的输入输出任务,以及将目标扫描算子提交到扫描算子阻塞队列,得到变更输入输出任务队列和变更扫描算子阻塞队列;响应于确定变更扫描算子阻塞队列中不存在满足第二预设执行条件的扫描算子,将扫描算子序列中满足第二执行优先级条件的扫描算子确定为变更目标扫描算子;将所得到的变更输入输出任务队列、变更目标扫描算子和变更扫描算子阻塞队列分别作为输入输出任务队列、目标扫描算子和扫描算子阻塞队列,再次执行上述调度步骤。
第三方面,本公开的一些实施例提供了一种电子设备,包括:一个或多个处理器;存储装置,其上存储有一个或多个程序,当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现上述第一方面任一实现方式所描述的方法。
第四方面,本公开的一些实施例提供了一种计算机可读介质,其上存储有计算机程序,其中,上述计算机程序被处理器执行时实现上述第一方面任一实现方式所描述的方法。
本公开的上述各个实施例具有如下有益效果:通过本公开的一些实施例的扫描算子执行方法,提升了CPU资源的利用率,减少了CPU资源的浪费以及缩短了线程执行扫描算子的耗时。具体来说,造成CPU资源的利用率较低,CPU资源的浪费较多以及线程执行扫描算子的耗时较长的原因在于:当扫描算子需执行IO操作时,执行扫描算子的线程暂停执行扫描算子的计算逻辑,等待扫描算子执行IO操作后再继续执行扫描算子的计算逻辑,造成在扫描算子执行IO操作时,CPU分配给执行扫描算子的资源为空闲状态,造成CPU的资源利用率较低,导致CPU资源的浪费以及线程执行扫描算子的耗时较长。基于此,本公开的一些实施例的扫描算子执行方法,首先,根据对应目标数据库的扫描操作信息,控制第一线程执行扫描算子选择操作,得到扫描算子序列。由此,可以得到对上述目标数据库进行扫描操作的扫描算子序列。然后,将所得到的扫描算子序列中满足第一执行优先级条件的扫描算子确定为目标扫描算子。从而可以得到表征优先级较高的扫描算子。之后,根据输入输出任务队列、目标扫描算子和扫描算子阻塞队列,执行以下调度步骤:首先,控制上述第一线程执行目标扫描算子,以及控制第二线程执行输入输出任务队列中满足第一预设执行条件的输入输出任务。其中,上述第一线程和上述第二线程并发运行。由此,可以同时执行输入输出任务和扫描算子序列中的扫描算子的计算逻辑。然后,响应于检测到目标扫描算子需执行输入输出任务,控制上述第一线程向输入输出任务队列提交对应目标扫描算子的输入输出任务,以及将目标扫描算子提交到扫描算子阻塞队列,得到变更输入输出任务队列和变更扫描算子阻塞队列。由此,可以得到表征对输入输出任务队列更新后的变更输入输出任务队列和对扫描算子阻塞队列更新后的变更扫描算子阻塞队列。之后,响应于确定变更扫描算子阻塞队列中不存在满足第二预设执行条件的扫描算子,将扫描算子序列中满足第二执行优先级条件的扫描算子确定为变更目标扫描算子。由此,可以得到更新后的目标扫描算子,且可以根据更新后的目标扫描算子再次执行上述调度步骤。最后,将所得到的变更输入输出任务队列、变更目标扫描算子和变更扫描算子阻塞队列分别作为输入输出任务队列、目标扫描算子和扫描算子阻塞队列,再次执行上述调度步骤。由此,可以再次执行上述调度步骤,以执行扫描算子的计算逻辑和扫描算子的输入输出任务。也因为当扫描算子需执行输入输出任务时,计算线程无需等待该扫描算子执行输入输出任务后再继续执行该扫描算子的计算线程,而是可以直接执行下一个扫描算子的计算逻辑,所以CPU分配给计算线程用于执行扫描算子的资源未处于空闲状态,从而提升了CPU的资源利用率,减少了CPU资源的浪费以及缩短了线程执行扫描算子的耗时。
附图说明
结合附图并参考以下具体实施方式,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。贯穿附图中,相同或相似的附图标记表示相同或相似的元素。应当理解附图是示意性的,元件和元素不一定按照比例绘制。
图1是根据本公开的扫描算子执行方法的一些实施例的流程图;
图2是根据本公开的扫描算子执行装置的一些实施例的结构示意图;
图3是适于用来实现本公开的一些实施例的电子设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例。相反,提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。
需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
下面将参考附图并结合实施例来详细说明本公开。
图1示出了根据本公开的扫描算子执行方法的一些实施例的流程100。该扫描算子执行方法,包括以下步骤:
步骤101,根据对应目标数据库的扫描操作信息,控制第一线程执行扫描算子选择操作,得到扫描算子序列。
在一些实施例中,扫描算子执行方法的执行主体(例如计算设备)可以根据对应目标数据库的扫描操作信息,控制第一线程执行扫描算子选择操作,得到扫描算子序列。其中,上述扫描操作信息可以为对上述目标数据库的查询处理操作。上述目标数据库可以为存储数据的任意数据库。上述第一线程可以为执行扫描算子的计算逻辑和对扫描算子进行选择操作的计算线程。上述扫描算子序列可以表征按照扫描算子的先后选择顺序排序后的各个扫描算子。上述扫描算子可以为具有计算逻辑的算子。上述扫描算子可以为但不限于以下中的一项:位图扫描算子、索引扫描算子、顺序扫描算子。实践中,上述执行主体可以通过各种方式根据对应目标数据库的扫描操作信息,控制第一线程执行扫描算子选择操作,得到扫描算子序列。
在一些实施例的一些可选的实现方式中,上述执行主体可以通过以下步骤根据对应目标数据库的扫描操作信息,控制第一线程执行扫描算子选择操作,得到扫描算子序列:
第一步,根据预设过滤条件,对上述目标数据库中的各个数据表进行过滤处理,得到过滤后的各个数据表。其中,上述预设过滤条件可以为数据表中的数据符合预设的where语句的筛选条件。上述各个数据表可以为上述目标数据库中存储的数据表。实践中,上述执行主体可以通过预设的where语句的筛选条件对各个数据表进行过滤处理,得到过滤处理后的各个数据表。例如,where语句可以为“SELECT * FROM Websites WHERE City='Beijing'”。where语句的筛选条件可以为“City='Beijing'”。
第二步,确定对应过滤后的各个数据表的总数据量信息。其中,上述总数据量信息可以表征各个数据库表中包括的数据总量。上述数据总量可以表征过滤后的各个数据表中包含的数据数量。实践中,上述执行主体可以将各个数据表中每个数据表中的数据量相加,得到各个数据表中的总数据量。例如,总数据量信息可以表征各个数据库表中的数据总量为100条。
第三步,响应于确定对应过滤后的各个数据表的总数据量信息处于第一预设总数据量信息区间,控制上述第一线程选择各个第一扫描算子。其中,上述第一预设总数据量信息区间可以表征数据数量的范围。例如,第一预设总数据量信息区间可以为[40-100)。上述各个第一扫描算子可以表征各个索引扫描算子。实践中,首先,上述执行主体可以确定上述总数据量信息处于的区间范围。然后,响应于确定上述总数据量信息处于第一预设总数据量信息区间,从预设区间算子关系表中选择对应第一预设总数据量信息区间的各个索引扫描算子作为各个第一扫描算子。上述预设区间算子关系表可以表征区间范围与扫描算子的对应关系。例如,预设区间算子关系表可以包括:第一预设总数据量信息区间[40-100),第一预设总数据量信息区间对应的扫描算子:索引扫描算子。
第四步,响应于确定对应过滤后的各个数据表的总数据量信息处于第二预设总数据量信息区间,控制上述第一线程选择各个第二扫描算子。其中,上述第二预设总数据量信息区间可以为数据数量的范围。例如,第二预设总数据量信息区间可以为[100-500)。上述各个第二扫描算子可以表征各个位图扫描算子。实践中,首先,上述执行主体可以确定上述总数据量信息处于的区间范围。然后,响应于确定上述总数据量信息处于第二预设总数据量信息区间,从上述预设区间算子关系表中选择对应第二预设总数据量信息区间的各个位图扫描算子作为各个第二扫描算子。需要说明的是,上述第一预设总数据量信息区间中最大的数据量小于上述第二预设总数据量信息区间中最小的数据量。
第五步,响应于确定对应过滤后的各个数据表的总数据量信息处于第三预设总数据量信息区间,控制上述第一线程选择各个第三扫描算子。其中,上述第三预设总数据量信息区间可以为数据数量的范围。例如,第三预设总数据量信息区间可以为[500-800)。上述各个第三扫描算子可以表征各个顺序扫描算子。实践中,首先,上述执行主体可以确定上述总数据量信息处于的区间范围。然后,响应于确定上述总数据量信息处于第三预设总数据量信息区间,从上述预设区间算子关系表中选择对应第三预设总数据量信息区间的各个顺序扫描算子作为各个第三扫描算子。需要说明的是,上述第三预设总数据量信息区间中最小的数据量大于上述第二预设总数据量信息区间中最大的数据量。
第六步,将所选择的各个扫描算子进行排序,以及将排序后的各个扫描算子组合为扫描算子序列。其中,上述扫描算子序列可以为依据选择的先后顺序排序得到的序列。上述扫描算子序列中的扫描算子均对应有序号。实践中,上述执行主体可以按照各个扫描算子的选择顺序,对所选择的各个扫描算子进行排序。
可选地,在步骤101之前,首先,上述执行主体还可以根据线程任务类型,确定是否对线程存储模块进行分割处理。其中,上述线程任务类型可以表征执行扫描算子的任务类型。例如,线程任务类型可以为但不限于以下中的一项:CPU密集型任务、IO密集型任务、混合性任务。实践中,上述执行主体可以确定线程任务类型是否为混合性任务。然后,响应于确定线程任务类型为混合性任务,对线程存储模块进行分割处理。
然后,可以响应于检测到上述线程任务类型包括第一线程任务和第二线程任务,对上述线程存储模块进行分割处理,得到第一线程存储模块和第二线程存储模块。其中,上述线程任务类型中包括第一线程任务和第二线程任务可以表征上述线程任务类型为混合性任务。上述第一线程任务可以为CPU密集型任务。上述第二线程任务可以为IO密集型任务。上述线程存储模块可以表征线程池。实践中,上述执行主体可以按照混合性任务表征的线程数量对上述线程存储模块进行等比例分割,得到两个线程存储模块分别作为第一线程存储模块和第二线程存储模块。上述第一线程存储模块可以为存储第一线程的子线程池。上述第二线程存储模块可以为存储第二线程的子线程池。
接着,可以从所得到第一线程存储模块和第二线程存储模块中分别获取第一线程和第二线程。
步骤102,将所得到的扫描算子序列中满足第一执行优先级条件的扫描算子确定为目标扫描算子。
在一些实施例中,上述执行主体可以将所得到的扫描算子序列中满足第一执行优先级条件的扫描算子确定为目标扫描算子。其中,上述第一执行优先级条件可以为扫描算子的序号最小。上述目标扫描算子可以为上述扫描算子序列中序号最小的扫描算子。实践中,上述执行主体可以通过各种方式将所得到的扫描算子序列中满足第一执行优先级条件的扫描算子确定为目标扫描算子。
步骤103,根据输入输出任务队列、目标扫描算子和扫描算子阻塞队列,执行以下调度步骤:
步骤1031,控制第一线程执行目标扫描算子,以及控制第二线程执行输入输出任务队列中满足第一预设执行条件的输入输出任务。
在一些实施例中,上述执行主体可以控制上述第一线程执行目标扫描算子,以及控制第二线程执行输入输出任务队列中满足第一预设执行条件的输入输出任务。其中,上述第一线程和上述第二线程可以为并发运行。上述第二线程可以为执行输入输出任务的IO线程。上述输入输出任务队列中的输入输出任务可以为扫描算子需执行的IO操作。上述输入输出任务队列中的输入输出任务均对应有序号。上述第一预设执行条件可以为对应输入输出任务的序号最小。实践中,上述执行主体可以通过各种方式控制上述第一线程执行目标扫描算子,以及控制第二线程执行输入输出任务队列中满足第一预设执行条件的输入输出任务。需要说明的是,上述第一线程和上述第二线程为并发运行可以表征计算线程和IO线程是同时执行操作的。例如,IO线程在执行扫描算子的输入输出任务时,计算线程并未处于等待状态,而是在执行下一个扫描算子的计算逻辑。因此,计算线程执行扫描算子的计算逻辑和IO线程执行扫描算子的输入输出任务是同时进行的。
步骤1032,响应于检测到目标扫描算子需执行输入输出任务,控制第一线程向输入输出任务队列提交对应目标扫描算子的输入输出任务,以及将目标扫描算子提交到扫描算子阻塞队列,得到变更输入输出任务队列和变更扫描算子阻塞队列。
在一些实施例中,上述执行主体可以响应于检测到目标扫描算子需执行输入输出任务,控制第一线程向输入输出任务队列提交对应目标扫描算子的输入输出任务,以及将目标扫描算子提交到扫描算子阻塞队列,得到变更输入输出任务队列和变更扫描算子阻塞队列。其中,上述输入输出任务可以为IO操作。上述扫描算子阻塞队列可以表征因需执行输入输出任务而被暂停执行计算逻辑的各个扫描算子。上述扫描算子阻塞队列中的各个扫描算子均对应有序号。上述变更输入输出任务队列可以表征输入输出任务队列中添加了对应目标扫描算子的输入输出任务的队列。上述变更扫描算子阻塞队列可以表征添加了目标扫描算子的队列。实践中,上述执行主体可以通过各种方式响应于检测到目标扫描算子需执行输入输出任务,控制第一线程向输入输出任务队列提交对应目标扫描算子的输入输出任务,以及将目标扫描算子提交到扫描算子阻塞队列,得到变更输入输出任务队列和变更扫描算子阻塞队列。
可选地,在步骤1032之后,首先,上述执行主体还可以响应于确定变更扫描算子阻塞队列中存在满足第二预设执行条件的扫描算子,对满足上述第二预设执行条件的扫描算子进行唤醒处理。实践中,上述第二预设执行条件可以为扫描算子的输入输出任务执行完毕。实践中,上述执行主体可以根据主动唤醒的方式,对满足上述第二预设执行条件的扫描算子进行唤醒处理。例如,主动唤醒的方式可以为condition_variable的notify_one( )。
然后,可以将唤醒处理后的扫描算子添加至扫描算子序列,得到变更扫描算子序列。
接着,可以将上述变更扫描算子序列中满足上述第一执行优先级条件的扫描算子确定为变更目标扫描算子。其中,上述变更目标扫描算子可以为序号最小的扫描算子。
可选地,在响应于确定变更扫描算子阻塞队列中存在满足第二预设执行条件的扫描算子,对满足上述第二预设执行条件的扫描算子进行唤醒处理之后,首先,上述执行主体还可以在变更扫描算子阻塞队列和变更输入输出任务队列中分别将满足第二预设执行条件的目标扫描算子和对应目标扫描算子的输入输出任务删除,得到更新后的变更输入输出任务队列和更新后的变更扫描算子阻塞队列。其中,上述更新后的变更输入输出任务队列可以为删除对应目标扫描算子的输入输出任务后的变更输入输出任务队列。上述更新后的变更扫描算子阻塞队列可以为删除目标扫描算子后的变更扫描算子阻塞队列。
然后,可以将所得到的更新后的变更输入输出任务队列和更新后的变更扫描算子阻塞队列分别确定为变更输入输出任务队列和变更扫描算子阻塞队列。
步骤1033,响应于确定变更扫描算子阻塞队列中不存在满足第二预设执行条件的扫描算子,将扫描算子序列中满足第二执行优先级条件的扫描算子确定为变更目标扫描算子。
在一些实施例中,上述执行主体可以响应于确定变更扫描算子阻塞队列中不存在满足第二预设执行条件的扫描算子,将扫描算子序列中满足第二执行优先级条件的扫描算子确定为变更目标扫描算子。其中,上述变更目标扫描算子可以为输出输出任务执行完毕且序号最小的扫描算子。实践中,上述执行主体可以通过各种方式响应于确定变更扫描算子阻塞队列中不存在满足第二预设执行条件的扫描算子,将扫描算子序列中满足第二执行优先级条件的扫描算子确定为变更目标扫描算子。
步骤1034,将所得到的变更输入输出任务队列、变更目标扫描算子和变更扫描算子阻塞队列分别作为输入输出任务队列、目标扫描算子和扫描算子阻塞队列,再次执行调度步骤。
在一些实施例中,上述执行主体可以将所得到的变更输入输出任务队列、变更目标扫描算子和变更扫描算子阻塞队列分别作为输入输出任务队列、目标扫描算子和扫描算子阻塞队列,再次执行上述调度步骤。实践中,上述执行主体可以通过各种方式将所得到的变更输入输出任务队列、变更目标扫描算子和变更扫描算子阻塞队列分别作为输入输出任务队列、目标扫描算子和扫描算子阻塞队列,再次执行上述调度步骤。
可选地,在步骤1034之后,首先,上述执行主体可以对上述第二线程执行各个输入输出任务的执行性能信息进行性能预测,以及确定上述第二线程执行各个输入输出任务的执行性能信息是否满足预设执行性能条件。其中,上述执行性能信息可以包括上述第二线程执行各个输入输出任务的耗时。上述预设执行性能条件可以为上述第二线程执行各个输入输出任务的耗时小于预设耗时。实践中,首先,上述执行主体可以从AWR报告中获取上述第二线程执行各个输入输出任务的耗时。然后,可以确定所获取的耗时是否小于上述预设耗时。之后,响应于确定所获取的耗时大于等于上述预设耗时,确定上述第二线程执行各个输入输出任务的执行性能信息不满足上述预设执行性能条件。接着,响应于确定所获取的耗时小于上述预设耗时,确定上述第二线程执行各个输入输出任务的执行性能信息满足上述预设执行性能条件。对于上述预设耗时的具体数值不做具体限定。
然后,可以响应于确定上述执行性能信息不满足上述预设执行性能条件,确定对应上述执行性能信息的性能缺陷信息。其中,上述性能缺陷信息可以表征上述执行性能信息不满足上述预设执行性能条件的因素。
之后,可以响应于确定性能缺陷信息表征各个数据库查询语句中存在满足语句冗余条件的数据库查询语句,根据各个数据库查询语句,生成变更数据库查询语句集合。其中,上述各个数据库查询语句中的数据库查询语句可以表征对数据表进行查询操作的语句。上述语句冗余条件可以为数据库查询语句中包含冗余的表达式或函数。上述变更数据库查询语句集合中的变更数据库查询语句可以为表征冗余的表达式或函数被消冗处理后的语句。
最后,可以响应于确定上述性能缺陷信息表征相关联的存储装置的存储性能不满足预设存储性能条件,对上述性能缺陷信息进行显示。其中,上述存储装置可以为磁盘。上述预设存储性能条件可以为磁盘的读写速度低于预设读写速度。对于上述预设读写速度的具体数值不做限定。例如,性能缺陷信息可以为“磁盘性能差”。
在一些实施例的一些可选的实现方式中,上述执行主体可以通过以下步骤根据各个数据库查询语句,生成变更数据库查询语句集合:
第一步,对各个数据库查询语句中的每个数据库查询语句,执行以下检测步骤:
第一子步骤,对上述数据库查询语句进行字段拆分处理,得到对应上述数据库查询语句的各个字段。实践中,上述执行主体可以将数据库查询语句输入至预先训练的数据库查询语句分割模型,得到对应上述数据库查询语句的各个字段。上述数据库查询语句分割模型可以为对数据库查询语句进行字段分割处理的模型。例如,数据库查询语句分割模型可以为jieba分词模型。
第二子步骤,根据预设冗余字段集合,确定所得到的各个字段中是否存在满足预设冗余字段条件的字段。其中,上述预设冗余字段集合中的预设冗余字段可以表征冗余的表达式结构和函数。例如,预设冗余字段可以为:Y/2=100。上述预设冗余字段条件可以为字段是第一冗余字段或字段是第二冗余字段。上述第一冗余字段可以为表征冗余的表达式结构的字段。上述第二冗余字段可以为表征的函数为冗余函数的字段。实践中,首先,上述执行主体可以将上述各个字段中表征表达式结构的字段确定为第一字段。然后,可以将上述各个字段中表征函数的字段确定为第二字段。之后,可以从上述预设冗余字段集合中确定每个第一字段表征的表达式结构是否均对应有预设冗余字段。响应于确定存在所表征的表达式结构对应有预设冗余字段的第一字段,将所存在的第一字段确定为满足预设冗余字段条件的字段。接着,可以从上述预设冗余字段集合中确定每个第二字段表征的函数是否均对应有预设冗余字段。响应于确定存在所表征的函数对应有预设冗余字段的第二字段,将所存在的第二字段确定为满足预设冗余字段条件的字段。
第三子步骤,响应于确定所得到的各个字段中存在满足预设冗余字段条件的字段,将上述数据库查询语句确定为满足语句冗余条件的数据库查询语句。
第四子步骤,将满足上述语句冗余条件的数据库查询语句作为目标数据库查询语句添加至目标数据库查询语句集合。其中,上述目标数据库查询语句集合可以表征存在冗余字段的各个目标数据库查询语句。
第五子步骤,将满足预设冗余字段条件的字段确定为目标冗余字段。其中,上述目标冗余字段可以表征冗余的表达式结构或函数。
第六子步骤,根据预设消冗字段集合,对所确定的目标冗余字段进行消冗处理,得到消冗处理后的目标数据库查询语句。其中,上述预设消冗字段集合可以表征冗余字段与消冗字段的对应关系表。上述预设消冗字段集合中的预设消冗字段可以包括冗余字段和与其对应的消冗字段。例如,预设消冗字段可以为“冗余字段:Y/2=100,消冗字段:Y=100*2”。实践中,首先,上述执行主体可以从上述预设消冗字段集合中获取满足预设消冗字段条件的预设消冗字段。上述预设消冗字段条件可以为预设消冗字段中的冗余字段表征的表达式结构或函数与上述目标冗余字段表征的表达式结构或函数相同。然后,可以将上述目标冗余字段表征的表达式结构或函数替换为所获取的预设消冗字段中消冗字段所表征的表达式结构或函数,以对上述目标冗余字段进行消冗处理,得到消冗处理后的目标数据库查询语句。
第七子步骤,对上述目标数据库查询语句进行语义识别,得到对应上述目标数据库查询语句的语义文本信息作为第一语义文本信息。其中,上述第一语义文本信息可以表征目标数据库查询语句的语义。实践中,上述执行主体可以使用数据库语句翻译器对目标数据库查询语句进行解析,得到第一语义文本信息。例如,数据库语句翻译器可以为基于人工智能的翻译器。
第八子步骤,对消冗处理后的目标数据库查询语句进行语义识别,得到对应消冗处理后的目标数据库查询语句的语义文本信息作为第二语义文本信息。其中,上述第二语义文本信息可以表征消冗处理后的目标数据库查询语句的语义。实践中,上述执行主体可以对消冗处理后的目标数据库查询语句进行解析,得到第二语义文本信息。需要说明的是,对消冗处理后的目标数据库查询语句进行解析的方式与对目标数据库查询语句进行解析的方式相同,因此,在此不再赘述。
第九子步骤,将上述第一语义文本信息与上述第二语义文本信息输入至预先训练的数据库语句匹配模型,得到对应上述目标数据库查询语句和消冗处理后的目标数据库查询语句的语义匹配度。其中,上述数据库语句匹配模型可以为对文本语义进行匹配的模型。例如,数据库语句匹配模型可以为BERT神经网络模型。上述语义匹配度可以为对应上述第一语义文本信息与上述第二语义文本信息的语义的相似值。例如,语义匹配度可以为80%。
第十子步骤,响应于确定所得到的语义匹配度满足预设匹配度条件,将消冗处理后的目标数据库查询语句确定为变更数据库查询语句。其中,上述预设匹配度条件可以为所得到的语义匹配度大于预设语义匹配度。例如,预设语义匹配度可以为95%。
第三步,将所得到的各个变更数据库查询语句确定为变更数据库查询语句集合。
第四步,将各个数据库查询语句中对应变更数据库查询语句集合的每个数据库查询语句替换为变更数据库查询语句,以对各个数据库查询语句进行更新。由此,可以得到更新后的各个数据库查询语句。
上述技术方案作为本公开的实施例的一个发明点,解决了背景技术提及的技术问题二“在IO线程执行IO任务时,未考虑对数据库查询语句进行消冗处理,IO线程执行IO任务的性能较差,造成执行IO任务的耗时较长”。导致执行IO任务的性能较差及执行IO任务的耗时较长的因素往往如下:未对数据库查询语句进行消冗处理。如果解决了上述因素,就能达到提升IO线程执行IO任务的性能,缩短执行IO任务耗时的效果。为了达到这一效果,本公开首先对数据库查询语句进行检测处理,确定是否存在冗余的字段。然后,如果存在冗余的字段,便对冗余的字段进行消冗处理。之后,将消冗处理前的数据库查询语句与消冗处理后的目标数据库查询语句进行匹配,确定语义是否满足上述预设匹配度条件。若消冗处理前的数据库查询语句与消冗处理后的目标数据库查询语句的匹配度满足上述预设匹配度条件,则将消冗处理前的数据库查询语句替换为消冗处理后的目标数据库查询语句。从而可以提升对数据库查询语句消冗的准确性,以提升IO线程执行IO任务的性能,缩短执行IO任务的耗时。
可选地,在步骤1034之后,首先,上述执行主体可以将扫描算子序列和上述目标数据库中的数据表组输入至预先训练的消耗资源预测模型,得到对应上述第一线程执行扫描算子序列的资源消耗信息作为目标资源消耗信息。其中,上述消耗资源预测模型可以为预测对应上述第一线程执行扫描算子序列的资源消耗信息的模型。上述消耗资源预测模型可以为以扫描算子序列和数据表组为输入,以对应上述第一线程执行扫描算子序列的资源消耗信息信息为输出的模型。上述数据表组可以为上述目标数据库中包括的各个数据表。上述资源消耗信息信息可以表征上述第一线程执行扫描算子序列消耗的资源量。
然后,可以根据上述目标资源消耗信息,对上述第一线程进行资源分配。实践中,上述执行主体可以按照目标资源消耗信息对上述第一线程进行资源分配。
在一些实施例的一些可选的实现方式中,上述执行主体可以通过以下步骤对消耗资源预测模型进行训练:
第一步,获取扫描算子序列样本集合和数据表样本组集合。其中,所获取的扫描算子序列样本集合中的扫描算子序列样本对应数据表样本组集合中的数据表样本组。其中,数据表样本组集合中的数据表样本组可以包括各个数据表。上述扫描算子序列样本可以为历史执行的扫描算子序列。
第二步,将扫描算子序列样本集合和数据表样本组集合输入至初始模型的编码层,得到各个资源消耗编码信息。其中,上述各个资源消耗编码信息中的资源消耗编码信息可以为资源消耗信息的编码。上述各个资源消耗编码信息中的资源消耗编码信息可以表征资源消耗信息。例如,初始模型可以为ARIMA-BP神经网络模型。
第三步,将所得到的各个资源消耗编码信息输入至初始模型的解码层,得到各个资源消耗信息。其中,所得到的各个资源消耗信息中的资源消耗信息对应各个资源消耗编码信息中的资源消耗编码信息。
第四步,根据各个资源消耗信息和各个历史资源消耗信息,确定初始模型是否达到预设优化目标。其中,上述各个历史资源消耗信息可以为对应上述扫描算子序列样本集合和上述数据表样本组集合实际的各个资源消耗信息。上述预设优化目标可以为平均资源消耗信息和平均历史资源消耗信息的差值小于预设资源消耗数值。上述平均资源消耗信息可以为对应各个资源消耗信息的平均值。上述平均历史资源消耗信息可以为对应各个历史资源消耗信息的平均值。实践中,上述执行主体可以确定对应上述各个资源消耗信息的平均值和对应上述各个历史资源消耗信息的平均值的差值是否小于上述预设资源消耗数值。然后,响应于确定对应上述各个资源消耗信息的平均值和对应上述各个历史资源消耗信息的平均值的差值小于上述预设资源消耗数值,确定初始模型达到上述预设优化目标。对于上述预设资源消耗数值的具体数值不做具体限定。
第五步,响应于确定初始模型达到上述预设优化目标,将初始模型确定为消耗资源预测模型。
第六步,响应于确定初始模型未达到上述预设优化目标,调整初始模型的网络参数,使用调整后的初始模型作为初始模型,以及将获取的更新扫描算子序列样本集合和更新数据表样本组集合分别作为扫描算子序列样本集合和数据表样本组集合,再次执行上述训练步骤。其中,上述更新扫描算子序列样本集合可以表征更新的各个扫描算子序列样本。上述更新数据表样本组集合可以表征更新的各个数据表样本组。
上述技术方案作为本公开的实施例的一个发明点,解决了背景技术提及的技术问题三“在计算线程执行扫描算子的计算逻辑时,未考虑预测计算线程执行扫描算子的计算逻辑需耗费的CPU资源量,造成为计算线程划分的CPU资源量的准确性较低,导致所划分的资源量浪费或资源量不足”。导致执行IO任务的性能较差及执行IO任务的耗时较长的因素往往如下:未考虑预测计算线程执行扫描算子的计算逻辑耗费的CPU资源量,为计算线程划分的资源量的准确性较低。如果解决了上述因素,就能达到提升为计算线程划分的资源量的准确性,减少所划分的资源量浪费或资源量不足的情况的效果。为了达到这一效果,本公开训练了一个消耗资源预测模型,用于预测计算线程执行扫描算子的计算逻辑耗费的资源量。上述消耗资源预测模型以扫描算子序列和上述目标数据库中的数据表组为输入,以耗费的资源量为输出。从而可以得到预测的资源消耗信息,可以用于确定计算线程划分的资源量。从而提升了为计算线程划分资源量的准确性,减少了导致所划分的资源量浪费或资源量不足的情况。
本公开的上述各个实施例具有如下有益效果:通过本公开的一些实施例的扫描算子执行方法,提升了CPU资源的利用率,减少了CPU资源的浪费以及缩短了线程执行扫描算子的耗时。具体来说,造成CPU资源的利用率较低,CPU资源的浪费较多以及线程执行扫描算子的耗时较长的原因在于:当扫描算子需执行IO操作时,执行扫描算子的线程暂停执行扫描算子的计算逻辑,等待扫描算子执行IO操作后再继续执行扫描算子的计算逻辑,造成在扫描算子执行IO操作时,CPU分配给执行扫描算子的资源为空闲状态,造成CPU的资源利用率较低,导致CPU资源的浪费以及线程执行扫描算子的耗时较长。基于此,本公开的一些实施例的扫描算子执行方法,首先,根据对应目标数据库的扫描操作信息,控制第一线程执行扫描算子选择操作,得到扫描算子序列。由此,可以得到对上述目标数据库进行扫描操作的扫描算子序列。然后,将所得到的扫描算子序列中满足第一执行优先级条件的扫描算子确定为目标扫描算子。从而可以得到表征优先级较高的扫描算子。之后,根据输入输出任务队列、目标扫描算子和扫描算子阻塞队列,执行以下调度步骤:首先,控制上述第一线程执行目标扫描算子,以及控制第二线程执行输入输出任务队列中满足第一预设执行条件的输入输出任务。其中,上述第一线程和上述第二线程并发运行。由此,可以同时执行输入输出任务和扫描算子序列中的扫描算子的计算逻辑。然后,响应于检测到目标扫描算子需执行输入输出任务,控制上述第一线程向输入输出任务队列提交对应目标扫描算子的输入输出任务,以及将目标扫描算子提交到扫描算子阻塞队列,得到变更输入输出任务队列和变更扫描算子阻塞队列。由此,可以得到表征对输入输出任务队列更新后的变更输入输出任务队列和对扫描算子阻塞队列更新后的变更扫描算子阻塞队列。之后,响应于确定变更扫描算子阻塞队列中不存在满足第二预设执行条件的扫描算子,将扫描算子序列中满足第二执行优先级条件的扫描算子确定为变更目标扫描算子。由此,可以得到更新后的目标扫描算子,且可以根据更新后的目标扫描算子再次执行上述调度步骤。最后,将所得到的变更输入输出任务队列、变更目标扫描算子和变更扫描算子阻塞队列分别作为输入输出任务队列、目标扫描算子和扫描算子阻塞队列,再次执行上述调度步骤。由此,可以再次执行上述调度步骤,以执行扫描算子的计算逻辑和扫描算子的输入输出任务。也因为当扫描算子需执行输入输出任务时,计算线程无需等待该扫描算子执行输入输出任务后再继续执行该扫描算子的计算线程,而是可以直接执行下一个扫描算子的计算逻辑,所以CPU分配给计算线程用于执行扫描算子的资源未处于空闲状态,从而提升了CPU的资源利用率,减少了CPU资源的浪费以及缩短了线程执行扫描算子的耗时。
进一步参考图2,作为对上述各图所示方法的实现,本公开提供了一种扫描算子执行方法的一些实施例,这些装置实施例与图1所示的那些方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图2所示,一些实施例的扫描算子执行装置200包括:控制单元201、确定单元202和执行单元203。其中,控制单元201,被配置成根据对应目标数据库的扫描操作信息,控制第一线程执行扫描算子选择操作,得到扫描算子序列;确定单元202,被配置成将所得到的扫描算子序列中满足第一执行优先级条件的扫描算子确定为目标扫描算子;执行单元203,被配置成根据输入输出任务队列、目标扫描算子和扫描算子阻塞队列,执行以下调度步骤:控制上述第一线程执行目标扫描算子,以及控制第二线程执行输入输出任务队列中满足第一预设执行条件的输入输出任务,其中,上述第一线程和上述第二线程并发运行;响应于检测到目标扫描算子需执行输入输出任务,控制上述第一线程向输入输出任务队列提交对应目标扫描算子的输入输出任务,以及将目标扫描算子提交到扫描算子阻塞队列,得到变更输入输出任务队列和变更扫描算子阻塞队列;响应于确定变更扫描算子阻塞队列中不存在满足第二预设执行条件的扫描算子,将扫描算子序列中满足第二执行优先级条件的扫描算子确定为变更目标扫描算子;将所得到的变更输入输出任务队列、变更目标扫描算子和变更扫描算子阻塞队列分别作为输入输出任务队列、目标扫描算子和扫描算子阻塞队列,再次执行上述调度步骤。
可以理解的是,该装置200中记载的诸单元与参考图1描述的方法中的各个步骤相对应。由此,上文针对方法描述的操作、特征以及产生的有益效果同样适用于装置200及其中包含的单元,在此不再赘述。
下面参考图3,其示出了适于用来实现本公开的一些实施例的电子设备300(例如计算设备)的结构示意图。图3示出的电子设备仅仅是一个示例,不应对本公开的实施例的功能和使用范围带来任何限制。
如图3所示,电子设备300可以包括处理装置301(例如中央处理器、图形处理器等),其可以根据存储在只读存储器(ROM)302中的程序或者从存储装置308加载到随机访问存储器(RAM)303中的程序而执行各种适当的动作和处理。在RAM 303中,还存储有电子设备300操作所需的各种程序和数据。处理装置301、ROM 302以及RAM 303通过总线304彼此相连。输入/输出(I/O)接口305也连接至总线304。
通常,以下装置可以连接至I/O接口305:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置306;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置307;包括例如磁带、硬盘等的存储装置308;以及通信装置309。通信装置309可以允许电子设备300与其他设备进行无线或有线通信以交换数据。虽然图3示出了具有各种装置的电子设备300,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。图3中示出的每个方框可以代表一个装置,也可以根据需要代表多个装置。
特别地,根据本公开的一些实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的一些实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的一些实施例中,该计算机程序可以通过通信装置309从网络上被下载和安装,或者从存储装置308被安装,或者从ROM 302被安装。在该计算机程序被处理装置301执行时,执行本公开的一些实施例的方法中限定的上述功能。
需要说明的是,本公开的一些实施例中记载的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开的一些实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开的一些实施例中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
在一些实施方式中,客户端、服务器可以利用诸如HTTP(HyperText TransferProtocol,超文本传输协议)之类的任何当前已知或未来研发的网络协议进行通信,并且可以与任意形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(“LAN”),广域网(“WAN”),网际网(例如,互联网)以及端对端网络(例如,ad hoc端对端网络),以及任何当前已知或未来研发的网络。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:根据对应目标数据库的扫描操作信息,控制第一线程执行扫描算子选择操作,得到扫描算子序列;将所得到的扫描算子序列中满足第一执行优先级条件的扫描算子确定为目标扫描算子;根据输入输出任务队列、目标扫描算子和扫描算子阻塞队列,执行以下调度步骤:控制上述第一线程执行目标扫描算子,以及控制第二线程执行输入输出任务队列中满足第一预设执行条件的输入输出任务,其中,上述第一线程和上述第二线程并发运行;响应于检测到目标扫描算子需执行输入输出任务,控制上述第一线程向输入输出任务队列提交对应目标扫描算子的输入输出任务,以及将目标扫描算子提交到扫描算子阻塞队列,得到变更输入输出任务队列和变更扫描算子阻塞队列;响应于确定变更扫描算子阻塞队列中不存在满足第二预设执行条件的扫描算子,将扫描算子序列中满足第二执行优先级条件的扫描算子确定为变更目标扫描算子;将所得到的变更输入输出任务队列、变更目标扫描算子和变更扫描算子阻塞队列分别作为输入输出任务队列、目标扫描算子和扫描算子阻塞队列,再次执行上述调度步骤。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的一些实施例的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)——连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开的一些实施例中的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:控制单元、确定单元和执行单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,控制单元还可以被描述为“根据对应目标数据库的扫描操作信息,控制第一线程执行扫描算子选择操作,得到扫描算子序列的单元”。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等等。
以上描述仅为本公开的一些较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开的实施例中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开的实施例中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

Claims (10)

1.一种扫描算子执行方法,包括:
根据对应目标数据库的扫描操作信息,控制第一线程执行扫描算子选择操作,得到扫描算子序列;
将所得到的扫描算子序列中满足第一执行优先级条件的扫描算子确定为目标扫描算子;
根据输入输出任务队列、目标扫描算子和扫描算子阻塞队列,执行以下调度步骤:
控制所述第一线程执行目标扫描算子,以及控制第二线程执行输入输出任务队列中满足第一预设执行条件的输入输出任务,其中,所述第一线程和所述第二线程并发运行;
响应于检测到目标扫描算子需执行输入输出任务,控制所述第一线程向输入输出任务队列提交对应目标扫描算子的输入输出任务,以及将目标扫描算子提交到扫描算子阻塞队列,得到变更输入输出任务队列和变更扫描算子阻塞队列;
响应于确定变更扫描算子阻塞队列中不存在满足第二预设执行条件的扫描算子,将扫描算子序列中满足第二执行优先级条件的扫描算子确定为变更目标扫描算子;
将所得到的变更输入输出任务队列、变更目标扫描算子和变更扫描算子阻塞队列分别作为输入输出任务队列、目标扫描算子和扫描算子阻塞队列,再次执行所述调度步骤。
2.根据权利要求1所述的方法,其中,所述根据对应目标数据库的扫描操作信息,控制第一线程执行扫描算子选择操作,得到扫描算子序列,包括:
根据预设过滤条件,对所述目标数据库中的各个数据表进行过滤处理,得到过滤后的各个数据表;
确定对应过滤后的各个数据表的总数据量信息;
响应于确定对应过滤后的各个数据表的总数据量信息处于第一预设总数据量信息区间,控制所述第一线程选择各个第一扫描算子;
响应于确定对应过滤后的各个数据表的总数据量信息处于第二预设总数据量信息区间,控制所述第一线程选择各个第二扫描算子;
响应于确定对应过滤后的各个数据表的总数据量信息处于第三预设总数据量信息区间,控制所述第一线程选择各个第三扫描算子;
将所选择的各个扫描算子进行排序,以及将排序后的各个扫描算子组合为扫描算子序列。
3.根据权利要求1所述的方法,其中,在所述控制所述第一线程向输入输出任务队列提交对应目标扫描算子的输入输出任务,以及将目标扫描算子提交到扫描算子阻塞队列之后,所述方法还包括:
响应于确定变更扫描算子阻塞队列中存在满足第二预设执行条件的扫描算子,对满足所述第二预设执行条件的扫描算子进行唤醒处理;
将唤醒处理后的扫描算子添加至扫描算子序列,得到变更扫描算子序列;
将所述变更扫描算子序列中满足所述第一执行优先级条件的扫描算子确定为变更目标扫描算子。
4.根据权利要求3所述的方法,其中,在所述响应于确定变更扫描算子阻塞队列中存在满足第二预设执行条件的扫描算子,对满足所述第二预设执行条件的扫描算子进行唤醒处理之后,所述方法还包括:
在变更扫描算子阻塞队列和变更输入输出任务队列中分别将满足所述第二预设执行条件的目标扫描算子和对应目标扫描算子的输入输出任务删除,得到更新后的变更输入输出任务队列和更新后的变更扫描算子阻塞队列;
将所得到的更新后的变更输入输出任务队列和更新后的变更扫描算子阻塞队列分别确定为变更输入输出任务队列和变更扫描算子阻塞队列。
5.根据权利要求1所述的方法,其中,所述方法还包括:
对所述第二线程执行各个输入输出任务的执行性能信息进行性能预测,以及确定所述第二线程执行各个输入输出任务的执行性能信息是否满足预设执行性能条件;
响应于确定所述执行性能信息不满足所述预设执行性能条件,确定对应所述执行性能信息的性能缺陷信息;
响应于确定所述性能缺陷信息表征各个数据库查询语句中存在满足语句冗余条件的数据库查询语句,根据各个数据库查询语句,生成变更数据库查询语句集合;
响应于确定所述性能缺陷信息表征相关联的存储装置的存储性能不满足预设存储性能条件,对所确定的性能缺陷信息进行显示。
6.根据权利要求1所述的方法,其中,在所述根据对应目标数据库的扫描操作信息,控制第一线程执行扫描算子选择操作,得到扫描算子序列之前,所述方法还包括:
根据线程任务类型,确定是否对线程存储模块进行分割处理;
响应于检测到所述线程任务类型包括第一线程任务和第二线程任务,对所述线程存储模块进行分割处理,得到第一线程存储模块和第二线程存储模块;
从所得到第一线程存储模块和第二线程存储模块中分别获取第一线程和第二线程。
7.根据权利要求1所述的方法,其中,所述方法还包括:
将扫描算子序列和所述目标数据库中的数据表组输入至预先训练的消耗资源预测模型,得到对应所述第一线程执行扫描算子序列的资源消耗信息作为目标资源消耗信息;
根据所述目标资源消耗信息,对所述第一线程进行资源分配。
8.一种扫描算子执行装置,包括:
控制单元,被配置成根据对应目标数据库的扫描操作信息,控制第一线程执行扫描算子选择操作,得到扫描算子序列;
确定单元,被配置成将所得到的扫描算子序列中满足第一执行优先级条件的扫描算子确定为目标扫描算子;
执行单元,被配置成根据输入输出任务队列、目标扫描算子和扫描算子阻塞队列,执行以下调度步骤:控制所述第一线程执行目标扫描算子,以及控制第二线程执行输入输出任务队列中满足第一预设执行条件的输入输出任务,其中,所述第一线程和所述第二线程并发运行;响应于检测到目标扫描算子需执行输入输出任务,控制所述第一线程向输入输出任务队列提交对应目标扫描算子的输入输出任务,以及将目标扫描算子提交到扫描算子阻塞队列,得到变更输入输出任务队列和变更扫描算子阻塞队列;响应于确定变更扫描算子阻塞队列中不存在满足第二预设执行条件的扫描算子,将扫描算子序列中满足第二执行优先级条件的扫描算子确定为变更目标扫描算子;将所得到的变更输入输出任务队列、变更目标扫描算子和变更扫描算子阻塞队列分别作为输入输出任务队列、目标扫描算子和扫描算子阻塞队列,再次执行所述调度步骤。
9.一种电子设备,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7中任一所述的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其中,所述计算机程序被处理器执行时实现如权利要求1-7中任一所述的方法。
CN202311075681.3A 2023-08-25 2023-08-25 扫描算子执行方法、装置、电子设备和计算机可读介质 Active CN116795518B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311075681.3A CN116795518B (zh) 2023-08-25 2023-08-25 扫描算子执行方法、装置、电子设备和计算机可读介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311075681.3A CN116795518B (zh) 2023-08-25 2023-08-25 扫描算子执行方法、装置、电子设备和计算机可读介质

Publications (2)

Publication Number Publication Date
CN116795518A CN116795518A (zh) 2023-09-22
CN116795518B true CN116795518B (zh) 2023-10-27

Family

ID=88048378

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311075681.3A Active CN116795518B (zh) 2023-08-25 2023-08-25 扫描算子执行方法、装置、电子设备和计算机可读介质

Country Status (1)

Country Link
CN (1) CN116795518B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112269999A (zh) * 2020-11-04 2021-01-26 杭州迪普科技股份有限公司 一种漏洞扫描任务调度的方法、装置、设备和介质
CN113687926A (zh) * 2021-07-26 2021-11-23 济南浪潮数据技术有限公司 一种服务器资产扫描的控制方法、装置及设备
CN113760991A (zh) * 2021-03-25 2021-12-07 北京京东拓先科技有限公司 数据操作方法、装置、电子设备和计算机可读介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9430395B2 (en) * 2008-08-11 2016-08-30 International Business Machines Corporation Grouping and dispatching scans in cache

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112269999A (zh) * 2020-11-04 2021-01-26 杭州迪普科技股份有限公司 一种漏洞扫描任务调度的方法、装置、设备和介质
CN113760991A (zh) * 2021-03-25 2021-12-07 北京京东拓先科技有限公司 数据操作方法、装置、电子设备和计算机可读介质
CN113687926A (zh) * 2021-07-26 2021-11-23 济南浪潮数据技术有限公司 一种服务器资产扫描的控制方法、装置及设备

Also Published As

Publication number Publication date
CN116795518A (zh) 2023-09-22

Similar Documents

Publication Publication Date Title
CN110852438B (zh) 模型生成方法和装置
US20190325309A1 (en) Neural network output layer for machine learning
CN112560496A (zh) 语义分析模型的训练方法、装置、电子设备及存储介质
CN107729555B (zh) 一种海量大数据分布式预测方法及系统
CN111738488A (zh) 一种任务调度方法及其装置
CN111985831A (zh) 云计算资源的调度方法、装置、计算机设备及存储介质
CN111198754B (zh) 一种任务调度方法及装置
CN117032938B (zh) 一种算子的并行调度方法、装置、电子设备及存储介质
CN114841315A (zh) 混合专家模型实现方法、系统、电子设备及存储介质
CN112632283A (zh) 模型生成方法、文本分类方法、装置、设备及介质
CN115543965A (zh) 跨机房数据处理方法、设备、存储介质及程序产品
CN117236805B (zh) 电力设备控制方法、装置、电子设备和计算机可读介质
CN115357350A (zh) 任务配置方法、装置、电子设备和计算机可读介质
CN111090993A (zh) 属性对齐模型训练方法及装置
Wu et al. Intelligent fitting global real‐time task scheduling strategy for high‐performance multi‐core systems
CN114490116A (zh) 数据处理方法、装置、电子设备及存储介质
CN116795518B (zh) 扫描算子执行方法、装置、电子设备和计算机可读介质
CN115186738B (zh) 模型训练方法、装置和存储介质
CN115577705A (zh) 一种文本处理模型的生成方法、装置、设备及存储介质
CN116977885A (zh) 视频文本任务处理方法、装置、电子设备及可读存储介质
CN113344214B (zh) 数据处理模型的训练方法、装置、电子设备及存储介质
CN113361574A (zh) 数据处理模型的训练方法、装置、电子设备及存储介质
US11836531B2 (en) Method, device, and program product for managing computing system
CN114153620B (zh) Hudi运行环境资源优化分配方法及装置
CN116069673B (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
GR01 Patent grant
GR01 Patent grant