CN113849520B - 异常sql的智能识别方法、装置、电子设备及存储介质 - Google Patents

异常sql的智能识别方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN113849520B
CN113849520B CN202111158188.9A CN202111158188A CN113849520B CN 113849520 B CN113849520 B CN 113849520B CN 202111158188 A CN202111158188 A CN 202111158188A CN 113849520 B CN113849520 B CN 113849520B
Authority
CN
China
Prior art keywords
execution plan
sql
execution
latest
database
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
CN202111158188.9A
Other languages
English (en)
Other versions
CN113849520A (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.)
Ping An Technology Shenzhen Co Ltd
Original Assignee
Ping An Technology Shenzhen 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 Ping An Technology Shenzhen Co Ltd filed Critical Ping An Technology Shenzhen Co Ltd
Priority to CN202111158188.9A priority Critical patent/CN113849520B/zh
Publication of CN113849520A publication Critical patent/CN113849520A/zh
Application granted granted Critical
Publication of CN113849520B publication Critical patent/CN113849520B/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
    • 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/22Indexing; Data structures therefor; Storage structures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及大数据领域,揭露一种异常SQL的智能识别方法,包括:响应于数据库中SQL的执行计划变更操作,记录SQL的执行计划信息,以配置SQL的执行计划信息表;从执行计划信息表中查询SQL的最新执行计划;查找SQL在数据库中所有的原始执行计划,识别原始执行计划中的最优执行计划;在最新执行计划与最优执行计划一致时,将最新执行计划作为正常执行计划,以向数据库进行访问;在最新执行计划与最优执行计划不一致时,将最新执行计划作为异常执行计划,并根据异常执行计划的变更信息,以确定SQL向数据库进行访问的最终执行计划。此外,本发明还涉及区块链技术,所述最优执行计划可存储区块链中。本发明可以提高SQL异常识别的效率。

Description

