CN114996292B - 执行计划自动变更方法、装置、设备及可读存储介质 - Google Patents

执行计划自动变更方法、装置、设备及可读存储介质 Download PDF

Info

Publication number
CN114996292B
CN114996292B CN202210481098.1A CN202210481098A CN114996292B CN 114996292 B CN114996292 B CN 114996292B CN 202210481098 A CN202210481098 A CN 202210481098A CN 114996292 B CN114996292 B CN 114996292B
Authority
CN
China
Prior art keywords
execution
sql
long
execution plan
term
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
CN202210481098.1A
Other languages
English (en)
Other versions
CN114996292A (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 Lianhua Letter Technology Co ltd
Original Assignee
Beijing Lianhua Letter 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 Lianhua Letter Technology Co ltd filed Critical Beijing Lianhua Letter Technology Co ltd
Priority to CN202210481098.1A priority Critical patent/CN114996292B/zh
Publication of CN114996292A publication Critical patent/CN114996292A/zh
Application granted granted Critical
Publication of CN114996292B publication Critical patent/CN114996292B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • 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
    • 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)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请涉及一种执行计划自动变更方法、装置、设备及可读存储介质,其方法包括获取进程队列的排队数量;若排队数量大于数量阈值,则查询数据库中是否存在至少一条长时执行语句;若数据库中存在至少一条长时执行语句,则获取至少一条长时执行语句对应的sql_id;查询预设时间段内每个sql_id绑定过的所有的执行计划,并判断每个sql_id对应的长时执行语句是否变更过执行计划;若任一sql_id对应的长时执行语句变更过执行计划,则获取当前执行计划的上一条执行计划,并将上一条执行计划与sql_id进行绑定。本申请具有提高解决进程队列拥堵的问题的工作效率的效果。

Description

执行计划自动变更方法、装置、设备及可读存储介质
技术领域
本申请涉及oracle数据库的技术领域,尤其是涉及一种执行计划自动变更方法、装置、设备及可读存储介质。
背景技术
Oracle数据库收到sql执行命令后,通过自身内部算法,选择最优的执行计划来执行这条sql语句。但是,随着数据库的长时间运行,经常删除分区或数据,且没有及时做完相关表的统计信息的收集分析,Oracle数据库会自动改变执行计划,在改变执行计划的过程中,可能会导致sql执行缓慢,发生进程队列拥堵,影响业务的可持续服务能力。
相关技术中,通常采用手动的方式查询执行缓慢原因,并且在发现执行缓慢的原因后,需要手动解决进程队列拥堵的问题,全程耗费时间比较长,十分影响工作效率。
发明内容
为了提高解决进程队列拥堵的问题的工作效率,本申请提供一种执行计划自动变更方法、装置、设备及可读存储介质。
第一方面,本申请提供一种执行计划自动变更方法,采用如下的技术方案:
一种执行计划自动变更方法,包括:
获取进程队列的排队数量;
若所述排队数量大于数量阈值,则查询数据库中是否存在至少一条长时执行语句;
若所述数据库中存在至少一条长时执行语句,则获取所述至少一条长时执行语句对应的sql_id;
查询预设时间段内每个所述sql_id绑定过的所有的执行计划,并判断每个所述sql_id对应的长时执行语句是否变更过执行计划;
若任一所述sql_id对应的长时执行语句变更过执行计划,则获取当前执行计划的上一条执行计划,并将所述上一条执行计划与所述sql_id进行绑定。
通过采用上述技术方案,自动获取进程队列的排队数量,当排队数量达到数量阈值时,自动查询数据库中的长时执行语句,并获取长时执行语句对应sql_id,通过sql_id查询执行计划的变更记录,并将上一条执行计划与当前的sql_id进行绑定,以解决进程队列发生拥堵的问题,相对于手动的方式查询执行缓慢原因、手动解决进程队列拥堵的问题的方式来说,提高了解决进程队列拥堵的工作效率。
可选的,所述判断每个所述sql_id对应的长时执行语句是否变更过执行计划,包括:
若所述sql_id在预设时间内绑定过至少两个执行计划,则判定所述sql_id对应的长时执行语句变更过执行计划。
可选的,所述获取进程队列的排队数量,包括:
通过轮询.TMIB获取tuxedo服务器的所述进程队列的排队数量。
通过采用上述技术方案,通过轮询.TMIB自动获取tuxedo服务器进程队列的排队数量,监测进程队列是否发生发生拥堵,当进程队列发生拥时,能够及时得知,相对于手动的方式查询执行缓慢原因的方式来说速度更快,同时也能够提高解决进程队列拥堵的工作效率。
可选的,所述查询数据库中是否存在至少一条长时执行语句,包括:
获取数据库中当前正在执行的所有sql语句以及所述所有sql语句对应的执行时间;
将所述执行时间大于预设时间阈值的sql语句作为所述长时执行语句。
可选的,所述查询预设时间段内每个所述sql_id绑定过的所有的执行计划,包括:
获取每个所述sql_id所有绑定过的执行计划以及每个执行计划对应的更改时间;
基于所述更改时间选取预设时间段内的所有执行计划。
可选的,所述将所述上一条执行计划与所述sql_id进行绑定,包括:
获取所述上一条执行计划的哈希值,将所述上一条执行计划的哈希值更新为所述sql_id当前执行计划的哈希值。
第二方面,本申请提供一种执行计划自动变更装置,采用如下的技术方案:
一种执行计划自动变更装置,包括:
第一获取模块,用于获取进程队列的排队数量;
第一查询模块,用于若所述排队数量大于数量阈值,则查询数据库中是否存在至少一条长时执行语句;
第二获取模块,用于若所述数据库中存在至少一条长时执行语句,则获取所述至少一条长时执行语句对应的sql_id;
第二查询模块,用于查询预设时间段内每个所述sql_id绑定过的所有的执行计划,并判断每个所述sql_id对应的长时执行语句是否变更过执行计划,若是,则进入绑定模块;
绑定模块,用于若任一所述sql_id对应的长时执行语句变更过执行计划,则获取当前执行计划的上一条执行计划,并将所述上一条执行计划与所述sql_id进行绑定。
通过采用上述技术方案,自动获取进程队列的排队数量,当排队数量达到数量阈值时,自动查询数据库中的长时执行语句,并获取长时执行语句对应sql_id,通过sql_id查询执行计划的变更记录,并将上一条执行计划与当前的sql_id进行绑定,以解决进程队列发生拥堵的问题,相对于手动的方式查询执行缓慢原因、手动解决进程队列拥堵的问题的方式来说,提高了解决进程队列拥堵的工作效率。
第三方面,本申请提供一种电子设备,采用如下的技术方案:
一种电子设备,包括存储器和处理器,所述存储器上存储有能够被处理器加载并执行第一方面任一所述的方法的计算机程序。
第四方面,本申请提供一种计算机可读存储介质,采用如下的技术方案:
一种计算机可读存储介质,存储有能够被处理器加载并执行第一方面任一所述的方法的计算机程序。
附图说明
图1是本申请实施例中体现一种执行计划自动变更方法的流程示意图。
图2是本申请实施例中体现一种执行计划自动变更装置200的结构框图。
图3是本申请实施例中体现一种电子设备300的结构框图。
具体实施方式
以下结合附图对本申请作进一步详细说明。
本具体实施例仅仅是对本申请的解释,其并不是对本申请的限制,本领域技术人员在阅读完本说明书后可以根据需要对本实施例做出没有创造性贡献的修改,但只要在本申请的权利要求范围内都受到专利法的保护。
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/0或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,如无特殊说明,一般表示前后关联对象是一种“或”的关系。
下面结合说明书附图对本申请实施例作进一步详细描述。
本申请实施例提供一种执行计划自动变更方法,该执行计划自动变更方法可由电子设备执行,该电子设备可以为服务器也可以为终端设备,其中该服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云计算服务的云服务器。终端设备可以是智能手机、平板电脑、台式计算机等,但并不局限于此。
如图1所示,一种执行计划自动变更方法,其方法的主要流程描述如下(步骤S101~S105):
步骤S101,获取进程队列的排队数量;
对于交易服务来说,tuxedo服务器的中间件会提供队列缓存的机制,当tuxedo服务器接收到服务请求时,先将服务请求存储至入服务队列中,执行服务时会从服务队列获取存储的服务请求,其中每个服务请求中包含至少一条sql语句。
在本实施例中,电子设备通过轮询.TMIB服务获取tuxedo服务器的进程队列的排队数量,从而监控进程队列是否发生拥堵。
步骤S102,若排队数量大于数量阈值,则查询数据库中是否存在至少一条长时执行语句;
步骤S103,若数据库中存在至少一条长时执行语句,则获取至少一条长时执行语句对应的sql_id;
在本实施例中,排队数量的数量阈值为10,当电子设备调用.TMIB服务获取tuxedo服务器的进程队列的排队数量大于10时,就认为进程队列发生拥堵,此时需要查询数据库中是否存在长时执行语句。
具体的,获取数据库中当前正在执行的所有sql语句以及所有sql语句对应的执行时间;将执行时间大于预设时间阈值的sql语句作为长时执行语句。
在本实施例中,通过sql语句“select a.side,a.serial#,a.last_call_et"Seconds",b.event,c.sql_text from v$session a,v$session_wait b,v$sqlarea cwhere a.sid=b.sid and a.sql_hash_value=c.hash_value and b.wait_class not like'Idle' Order by a.last_call_et”查询数据库中是否存在长时执行语句。
当数据库中正在执行的sql语句的执行时间超过预设时间阈值时,电子设备获取该sql语句对应的sql_id。在本实施例中,预设时间阈值为60s,将执行时间超过60s的sql语句作为长时执行语句。例如,得到的长时执行语句对应的sql_id为3bj3hpfur157。
需要说明的是,在oracle解析sql语句时,sql优化器会给sql语句分配一个ID(子游标),从而唯一标识一个sql语句,其中,sql优化器分配的ID即为上述中的sql_id。
步骤S104,查询预设时间段内每个sql_id绑定过的所有的执行计划,并判断每个sql_id对应的长时执行语句是否变更过执行计划,若是,则进入步骤S105;
步骤S105,获取当前执行计划的上一条执行计划,并将上一条执行计划与sql_id进行绑定。
需要说明的是,当进程队列发生拥堵时,说明正在执行的sql语句的耗时增加了,耗时增加可能是数据库操作耗时引起的,例如,随着数据库的长时间运行,经常删除分区或数据,且没有及时做完相关表的统计信息的收集分析,此时sql优化器可能会认为全表扫描的方式比索引的方式更快,从而将当前执行计划更改为全表扫描,但是更改为全表扫描之后,可能会导致耗时增加;还可能是网络因素引起的,例如网络延时增加。
由于执行计划一般都是经过长时间验证得到的最优执行计划,所以当执行计划发生变更且进程队列发生拥堵时,就认为是执行计划变更引起的,此时需要将上一条执行计划与当前执行计划对应的sql_id进行绑定。
在本实施例中以骤S103得到的长时执行语句对应的sql_id为例进行说明,当长时执行语句对应的sql_id为3bj3hpfur157时,通过sql语句查询3bj3hpfur157的历史执行计划,以判断sql_id为3bj3hpfur157的执行计划是否发生过变更。
具体的,获取每个sql_id所有绑定过的执行计划以及每个执行计划对应的更改时间;基于更改时间选取预设时间段内的所有执行计划。
在本实施例中,通过sql语句“select distinct SQL_ID,PLAN_HASH_VALUE,to_char(TIMESTAMP,'yyyymmdd hh24:mi:ss’)TIMESTAMP from dba_hist_sql_plan whereSQL_ID='A'order by TIMESTAMP”查询sql_id的历史执行计划;其中,SQL_ID='A'中的 A为待查询执行计划的sql_id号,在本实施例中A为3bj3hpfur15。
其中,判定sql_id对应的执行计划是否发生变化,具体如下:
若sql_id在预设时间内绑定过至少两个执行计划,则判定sql_id对应的长时执行语句变更过执行计划。
在本实施例中,预设时间为24小时,在24小时内,当长时执行语句的sql_id对应于多个执行计划时,则判定sql_id对应的执行计划发生变更,由于上一条执行计划是长时间验证得到的最优执行计划,此时需要获取当前执行计划的上一条执行计划,并将上一条执行计划与当前执行计划对应的sql_id进行绑定,以解决进程队列发生堵塞的问题。
将上一条执行计划与当前执行计划对应的sql_id进行绑定具体如下:
获取上一条执行计划的哈希值,将上一条执行计划的哈希值更新为sql_id当前执行计划的哈希值。
在本实施例中,通过sql语句“declare n number;begin n:=dbms_spm.load_plans_from_cursor_cache(sql_id=>'A',plan_hash_value=>B,fixed =>'YES', enabled=>'YES');end;/”将上一条执行计划与sql_id进行绑定;其中,sql_id=>'A'中的A为待绑定执行计划sql_id号,plan_hash_value=>B中的B为需要绑定的执行计划对应的哈希值。
以下针对上一条执行计划与sql_id进行绑定为例进行说明,如表1所示,表1为sql_id为3bj3hpfur157的执行计划的历史变更记录。
表1
由表1可知,sql_id为3bj3hpfur157的执行计划在24小时之内发生了变更,当前执行计划对应的PLAN_HASH_VALUE值为2754593971,此时需要找到3bj3hpfur157的上一条执行计划对应的PLAN_HASH_VALUE,在本实施例中,上一条执行计划对应的PLAN_HASH_VALUE为917136269,因此,步骤S105中sql_id=>'A'中的A为3bj3hpfur157,plan_hash_value=>B中的B为917136269。
图2为本申请提供的一种执行计划自动变更装置200的结构框图。
如图2所示,一种执行计划自动变更装置200,该执行计划自动变更装置200包括:
第一获取模块201,用于获取进程队列的排队数量;
第一查询模块202,用于若排队数量大于数量阈值,则查询数据库中是否存在至少一条长时执行语句;
第二获取模块203,用于若数据库中存在至少一条长时执行语句,则获取至少一条长时执行语句对应的sql_id;
第二查询模块204,用于查询预设时间段内每个sql_id绑定过的所有的执行计划,并判断每个sql_id对应的长时执行语句是否变更过执行计划,若是,则进入绑定模块;
绑定模块205,用于若任一sql_id对应的长时执行语句变更过执行计划,则获取当前执行计划的上一条执行计划,并将上一条执行计划与sql_id进行绑定。
作为本实施例的一种可选实施方式,第一获取模块201具体用于通过轮询.TMIB获取tuxedo服务器的进程队列的排队数量。
作为本实施例的一种可选实施方式,第一查询模块202具体用于获取数据库中当前正在执行的所有sql语句以及所有sql语句对应的执行时间;将执行时间大于预设时间阈值的sql语句作为长时执行语句。
作为本实施例的一种可选实施方式,第二查询模块204具体用于若sql_id在预设时间内绑定过至少两个执行计划,则判定sql_id对应的长时执行语句变更过执行计划。
作为本实施例的一种可选实施方式,第二查询模块204还具体用于获取每个sql_id所有绑定过的执行计划以及每个执行计划对应的更改时间;基于更改时间选取预设时间段内的所有执行计划。
作为本实施例的一种可选实施方式,绑定模块205具体用于获取上一条执行计划的哈希值,将上一条执行计划的哈希值更新为sql_id当前执行计划的哈希值。
本申请实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台电子设备(可以是个人计算机、服务器或者网络设备等)执行本申请各个实施例的一种执行计划自动变更方法的全部或部分步骤。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
图3为本申请实施例提供的一种电子设备300的结构框图。如图3所示,电子设备300包括存储器301、处理器302和通信总线303;存储器301、处理器302通过通信总线303相连。存储器301上存储有能够被处理器302加载并执行如上述实施例提供的一种执行计划自动变更方法。
存储器301可用于存储指令、程序、代码、代码集或指令集。存储器301可以包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于至少一个功能的指令以及用于实现上述实施例提供的一种执行计划自动变更方法的指令等;存储数据区可存储上述实施例提供的一种执行计划自动变更方法中涉及到的数据等。
处理器302可以包括一个或者多个处理核心。处理器302通过运行或执行存储在存储器301内的指令、程序、代码集或指令集,调用存储在存储器301内的数据,执行本申请的各种功能和处理数据。处理器302可以为特定用途集成电路(Application SpecificIntegrated Circuit,ASIC)、数字信号处理器(Digital Signal Processor,DSP)、数字信号处理装置(Digital Signal Processing Device,DSPD)、可编程逻辑装置(ProgrammableLogic Device,PLD)、现场可编程门阵列(Field Programmable Gate Array,FPGA)、中央处理器(Central Processing Unit,CPU)、控制器、微控制器和微处理器中的至少一种。可以理解地,对于不同的设备,用于实现上述处理器302功能的电子器件还可以为其它,本申请实施例不作具体限定。
通信总线303可包括一通路,在上述组件之间传送信息。通信总线303可以是PCI(Peripheral Component Interconnect,外设部件互连标准)总线或EISA (ExtendedIndustry Standard Architecture,扩展工业标准结构)总线等。通信总线303可以分为地址总线、数据总线、控制总线等。为便于表示,图3中仅用一个双箭头表示,但并不表示仅有一根总线或一种类型的总线。
本申请实施例提供一种计算机可读存储介质,存储有能够被处理器加载并执行如上述实施例提供的一种执行计划自动变更方法的计算机程序。
本实施例中,计算机可读存储介质可以是保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质可以是但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意组合。具体的,计算机可读存储介质可以是便携式计算机盘、硬盘、U盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、讲台随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、光盘、磁碟、机械编码设备以及上述任意组合。
术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的申请范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离前述申请构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中申请的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

Claims (7)

1.一种执行计划自动变更方法,其特征在于,包括:
获取进程队列的排队数量;
若所述排队数量大于数量阈值,则查询数据库中是否存在至少一条长时执行语句;
若所述数据库中存在至少一条长时执行语句,则获取所述至少一条长时执行语句对应的sql_id;
查询预设时间段内每个所述sql_id绑定过的所有的执行计划,并判断每个所述sql_id对应的长时执行语句是否变更过执行计划;
若任一所述sql_id对应的长时执行语句变更过执行计划,则获取当前执行计划的上一条执行计划,并将所述上一条执行计划与所述sql_id进行绑定;
若所述sql_id对应的长时执行语句未变更过执行计划,则判定网络存在问题;
所述查询预设时间段内每个所述sql_id绑定过的所有的执行计划,包括:
获取每个所述sql_id所有绑定过的执行计划以及每个执行计划对应的更改时间;
基于所述更改时间选取预设时间段内的所有执行计划;
所述查询数据库中是否存在至少一条长时执行语句,包括:
获取数据库中当前正在执行的所有sql语句以及所述所有sql语句对应的执行时间;
将所述执行时间大于预设时间阈值的sql语句作为所述长时执行语句。
2.根据权利要求1所述的方法,其特征在于,所述判断每个所述sql_id对应的长时执行语句是否变更过执行计划,包括:
若所述sql_id在预设时间内绑定过至少两个执行计划,则判定所述sql_id对应的长时执行语句变更过执行计划。
3.根据权利要求1或2所述的方法,其特征在于,所述获取进程队列的排队数量,包括:
通过轮询.TMIB获取tuxedo服务器的所述进程队列的排队数量。
4.根据权利要求1或2所述的方法,其特征在于,所述将所述上一条执行计划与所述sql_id进行绑定,包括:
获取所述上一条执行计划的哈希值,将所述上一条执行计划的哈希值更新为所述sql_id当前执行计划的哈希值。
5.一种执行计划自动变更装置,其特征在于,包括:
第一获取模块,用于获取进程队列的排队数量;
第一查询模块,用于若所述排队数量大于数量阈值,则查询数据库中是否存在至少一条长时执行语句;
第二获取模块,用于若所述数据库中存在至少一条长时执行语句,则获取所述至少一条长时执行语句对应的sql_id;
第二查询模块,用于查询预设时间段内每个所述sql_id绑定过的所有的执行计划,并判断每个所述sql_id对应的长时执行语句是否变更过执行计划,若是,则进入绑定模块;
绑定模块,用于若任一所述sql_id对应的长时执行语句变更过执行计划,则获取当前执行计划的上一条执行计划,并将所述上一条执行计划与所述sql_id进行绑定;若所述sql_id对应的长时执行语句未变更过执行计划,则判定网络存在问题;
第二查询模块还具体用于获取每个sql_id所有绑定过的执行计划以及每个执行计划对应的更改时间;基于更改时间选取预设时间段内的所有执行计划;
第一查询模块具体用于获取数据库中当前正在执行的所有sql语句以及所有sql语句对应的执行时间;将执行时间大于预设时间阈值的sql语句作为长时执行语句。
6.一种电子设备,其特征在于,包括存储器和处理器,所述存储器上存储有能够被处理器加载并执行如权利要求1至4中任一种方法的计算机程序。
7.一种计算机可读存储介质,其特征在于,存储有能够被处理器加载并执行如权利要求1至4中任一种方法的计算机程序。
CN202210481098.1A 2022-05-05 2022-05-05 执行计划自动变更方法、装置、设备及可读存储介质 Active CN114996292B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210481098.1A CN114996292B (zh) 2022-05-05 2022-05-05 执行计划自动变更方法、装置、设备及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210481098.1A CN114996292B (zh) 2022-05-05 2022-05-05 执行计划自动变更方法、装置、设备及可读存储介质

Publications (2)

Publication Number Publication Date
CN114996292A CN114996292A (zh) 2022-09-02
CN114996292B true CN114996292B (zh) 2023-07-25

Family

ID=83025891

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210481098.1A Active CN114996292B (zh) 2022-05-05 2022-05-05 执行计划自动变更方法、装置、设备及可读存储介质

Country Status (1)

Country Link
CN (1) CN114996292B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7092931B1 (en) * 2002-05-10 2006-08-15 Oracle Corporation Methods and systems for database statement execution plan optimization
CN102033784A (zh) * 2010-11-18 2011-04-27 山东中创软件工程股份有限公司 一种应用服务器的优化方法及装置
CN108509530A (zh) * 2018-03-14 2018-09-07 武汉斗鱼网络科技有限公司 一种MySQL慢查询语句自动优化方法、计算机设备和存储介质
CN111221840A (zh) * 2018-11-23 2020-06-02 阿里巴巴集团控股有限公司 数据处理方法及装置、数据缓存方法、存储介质、系统
CN114116767A (zh) * 2021-11-26 2022-03-01 北京人大金仓信息技术股份有限公司 数据库sql查询语句转换方法及装置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7979422B2 (en) * 2008-07-30 2011-07-12 Oracle International Corp. Hybrid optimization strategies in automatic SQL tuning
CN103092970A (zh) * 2013-01-24 2013-05-08 华为技术有限公司 一种数据库操作方法及设备
CN103577551B (zh) * 2013-10-16 2017-04-05 聚好看科技股份有限公司 一种数据批量提交到数据库的方法和装置
US9317414B2 (en) * 2014-03-04 2016-04-19 International Business Machines Corporation Regression testing of SQL execution plans for SQL statements
US20160259825A1 (en) * 2015-03-06 2016-09-08 Dell Products L.P. Discovery of potential problematic execution plans in a bind-sensitive query statement
WO2018120171A1 (zh) * 2016-12-30 2018-07-05 华为技术有限公司 一种用于存储过程的执行方法、设备以及系统
CN113312371A (zh) * 2020-02-27 2021-08-27 华为技术有限公司 执行计划的处理方法、设备及系统
CN113535753A (zh) * 2021-07-19 2021-10-22 北京人大金仓信息技术股份有限公司 一种基于并行遍历算法的sql语句执行计划定位方法和装置
CN114077532A (zh) * 2021-11-22 2022-02-22 中国建设银行股份有限公司 一种sql语句执行效率检测方法及装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7092931B1 (en) * 2002-05-10 2006-08-15 Oracle Corporation Methods and systems for database statement execution plan optimization
CN102033784A (zh) * 2010-11-18 2011-04-27 山东中创软件工程股份有限公司 一种应用服务器的优化方法及装置
CN108509530A (zh) * 2018-03-14 2018-09-07 武汉斗鱼网络科技有限公司 一种MySQL慢查询语句自动优化方法、计算机设备和存储介质
CN111221840A (zh) * 2018-11-23 2020-06-02 阿里巴巴集团控股有限公司 数据处理方法及装置、数据缓存方法、存储介质、系统
CN114116767A (zh) * 2021-11-26 2022-03-01 北京人大金仓信息技术股份有限公司 数据库sql查询语句转换方法及装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Oracle数据库语句性能优化方法;张爱军;指挥信息系统与技术;第3卷(第2期);77-82 *
Tuning the SQL Query in order to Reduce Time Consumption;P Karthik;International Journal of Computer Science Issue;第9卷(第3期);418-423 *

Also Published As

Publication number Publication date
CN114996292A (zh) 2022-09-02

Similar Documents

Publication Publication Date Title
RU2663358C2 (ru) Устройство и способ кластерного хранения
CN110109953B (zh) 一种数据查询方法、装置及设备
US8996499B2 (en) Using temporary performance objects for enhanced query performance
CN109388657B (zh) 数据处理方法、装置、计算机设备及存储介质
CN105955807B (zh) 一种任务处理系统及方法
KR102144534B1 (ko) 검색 캐시 업데이트 방법 및 장치
US20200117462A1 (en) Memory integrated circuit and pre-fetch method thereof
WO2018036549A1 (zh) 分布式数据库查询方法、装置及管理系统
CN111159219B (zh) 一种数据管理方法、装置、服务器及存储介质
CN110990439A (zh) 基于缓存的快速查询方法、装置、计算机设备及存储介质
CN111488377A (zh) 数据查询方法、装置、电子设备及存储介质
CN114138840A (zh) 数据查询方法、装置、设备及存储介质
WO2019127772A1 (zh) 数据字典展示方法、装置、终端设备及存储介质
WO2020211363A1 (zh) 提高程序加载效率的方法、装置、计算机设备和存储介质
CN108763458B (zh) 内容特征查询方法、装置、计算机设备及存储介质
CN114996292B (zh) 执行计划自动变更方法、装置、设备及可读存储介质
CN117009389A (zh) 数据缓存方法、装置、电子设备和可读存储介质
CN110750539A (zh) 基于Redis数据库的信息查询方法、装置及电子设备
CN108763421B (zh) 一种基于逻辑电路的数据搜索方法及系统
US20130013824A1 (en) Parallel aggregation system
US20200117460A1 (en) Memory integrated circuit and pre-fetch address determining method thereof
CN113505142B (zh) 数据查询方法、装置及服务器
CN114706890A (zh) 一种数据的多级查询方法、装置、电子设备及存储介质
US20160259703A1 (en) Retrieval control method, and retrieval control device
CN113590322A (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