异常SQL的智能识别方法、装置、电子设备及存储介质
技术领域
本发明涉及大数据领域,尤其涉及一种异常SQL的智能识别方法、装置、电子设备及计算机可读存储介质。
背景技术
在业务办理过程中,通常采用以下流程:业务办理——>点击前端界面输入业务办理请求——>前端发送业务办理请求给后台——>后台收到业务办理请求发送结构化查询语言(Structured Query Language,SQL)给数据库——>数据库执行该SQL——>后台把SQL执行结果反馈给前端界面——>业务办理结束。在数据库执行SQL的时候,SQL会被数据库解析形成执行计划,所有的执行计划都存放在共享池里面,而同一个SQL可能会有多个执行计划与之对应,数据库会选择最优的执行计划,再按照这个最优执行计划去执行该SQL。
由于在实际业务场景中,业务办理的次数会比较频繁,而每一次业务办理对于数据库而言,就是一次最优执行计划的选择过程,在这个选择过程当中,数据库极有可能废弃旧的执行计划,重新选择新的执行计划,发生执行计划变更的操作,在执行计划变更的操作极容易造成数据库会话阻塞,服务器CUP飙升到100%,引发系统生产事故,影响了业务办理。目前,对于在执行SQL计划变更过程中,SQL异常识别通常是根据数据库管理人员对数据库发出的告警邮件进行分析查找得到,这样的方法需要数据库管理人员对逐一排查告警邮件的SQL内容(如SQL逻辑、cost(消耗)、执行时长、是否全表扫描、是否索引扫描等),容易耗费较多的排查时间,从而影响SQL异常识别的效率。
发明内容
本发明提供一种异常SQL的智能识别方法、装置、电子设备及计算机可读存储介质,其主要目的在于提高SQL异常识别的效率。
为实现上述目的,本发明提供的一种异常SQL的智能识别方法,包括:
响应于数据库中SQL的执行计划变更操作,记录所述SQL的执行计划信息,根据所述执行计划信息,配置所述SQL的执行计划信息表;
从所述执行计划信息表中查询所述SQL的最新执行计划;
查找所述SQL在所述数据库中所有的原始执行计划,并识别所述原始执行计划中的最优执行计划;
判断所述最新执行计划与所述最优执行计划是否一致;
在所述最新执行计划与所述最优执行计划一致时,将所述最新执行计划作为正常执行计划,以向所述数据库进行访问;
在所述最新执行计划与所述最优执行计划不一致时,将所述最新执行计划作为异常执行计划,并根据所述异常执行计划的变更信息,以确定所述SQL向所述数据库进行访问的最终执行计划。
可选地,所述响应于数据库中SQL的执行计划变更操作,记录所述SQL的执行计划信息,包括:
获取所述SQL的唯一标识,根据所述唯一标识,查询所述SQL在执行计划变更操作之前的旧执行计划;
根据所述执行计划变更操作,创建所述SQL的新执行计划;
根据所述旧执行计划,记录所述SQL的新执行计划在生成过程中的变更信息;
根据所述旧执行计划、新执行计划以及所述变更信息,生成所述SQL的执行计划信息。
可选地,所述根据所述执行计划信息,配置所述SQL的执行计划信息表,包括:
按照预设的数据维度将所述执行计划信息中的数据进行分区,得到多个分区数据;
构建每个所述分区数据的键值对,形成每个所述分区数据的初始信息表;
将每个所述初始信息表进行合并,得到所述SQL的执行计划信息表。
可选地,所述从所述执行计划信息表中查询所述SQL的最新执行计划,包括:
从所述执行计划信息表的旧执行计划中查询所述SQL的唯一标识;
从所述执行计划信息表的新执行计划中查询所述SQL的SQL访问路径;
从所述执行计划信息表的变更信息查询所述SQL的索引名和表名;
根据所述唯一标识、所述SQL访问路径、所述索引名以及所述表名,生成所述SQL的最新执行计划。
可选地,所述识别所述原始执行计划中的最优执行计划,包括:
步骤I、获取所述原始执行计划中任意两个执行计划,识别所述任意两个执行计划中具有相同表名的索引,并获取所述索引在所述任意两个执行计划中的索引值变更数量、索引值总量以及聚簇因子;
步骤II、根据所述索引值变更数量、所述索引值总量以及所述聚簇因子,采用预设的索引度评分算法计算其对应的所述执行计划的索引区分度得分,将所述索引区分度得分高的执行计划作为优先执行计划;
步骤III、将所述索引区分度得分低的执行计划从所述原始执行计划中删除后返回执行所述步骤I的步骤,直至筛选出所述原始执行计划中索引区分度得分最高的执行计划,并将所述索引区分度得分最高的执行计划作为所述原始执行计划中的最优执行计划。
可选地,所述预设的索引度评分算法包括:
Score=distinct_keys/num_rows+clustering_factor/num_rows
其中,Score表示执行计划的索引度区分度得分,distinct_keys表示索引值变更数量,clustering_factor表示聚簇因子,num_rows表示索引值总量。
可选地,所述根据所述异常执行计划的变更信息,以确定所述SQL向所述数据库进行访问的最终执行计划,包括:
利用下述一种或几种方式组合确定所述SQL向所述数据库进行访问的最终执行计划:
方式一、将所述变更信息对应的旧执行计划作为所述最终执行计划;
方式二、将所述变更信息进行收集后,更新所述最新执行计划,并将更新后的所述最新执行计划作为所述最终执行计划。
为了解决上述问题,本发明还提供一种异常SQL的智能识别装置,所述装置包括:
信息表配置模块,用于响应于数据库中SQL的执行计划变更操作,记录所述SQL的执行计划信息,根据所述执行计划信息,配置所述SQL的执行计划信息表;
最新计划查询模块,用于从所述执行计划信息表中查询所述SQL的最新执行计划;
最优计划识别模块,用于查找所述SQL在所述数据库中所有的原始执行计划,并识别所述原始执行计划中的最优执行计划;
计划一致性判断模块,用于判断所述最新执行计划与所述最优执行计划是否一致;
数据库访问模块,用于在所述最新执行计划与所述最优执行计划一致时,将所述最新执行计划作为正常执行计划,以向所述数据库进行访问;
所述数据库访问模块,还用于在所述最新执行计划与所述最优执行计划不一致时,将所述最新执行计划作为异常执行计划,并根据所述异常执行计划的变更信息,以确定所述SQL向所述数据库进行访问的最终执行计划。
为了解决上述问题,本发明还提供一种电子设备,所述电子设备包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以实现上述所述的异常SQL的智能识别方法。
为了解决上述问题,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一个计算机程序,所述至少一个计算机程序被电子设备中的处理器执行以实现上述所述的异常SQL的智能识别方法。
可以看出,本发明实施例通过响应于数据库中SQL的执行计划变更操作,获取所述数据库选择执行所述SQL的最新执行计划,并将所述最新执行计划与所述数据库的最优执行计划进行一致性校验,可以识别所述最新执行计划是否处于当前数据库的最佳选择计划,从而可以自动智能化的判断所述最新执行计划对应SQL是否处于异常状态。因此,本发明实施例提出的一种异常SQL的智能识别方法、装置、电子设备及存储介质可以解决现有技术中通过数据库管理人员进行异常SQL识别的问题,提高异常SQL识别的效率。
附图说明
图1为本发明一实施例提供的异常SQL的智能识别方法的流程示意图;
图2为本发明一实施例提供的异常SQL的智能识别装置的模块示意图;
图3为本发明一实施例提供的实现异常SQL的智能识别方法的电子设备的内部结构示意图;
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本申请实施例提供一种异常SQL的智能识别方法。所述异常SQL的智能识别方法的执行主体包括但不限于服务端、终端等能够被配置为执行本申请实施例提供的该方法的电子设备中的至少一种。换言之,所述异常SQL的智能识别方法可以由安装在终端设备或服务端设备的软件或硬件来执行,所述软件可以是区块链平台。所述服务端包括但不限于:单台服务器、服务器集群、云端服务器或云端服务器集群等。所述服务器可以是独立的服务器,也可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。
参照图1所示,为本发明一实施例提供的异常SQL的智能识别方法的流程示意图。在本发明实施例中,所述异常SQL的智能识别方法包括:
S1、响应于数据库中SQL的执行计划变更操作,记录所述SQL的执行计划信息,根据所述执行计划信息,配置所述SQL的执行计划信息表。
所述SQL是一种数据库查询和程序设计语言,其用于存取数据以及查询、更新和管理关系数据库系统。应该了解的是,在SQL向数据库进行访问时,其会被数据库解析形成执行计划,而在实际业务场景中,由于业务办理的次数会比较频繁,而每一次业务办理对于数据库而言,就是一次最优执行计划的选择过程,在这个选择过程当中,数据库极有可能废弃旧的执行计划,重新选择新的执行计划,发生执行计划变更的操作,因此,本发明实施例中通过响应于数据库中SQL的执行计划变更操作,记录所述SQL的执行计划信息,以获取所述SQL在执行计划变更前后的信息。
其中,所述执行计划可以理解为数据库的查询优化器对提交的sql语句进行分析生成多个数据库可以识别的高效执行查询方式,所述执行计划信息包括:旧执行计划、新执行计划、变更信息等,所述旧执行计划可以理解为运行所述SQL在未做计划变更操作前,数据库选择的执行计划,所述新执行计划可以理解为运行所述SQL在触发到变更操作时所要执行SQL语句的任务,所述变更信息可以理解为所述SQL在触发到所述变更操作所要更改的内容,如索引、查询对象、字段以及表名等。
作为本发明的一个实施例,所述响应于数据库中SQL的执行计划变更操作,记录所述SQL的执行计划信息,包括:获取所述SQL的唯一标识,根据所述唯一标识,查询所述SQL在执行计划变更操作之前的旧执行计划,根据所述执行计划变更操作,创建所述SQL的新执行计划,根据所述旧执行计划,记录所述SQL的新执行计划在生成过程中的变更信息,根据所述旧执行计划、新执行计划以及所述变更信息,生成所述SQL的执行计划信息。
其中,所述唯一标识可以理解为所述SQL的ID标识,用于表征所述SQL的身份信息,所述唯一标识可以通过查找所述数据库中的系统视图得到,所述系统视图可以为v$sqlarea_plan_hash视图,所述旧执行计划可以通过SQL的访问路径向所述数据库中的数据视图查找,所述访问路径可以为plan_hash_value,所述数据视图可以为dba_hist_sql_plan视图,所述新执行计划可以通过SQL语句进行创建。
进一步地,本发明实施例根据所述执行计划信息,配置所述SQL的执行计划信息表,以方便后续SQL信息的快速查找,提高异常SQL的识别速度。作为本发明的一个实施例,所述根据所述执行计划信息,配置所述SQL的执行计划信息表,包括:按照预设的数据维度将所述执行计划信息中的数据进行分区,得到多个分区数据,构建每个所述分区数据的键值对,形成每个所述分区数据的初始信息表,将每个所述初始信息表进行合并,得到所述SQL的执行计划信息表。
本发明一可选实施例中,所述预设的数据维度可以设置为数据类别,即将所述执行计划信息中的数据按照其所属的数据类别进行分区,其中,所述数据类别包括旧执行计划类别、新执行计划类别以及变更类别,所述键值对的构建可以通过key-value的形式进行构建,即将分区数据中数据的字段作为key,字段内容作为value。
S2、从所述执行计划信息表中查询所述SQL的最新执行计划。
应该了解,由于数据库的查询优化器具有最优执行计划选择的机制,即在众SQL的多执行计划中找出一个资源使用最少的执行计划,于是,在所述数据库中的SQL发生执行计划变更操作时,所述数据库的查询优化器会抛弃SQL的旧执行计划,重新选择SQL的新执行计划,因此,本发明实施例通过从所述执行计划信息表中查询所述SQL的最新执行计划,以获取所述数据库选择的执行计划,保障后续所述最新执行计划对应SQL的异常自动识别前提。其中,所述最新执行计划可以理解为在做计划变更操作时,数据库选择的执行计划。
作为本发明的一个实施例,所述从所述执行计划信息表中查询所述SQL的最新执行计划,包括:从所述执行计划信息表的旧执行计划中查询所述SQL的唯一标识,从所述执行计划信息表的新执行计划中查询所述SQL的SQL访问路径,从所述执行计划信息表的变更信息查询所述SQL的索引名和表名,根据所述唯一标识、所述SQL访问路径、所述索引名以及所述表名,生成所述SQL的最新执行计划。
其中,所述唯一标识、SQL访问路径、索引名以及表名的查询均可以通过SQL查询语句实现,如select语句。
S3、查找所述SQL在所述数据库中所有的原始执行计划,并识别所述原始执行计划中的最优执行计划。
如上所述,在数据库的查询优化器对SQL进行解析时会产生多个执行计划,因此,本发明实施例通过查找所述SQL在所述数据库中所有的原始执行计划,以获取所述SQL向所述数据库进行访问的最优执行计划前提。其中,原始执行计划可以理解为在未做计划变更操作前,数据库中待选择的所有执行计划。可选的,所述原始执行计划与上述旧执行计划查找原理相同,其也可以通过所述SQL的唯一标识向所述数据库的数据视图中查找得到。
进一步地,本发明实施例通过所述原始执行计划中的最优执行计划,以作为所述最新执行计划是否处于最优状态的判断依据,从而可以自动识别出所述新执行计划对应SQL是否处于异常状态。其中,所述最优执行计划可以理解为在做计划变更操作时,向数据库访问占用资源最少的执行计划。
作为本发明的一个实施例,所述识别所述原始执行计划中的最优执行计划,包括:
步骤I、获取所述原始执行计划中任意两个执行计划,识别所述任意两个执行计划中具有相同表名的索引,并获取所述索引在所述任意两个执行计划中的索引值变更数量、索引值总量以及聚簇因子;
步骤II、根据所述索引值变更数量、所述索引值总量以及所述聚簇因子,采用预设的索引度评分算法计算其对应的所述执行计划的索引区分度得分,将所述索引区分度得分高的执行计划作为优先执行计划;
步骤III、将所述索引区分度得分低的执行计划从所述原始执行计划中删除后返回执行所述步骤I的步骤,直至筛选出所述原始执行计划中索引区分度得分最高的执行计划,并将所述索引区分度得分最高的执行计划作为所述原始执行计划中的最优执行计划。
其中,所述索引值变更数量是指在执行计划变更操作时新索引和旧索引的不同数量,所述索引值总量是指在执行计划变更操作时新索引和旧索引的总量,所述聚簇因子是指索引的行数据,用于表征表中行基于索引排序程度,应该了解的是,所述索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息,因此,本发明实施例通过计算所述任意两个执行计划的索引区分度得分,以判定对应执行计划的优先级,即将索引区分度得分高的执行计划优先级设置大于索引区分度得分低的执行计划。
进一步地,本发明又一可选实施例中,所述预设的索引度评分算法包括:
Score=distinct_keys/num_rows+clustering_factor/num_rows
其中,Score表示执行计划的索引度区分度得分,distinct_keys表示索引值变更数量,clustering_factor表示聚簇因子,num_rows表示索引值总量。
进一步地,为保障所述最优执行计划的隐私性和复用性,所述最优执行计划还可存储于一区块链节点中。
S4、判断所述最新执行计划与所述最优执行计划是否一致。
本发明实施例通过判断所述最新执行计划与所述最优执行计划是否一致,以识别所述最新执行计划是否处于当前系统的最佳选择计划,从而可以自动判断所述最新执行计划对应SQL是否处于异常状态,避免过多的人为参与识别动作,提高异常SQL识别的效率。
S5、在所述最新执行计划与所述最优执行计划一致时,将所述最新执行计划作为正常执行计划,以向所述数据库进行访问。
应该了解,在所述最新执行计划与所述最优执行计划一致时,表示数据库的查询优化器选择的执行计划与当前系统的最优执行计划保持同一状态,因此,本发明实施例直接将所述最新执行计划作为正常执行计划,以向所述数据库进行访问,得到其对应的访问结果。
S6、在所述最新执行计划与所述最优执行计划不一致时,将所述最新执行计划作为异常执行计划,并根据所述异常执行计划的变更信息,以确定所述SQL向所述数据库进行访问的最终执行计划。
应该了解,在所述最新执行计划与所述最优执行计划不一致时,表示数据库的查询优化器选择的执行计划与当前系统的最优执行计划不是保持同一状态,此时,所述最新执行计划处于异常状态,若还是通过该最新执行计划向数据库进行访问,会给数据库带来一定的资源访问压力,因此,本发明实施例将所述最新执行计划作为异常执行计划,并根据所述异常执行计划的变更信息,以确定所述SQL向所述数据库进行访问的最终执行计划,得到其对应的访问结果。其中,所述SQL的变更信息可以通过从上述执行计划信息表中进行查询得到。
进一步地,本发明一可选实施例中,利用下述一种或几种方式组合确定所述SQL向所述数据库进行访问的最终执行计划:
方式一、将所述变更信息对应的旧执行计划作为所述最终执行计划;
方式二、将所述变更信息进行收集后,更新所述最新执行计划,并将更新后的所述最新执行计划作为所述最终执行计划。
可以看出,本发明实施例通过响应于数据库中SQL的执行计划变更操作,获取所述数据库选择执行所述SQL的最新执行计划,并将所述最新执行计划与所述数据库的最优执行计划进行一致性校验,可以识别所述最新执行计划是否处于当前数据库的最佳选择计划,从而可以自动智能化的判断所述最新执行计划对应SQL是否处于异常状态。因此,本发明实施例提出的一种异常SQL的智能识别方法可以解决现有技术中通过数据库管理人员进行异常SQL识别的问题,提高异常SQL识别的效率。
如图2所示,是本发明异常SQL的智能识别装置的功能模块图。
本发明所述异常SQL的智能识别装置100可以安装于电子设备中。根据实现的功能,所述异常SQL的智能识别装置可以包括信息表配置模块101、最新计划查询模块102、最优计划识别模块103、计划一致性判断模块104以及数据库访问模块105。本发明所述模块也可以称之为单元,是指一种能够被电子设备的处理器所执行,并且能够完成固定功能的一系列计算机程序段,其存储在电子设备的存储器中。
在本实施例中,关于各模块/单元的功能如下:
所述信息表配置模块101,用于响应于数据库中SQL的执行计划变更操作,记录所述SQL的执行计划信息,根据所述执行计划信息,配置所述SQL的执行计划信息表;
所述最新计划查询模块102,用于从所述执行计划信息表中查询所述SQL的最新执行计划;
所述最优计划识别模块103,用于查找所述SQL在所述数据库中所有的原始执行计划,并识别所述原始执行计划中的最优执行计划;
所述计划一致性判断模块104,用于判断所述最新执行计划与所述最优执行计划是否一致;
所述数据库访问模块105,用于在所述最新执行计划与所述最优执行计划一致时,将所述最新执行计划作为正常执行计划,以向所述数据库进行访问;
所述数据库访问模块105,还用于在所述最新执行计划与所述最优执行计划不一致时,将所述最新执行计划作为异常执行计划,并根据所述异常执行计划的变更信息,以确定所述SQL向所述数据库进行访问的最终执行计划。
详细地,本发明实施例中所述异常SQL的智能识别装置100中的所述各模块在使用时采用与上述的图1中所述的异常SQL的智能识别方法一样的技术手段,并能够产生相同的技术效果,这里不再赘述。
如图3所示,是本发明实现异常SQL的智能识别方法的电子设备1的结构示意图。
所述电子设备1可以包括处理器10、存储器11、通信总线12以及通信接口13,还可以包括存储在所述存储器11中并可在所述处理器10上运行的计算机程序,如异常SQL的智能识别程序。
其中,所述处理器10在一些实施例中可以由集成电路组成,例如可以由单个封装的集成电路所组成,也可以是由多个相同功能或不同功能封装的集成电路所组成,包括一个或者多个中央处理器(Central Processing unit,CPU)、微处理器、数字处理芯片、图形处理器及各种控制芯片的组合等。所述处理器10是所述电子设备1的控制核心(ControlUnit),利用各种接口和线路连接整个电子设备1的各个部件,通过运行或执行存储在所述存储器11内的程序或者模块(例如执行异常SQL的智能识别程序等),以及调用存储在所述存储器11内的数据,以执行电子设备1的各种功能和处理数据。
所述存储器11至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、移动硬盘、多媒体卡、卡型存储器(例如:SD或DX存储器等)、磁性存储器、磁盘、光盘等。所述存储器11在一些实施例中可以是电子设备1的内部存储单元,例如该电子设备1的移动硬盘。所述存储器11在另一些实施例中也可以是电子设备1的外部存储设备,例如电子设备1上配备的插接式移动硬盘、智能存储卡(Smart Media Card,SMC)、安全数字(SecureDigital,SD)卡、闪存卡(Flash Card)等。进一步地,所述存储器11还可以既包括电子设备1的内部存储单元也包括外部存储设备。所述存储器11不仅可以用于存储安装于电子设备1的应用软件及各类数据,例如异常SQL的智能识别程序的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。
所述通信总线12可以是外设部件互连标准(peripheral componentinterconnect,简称PCI)总线或扩展工业标准结构(extended industry standardarchitecture,简称EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。所述总线被设置为实现所述存储器11以及至少一个处理器10等之间的连接通信。
所述通信接口13用于上述电子设备1与其他设备之间的通信,包括网络接口和用户接口。可选地,所述网络接口可以包括有线接口和/或无线接口(如WI-FI接口、蓝牙接口等),通常用于在该电子设备1与其他电子设备1之间建立通信连接。所述用户接口可以是显示器(Display)、输入单元(比如键盘(Keyboard)),可选地,用户接口还可以是标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(Organic Light-Emitting Diode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在电子设备1中处理的信息以及用于显示可视化的用户界面。
图3仅示出了具有部件的电子设备1,本领域技术人员可以理解的是,图3示出的结构并不构成对所述电子设备1的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
例如,尽管未示出,所述电子设备1还可以包括给各个部件供电的电源(比如电池),优选地,电源可以通过电源管理装置与所述至少一个处理器10逻辑相连,从而通过电源管理装置实现充电管理、放电管理、以及功耗管理等功能。电源还可以包括一个或一个以上的直流或交流电源、再充电装置、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。所述电子设备1还可以包括多种传感器、蓝牙模块、Wi-Fi模块等,在此不再赘述。
应该了解,所述实施例仅为说明之用,在专利申请范围上并不受此结构的限制。
所述电子设备1中的所述存储器11存储的异常SQL的智能识别程序是多个计算机程序的组合,在所述处理器10中运行时,可以实现:
响应于数据库中SQL的执行计划变更操作,记录所述SQL的执行计划信息,根据所述执行计划信息,配置所述SQL的执行计划信息表;
从所述执行计划信息表中查询所述SQL的最新执行计划;
查找所述SQL在所述数据库中所有的原始执行计划,并识别所述原始执行计划中的最优执行计划;
判断所述最新执行计划与所述最优执行计划是否一致;
在所述最新执行计划与所述最优执行计划一致时,将所述最新执行计划作为正常执行计划,以向所述数据库进行访问;
在所述最新执行计划与所述最优执行计划不一致时,将所述最新执行计划作为异常执行计划,并根据所述异常执行计划的变更信息,以确定所述SQL向所述数据库进行访问的最终执行计划。
具体地,所述处理器10对上述计算机程序的具体实现方法可参考图1对应实施例中相关步骤的描述,在此不赘述。
进一步地,所述电子设备1集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个非易失性计算机可读取存储介质中。所述计算机可读存储介质可以是易失性的,也可以是非易失性的。例如,所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)。
本发明还提供一种计算机可读存储介质,所述可读存储介质存储有计算机程序,所述计算机程序在被电子设备1的处理器所执行时,可以实现:
响应于数据库中SQL的执行计划变更操作,记录所述SQL的执行计划信息,根据所述执行计划信息,配置所述SQL的执行计划信息表;
从所述执行计划信息表中查询所述SQL的最新执行计划;
查找所述SQL在所述数据库中所有的原始执行计划,并识别所述原始执行计划中的最优执行计划;
判断所述最新执行计划与所述最优执行计划是否一致;
在所述最新执行计划与所述最优执行计划一致时,将所述最新执行计划作为正常执行计划,以向所述数据库进行访问;
在所述最新执行计划与所述最优执行计划不一致时,将所述最新执行计划作为异常执行计划,并根据所述异常执行计划的变更信息,以确定所述SQL向所述数据库进行访问的最终执行计划。
在本发明所提供的几个实施例中,应该理解到,所揭露的设备,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。
因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附关联图标记视为限制所涉及的权利要求。
本发明所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
本申请实施例可以基于人工智能技术对相关的数据进行获取和处理。其中,人工智能(Artificial Intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。
此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。系统权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第二等词语用来表示名称,而并不表示任何特定的顺序。
最后应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神和范围。

Claims (7)

1.一种异常SQL的智能识别方法,其特征在于,所述方法包括:
响应于数据库中SQL的执行计划变更操作,记录所述SQL的执行计划信息,根据所述执行计划信息,配置所述SQL的执行计划信息表;
从所述执行计划信息表中查询所述SQL的最新执行计划;
查找所述SQL在所述数据库中所有的原始执行计划,并识别所述原始执行计划中的最优执行计划;
判断所述最新执行计划与所述最优执行计划是否一致;
在所述最新执行计划与所述最优执行计划一致时,将所述最新执行计划作为正常执行计划,以向所述数据库进行访问;
在所述最新执行计划与所述最优执行计划不一致时,将所述最新执行计划作为异常执行计划,并根据所述异常执行计划的变更信息,以确定所述SQL向所述数据库进行访问的最终执行计划;
其中,所述从所述执行计划信息表中查询所述SQL的最新执行计划,包括:从所述执行计划信息表的旧执行计划中查询所述SQL的唯一标识;从所述执行计划信息表的新执行计划中查询所述SQL的SQL访问路径;从所述执行计划信息表的变更信息查询所述SQL的索引名和表名;根据所述唯一标识、所述SQL访问路径、所述索引名以及所述表名,生成所述SQL的最新执行计划;
所述识别所述原始执行计划中的最优执行计划,包括:步骤I、获取所述原始执行计划中任意两个执行计划,识别所述任意两个执行计划中具有相同表名的索引,并获取所述索引在所述任意两个执行计划中的索引值变更数量、索引值总量以及聚簇因子;步骤II、根据所述索引值变更数量、所述索引值总量以及所述聚簇因子,采用预设的索引度评分算法计算其对应的所述执行计划的索引区分度得分,将所述索引区分度得分高的执行计划作为优先执行计划;步骤III、将所述索引区分度得分低的执行计划从所述原始执行计划中删除后返回执行所述步骤I的步骤,直至筛选出所述原始执行计划中索引区分度得分最高的执行计划,并将所述索引区分度得分最高的执行计划作为所述原始执行计划中的最优执行计划;
所述预设的索引度评分算法包括:Score=distinct_keys/num_rows + clustering_factor /num_rows
其中,Score表示执行计划的索引度区分度得分,distinct_keys表示索引值变更数量,clustering_factor表示聚簇因子,num_rows表示索引值总量。
2.如权利要求1所述的异常SQL的智能识别方法,其特征在于,所述响应于数据库中SQL的执行计划变更操作,记录所述SQL的执行计划信息,包括:
获取所述SQL的唯一标识,根据所述唯一标识,查询所述SQL在执行计划变更操作之前的旧执行计划;
根据所述执行计划变更操作,创建所述SQL的新执行计划;
根据所述旧执行计划,记录所述SQL的新执行计划在生成过程中的变更信息;
根据所述旧执行计划、新执行计划以及所述变更信息,生成所述SQL的执行计划信息。
3.如权利要求1或者2所述的异常SQL的智能识别方法,其特征在于,所述根据所述执行计划信息,配置所述SQL的执行计划信息表,包括:
按照预设的数据维度将所述执行计划信息中的数据进行分区,得到多个分区数据;
构建每个所述分区数据的键值对,形成每个所述分区数据的初始信息表;
将每个所述初始信息表进行合并,得到所述SQL的执行计划信息表。
4.如权利要求1所述的异常SQL的智能识别方法,其特征在于,所述根据所述异常执行计划的变更信息,以确定所述SQL向所述数据库进行访问的最终执行计划,包括:
利用下述方式一和/或方式二确定所述SQL向所述数据库进行访问的最终执行计划:
方式一、将所述变更信息对应的旧执行计划作为所述最终执行计划;
方式二、将所述变更信息进行收集后,更新所述最新执行计划,并将更新后的所述最新执行计划作为所述最终执行计划。
5.一种异常SQL的智能识别装置,用于实现如权利要求1至4中任意一项所述的异常SQL的智能识别方法,其特征在于,所述装置包括:
信息表配置模块,用于响应于数据库中SQL的执行计划变更操作,记录所述SQL的执行计划信息,根据所述执行计划信息,配置所述SQL的执行计划信息表;
最新计划查询模块,用于从所述执行计划信息表中查询所述SQL的最新执行计划;
最优计划识别模块,用于查找所述SQL在所述数据库中所有的原始执行计划,并识别所述原始执行计划中的最优执行计划;
计划一致性判断模块,用于判断所述最新执行计划与所述最优执行计划是否一致;
数据库访问模块,用于在所述最新执行计划与所述最优执行计划一致时,将所述最新执行计划作为正常执行计划,以向所述数据库进行访问;
所述数据库访问模块,还用于在所述最新执行计划与所述最优执行计划不一致时,将所述最新执行计划作为异常执行计划,并根据所述异常执行计划的变更信息,以确定所述SQL向所述数据库进行访问的最终执行计划。
6.一种电子设备,其特征在于,所述电子设备包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1至4中任意一项所述的异常SQL的智能识别方法。
7.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至4中任意一项所述的异常SQL的智能识别方法。
CN202111158188.9A 2021-09-30 2021-09-30 异常sql的智能识别方法、装置、电子设备及存储介质 Active CN113849520B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111158188.9A CN113849520B (zh) 2021-09-30 2021-09-30 异常sql的智能识别方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111158188.9A CN113849520B (zh) 2021-09-30 2021-09-30 异常sql的智能识别方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN113849520A CN113849520A (zh) 2021-12-28
CN113849520B true CN113849520B (zh) 2024-05-28

Family

ID=78977293

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111158188.9A Active CN113849520B (zh) 2021-09-30 2021-09-30 异常sql的智能识别方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN113849520B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114996292B (zh) * 2022-05-05 2023-07-25 北京联华信科技有限公司 执行计划自动变更方法、装置、设备及可读存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103092970A (zh) * 2013-01-24 2013-05-08 华为技术有限公司 一种数据库操作方法及设备
JP2016009225A (ja) * 2014-06-23 2016-01-18 キヤノンマーケティングジャパン株式会社 データベース管理装置、データベース管理方法、プログラムおよび記録媒体
CN107102995A (zh) * 2016-02-19 2017-08-29 华为技术有限公司 一种sql执行计划的确定方法及装置
CN108509530A (zh) * 2018-03-14 2018-09-07 武汉斗鱼网络科技有限公司 一种MySQL慢查询语句自动优化方法、计算机设备和存储介质
CN108959454A (zh) * 2018-06-15 2018-12-07 上海达梦数据库有限公司 一种提示子句指定方法、装置、设备及存储介质
CN111563101A (zh) * 2020-07-11 2020-08-21 阿里云计算有限公司 执行计划优化方法、装置、设备及存储介质
CN113312371A (zh) * 2020-02-27 2021-08-27 华为技术有限公司 执行计划的处理方法、设备及系统

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8688689B2 (en) * 2010-06-30 2014-04-01 Oracle International Corporation Techniques for recommending alternative SQL execution plans
CN104216894B (zh) * 2013-05-31 2017-07-14 国际商业机器公司 用于数据查询的方法和系统

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103092970A (zh) * 2013-01-24 2013-05-08 华为技术有限公司 一种数据库操作方法及设备
JP2016009225A (ja) * 2014-06-23 2016-01-18 キヤノンマーケティングジャパン株式会社 データベース管理装置、データベース管理方法、プログラムおよび記録媒体
CN107102995A (zh) * 2016-02-19 2017-08-29 华为技术有限公司 一种sql执行计划的确定方法及装置
CN108509530A (zh) * 2018-03-14 2018-09-07 武汉斗鱼网络科技有限公司 一种MySQL慢查询语句自动优化方法、计算机设备和存储介质
CN108959454A (zh) * 2018-06-15 2018-12-07 上海达梦数据库有限公司 一种提示子句指定方法、装置、设备及存储介质
CN113312371A (zh) * 2020-02-27 2021-08-27 华为技术有限公司 执行计划的处理方法、设备及系统
CN111563101A (zh) * 2020-07-11 2020-08-21 阿里云计算有限公司 执行计划优化方法、装置、设备及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于ORACLE 成本优化器的SQL 查询 优化分析与应用;魏玉芬 等;《内蒙古农业大学学报( 自然科学版)》;20180331;第88-93页 *

Also Published As

Publication number Publication date
CN113849520A (zh) 2021-12-28

Similar Documents

Publication Publication Date Title
CN112445854B (zh) 多源业务数据实时处理方法、装置、终端及存储介质
CN109376139A (zh) 数据库集中监控方法、计算机装置及存储介质
CN112115152B (zh) 数据增量更新及查询方法、装置、电子设备及存储介质
WO2022105135A1 (zh) 信息审核方法、装置、电子设备及存储介质
CN111950621A (zh) 基于人工智能的目标数据检测方法、装置、设备及介质
CN114610747A (zh) 数据查询方法、装置、设备及存储介质
CN111768096A (zh) 基于算法模型的评级方法、装置、电子设备及存储介质
CN114185895A (zh) 数据导入导出方法、装置、电子设备及存储介质
CN113849520B (zh) 异常sql的智能识别方法、装置、电子设备及存储介质
CN113590632B (zh) 数据库索引创建方法、装置、设备及介质
CN107609179A (zh) 一种数据处理方法及设备
CN113434542B (zh) 数据关系识别方法、装置、电子设备及存储介质
CN114840531A (zh) 基于血缘关系的数据模型重构方法、装置、设备及介质
CN114741384A (zh) 一种患者信息处理方法及其装置、计算机可读存储介质
CN112486532A (zh) 配置文件的管理方法、装置、电子设备及存储介质
CN110874365B (zh) 一种信息查询方法及其相关设备
CN115795521B (zh) 访问控制方法、装置、电子设备及存储介质
CN115086047B (zh) 接口鉴权方法、装置、电子设备及存储介质
CN114238375B (zh) 指标查询方法、装置、电子设备及存储介质
CN115729965A (zh) 信息流处理方法、装置、流服务器及存储介质
CN114510400A (zh) 任务执行方法、装置、电子设备及存储介质
CN115062023A (zh) 宽表优化方法、装置、电子设备及计算机可读存储介质
CN114840388A (zh) 数据监控方法、装置、电子设备及存储介质
CN114528593A (zh) 数据权限控制方法、装置、设备及存储介质
CN114756564B (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