CN116578583B - 异常语句识别方法、装置、设备、存储介质 - Google Patents
异常语句识别方法、装置、设备、存储介质 Download PDFInfo
- Publication number
- CN116578583B CN116578583B CN202310848254.8A CN202310848254A CN116578583B CN 116578583 B CN116578583 B CN 116578583B CN 202310848254 A CN202310848254 A CN 202310848254A CN 116578583 B CN116578583 B CN 116578583B
- Authority
- CN
- China
- Prior art keywords
- processed
- classification
- target
- structured query
- analysis result
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 66
- 230000002159 abnormal effect Effects 0.000 title claims abstract description 55
- 238000003860 storage Methods 0.000 title claims abstract description 18
- 238000004458 analytical method Methods 0.000 claims abstract description 147
- 238000004590 computer program Methods 0.000 claims description 33
- 238000001514 detection method Methods 0.000 claims description 3
- 238000012545 processing Methods 0.000 abstract description 15
- 230000006870 function Effects 0.000 description 22
- 230000003993 interaction Effects 0.000 description 12
- 238000005516 engineering process Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 229910021389 graphene Inorganic materials 0.000 description 1
- 238000011835 investigation Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
- G06F16/285—Clustering or classification
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Devices For Executing Special Programs (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及数据库技术领域,尤其是一种异常语句识别方法、装置、设备、存储介质。所述方法包括:获取待处理程序包;对所述待处理程序包中的结构化查询语句进行分类得到目标分类;调用目标工具对所述目标分类中的结构化查询语句进行执行计划分析得到分析结果;根据所述分析结果确定异常语句。采用本方法能够自动化对分类中的结构化查询语句进行执行计划分析得到分析结果,不需要人工分析,提高了处理效率。
Description
技术领域
本申请涉及数据库技术领域,特别是涉及一种异常语句识别方法、装置、设备、存储介质。
背景技术
随着计算机技术的发展,出现了数据库技术,数据库技术是信息系统的一个核心技术,通过研究数据库的结构、存储、设计、管理以及应用的基本理论和实现方法,并利用这些理论来实现对数据库中的数据进行处理、分析和理解。
Oracle数据库(Oracle RDBMS,或简称Oracle,是甲骨文公司的一款关系数据库管理系统)承载的业务越来越多,业务逻辑也变得愈来愈复杂。在数据库的业务逻辑链条出现性能瓶颈时,开发人员和数据库管理员定位问题会变得非常困难,传统技术中,在出现性能问题的时候,一般需要从Oracle Package(oracle package是oracle包,是一组相关过程、函数、变量、常量、类型和游标等程序设计元素的组合。)的调用入口着手,分析调用过程中的全部SQL(Structured Query Language,结构化查询语句)代码。针对每一段SQL人工分析执行计划,查找是否存在全表扫描这种异常执行计划,如果存在则进行人工优化。这个过程中涉及到的SQL代码量和实际调用链的长短线性关联。正常情况下,一次性能问题的排查需要约2个人日才能完成,效率十分低下。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高处理效率的异常语句识别方法、装置、设备、存储介质。
第一方面,本申请提供一种异常语句识别方法,所述方法包括:
获取待处理程序包;
对所述待处理程序包中的结构化查询语句进行分类得到目标分类;
调用目标工具对所述目标分类中的结构化查询语句进行执行计划分析得到分析结果;
根据所述分析结果确定异常语句。
在其中一个实施例中,所述对所述待处理程序包中的结构化查询语句进行分类得到目标分类,包括:
获取当前待处理程序包;
识别所述当前待处理程序包中的目标对象,以对所述当前待处理程序包进行第一次分类得到待处理分类;
对所述待处理分类中的结构化查询语句进行第二次分类以得到目标分类。
在其中一个实施例中,在所述获取当前待处理程序包之后,还包括:
当所述当前待处理程序包调用了其他程序包,则将所述其他程序包作为当前待处理程序包,并继续执行识别所述当前待处理程序包中的目标对象,以对所述当前待处理程序包进行第一次分类得到待处理分类的步骤;
在所述对所述待处理分类中的结构化查询语句进行第二次分类以得到目标分类之后,还包括:
生成所述目标分类对应的调用关系。
在其中一个实施例中,所述对所述待处理程序包中的结构化查询语句进行分类得到目标分类,包括:
通过Python语言对所述待处理程序包中的结构化查询语句进行分类得到目标分类。
在其中一个实施例中,所述调用目标工具对所述目标分类中的结构化查询语句进行执行计划分析得到分析结果,包括:
通过shell工具调用SQLPlus工具对所述目标分类中的结构化查询语句进行执行计划分析得到分析结果。
在其中一个实施例中,所述根据所述分析结果确定异常语句,包括:
检测所述分析结果中是否存在目标字符串;
当所述分析结果中存在目标字符串时,确定存在所述目标字符串的分析结果对应的结构化查询语句为异常语句。
在其中一个实施例中,所述检测所述分析结果中是否存在目标字符串,包括:
检测所述分析结果中是否存在全表扫描字段。
第二方面,本申请还提供一种异常语句识别装置,所述装置包括:
待处理程序包获取模块,用于获取待处理程序包;
分类模块,用于对所述待处理程序包中的结构化查询语句进行分类得到目标分类;
执行计划分析模块,用于调用目标工具对所述目标分类中的结构化查询语句进行执行计划分析得到分析结果;
确定模块,用于根据所述分析结果确定异常语句。
第三方面,本申请还提供一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述任意一个实施例中的方法的步骤。
第四方面,本申请还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一个实施例中的方法的步骤。
上述异常语句识别方法、装置、设备、存储介质,对待处理程序包中的结构化查询语句进行分类得到目标分类,再调用目标工具对所述目标分类中的结构化查询语句进行执行计划分析得到分析结果,根据分析结果来确定异常语句,自动化对分类中的结构化查询语句进行执行计划分析得到分析结果,不需要人工分析,提高了处理效率。
附图说明
图1为一个实施例中异常语句识别方法的应用环境图;
图2为一个实施例中异常语句识别方法的流程示意图;
图3为另一个实施例中异常语句识别方法的流程示意图;
图4为一个实施例中异常语句识别装置的结构框图;
图5为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请实施例提供的异常语句识别方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与数据库104进行通信。其中终端102从数据库104获取待处理程序包;对待处理程序包中的结构化查询语句进行分类得到目标分类;调用目标工具对目标分类中的结构化查询语句进行执行计划分析得到分析结果;根据分析结果确定异常语句。自动化对分类中的结构化查询语句进行执行计划分析得到分析结果,不需要人工分析,提高了处理效率。
其中,终端102可以但不限于是各种便携式PC、平板或者传统意义上的电脑,如笔记本和台式机等。数据库104可以用独立的数据库或者是多个数据库组成的数据库集群来实现。
在一个实施例中,如图2所示,提供了一种异常语句识别方法,以该方法应用于图1中的终端为例进行说明,包括以下步骤:
S202:获取待处理程序包。
具体地,待处理程序包可以是指数据库中的业务逻辑组织结构,例如Oracle数据库中的业务逻辑组织结构Oracle Package,该待处理程序包可以看做是业务操作逻辑单元的超集,例如是Function和Procedure的超集,实际应用中一个Oracle Package由多个Procedure和Function组成。
S204:对待处理程序包中的结构化查询语句进行分类得到目标分类。
具体地,结构化查询语句可以是指SQL语句,终端对待处理程序包进行分类以得到业务操作逻辑单元,然后继续对业务操作逻辑单元中的SQL代码段进行二次切分,形成包含一个完整SQL代码的SQL文件。
例如,终端将Oracle Package中属于本Package(程序包)的所有Function(函数)和Procedure(程序)切分存储成独立的文件,而后将每一个独立文件中的SQL代码段二次切分,形成包含一个完整SQL代码的SQL文件,SQL文件即为此处的目标分类。
S206:调用目标工具对目标分类中的结构化查询语句进行执行计划分析得到分析结果。
具体地,目标工具是进行SQL代码执行和分析的命令行工具,其可以接收SQL文件作为参数,连接目标数据库,执行并返回分析结果。
其中,可以通过shell工具批量的将Python分析层结果中的若干个SQL文件递交给SQLPlus,并拿到SQLPlus的分析结果存储起来。
在其中一个实施例中,SQLPlus在接收到Shell交互层递交过来的SQL文件之后,会连接到的指定的Oracle数据库,并执行Explain命令获取到对应每一个SQL段的执行计划,该执行计划是以文本形式存储的,而后将执行计划返回给Shell交互层。SQLPlus不需要做任何逻辑处理,只需要接收参数-执行-返回结果即可。
S208:根据分析结果确定异常语句。
具体地,终端在拿到分析结果后,对分析结果进行处理以得到异常语句,具体地,Shell交互层得到每一个SQLPlus返回的本文结果后,扫描判断文本结果中是否存在“TABLEACCESS FULL”、“TABLE ACCESS STORAGE FULL”字样的字符串。
如果存在,则说明对应的SQL段中出现了异常的全表扫描执行计划,此执行计划大概率存在性能问题。Shell将此SQL段的Package-Function/Procedure-代码序号标识返回到命令行。操作人在看到返回结果之后,就可以快速的找到对应的代码文件,进行优化。
上述异常语句识别方法,对待处理程序包中的结构化查询语句进行分类得到目标分类,再调用目标工具对所述目标分类中的结构化查询语句进行执行计划分析得到分析结果,根据分析结果来确定异常语句,自动化对分类中的结构化查询语句进行执行计划分析得到分析结果,不需要人工分析,提高了处理效率。
在其中一个实施例中,对待处理程序包中的结构化查询语句进行分类得到目标分类,包括:获取当前待处理程序包;识别当前待处理程序包中的目标对象,以对当前待处理程序包进行第一次分类得到待处理分类;对待处理分类中的结构化查询语句进行第二次分类以得到目标分类。
具体地,当前待处理程序包是指终端从数据库所获取的程序包,其还可能调用其他的程序包,当对所调用的程序包进行处理时,当前待处理程序包则为所调用的程序包。
其中,该目标对象为基本的业务操作逻辑单元,例如上文中的Oracle Function/Procedure,其为一种Oracle SQL代码的包装形式,是一个基本的业务操作逻辑单元。
终端对当前待处理程序包进行第一次分类得到待处理分类,例如将OraclePackage中属于本Package(程序包)的所有Function(函数)和Procedure(程序)切分存储成独立的文件。
第二次分类是对待处理分类中的结构化查询语句进行切分得到包含一个完整SQL代码的的SQL文件。
在其中一个实施例中,在获取当前待处理程序包之后,还包括:当当前待处理程序包调用了其他程序包,则将其他程序包作为当前待处理程序包,并继续执行识别当前待处理程序包中的目标对象,以对当前待处理程序包进行第一次分类得到待处理分类的步骤;在对待处理分类中的结构化查询语句进行第二次分类以得到目标分类之后,还包括:生成目标分类对应的调用关系。
具体地,本实施例中主要是当前待处理分类调用了其他程序包时,对其他的程序包也要做同样的分类,例如将Oracle Package中属于本Package(程序包)的所有Function(函数)和Procedure(程序)切分存储成独立的文件,而后将每一个独立文件中的SQL代码段二次切分,形成包含一个完整SQL代码的的SQL文件。
具体地,经过本实施例会得到一个调用链中涉及到的每一个Oracle Package中的Function及Procedure以及Function和Procedure之中的独立SQL段,并将这些文件按照“Package-Function/Procedure-代码序号”命名的方式归类存放。
经过Python分析层之后,得到一个调用链条上完整的涉及到的所有OracleFunction、Procedure以及Function/Procedure中的独立完成SQL段,同时也可以知道它们之间的前后调用关系。
在其中一个实施例中,对待处理程序包中的结构化查询语句进行分类得到目标分类,包括:通过Python语言对待处理程序包中的结构化查询语句进行分类得到目标分类。
具体地,Python作为一种解释型语言,具有执行结果立即可见及代码逻辑简单的特点。所以,对于Oracle Package(本质上是一种文本数据),选择Python作为分析工具。
本实施例中,通过Python作为分析工具可以提高处理效率。
在其中一个实施例中,调用目标工具对目标分类中的结构化查询语句进行执行计划分析得到分析结果,包括:通过shell工具调用SQLPlus工具对目标分类中的结构化查询语句进行执行计划分析得到分析结果。
本实施例中,经过Python分析层的解构之后,可以得到多个独立的SQL代码段,每一个段落对应一个基本的业务操作逻辑。通过Shell,可以很方便的调用Oracle工具SQLPlus,利用SQLPlus的能力来对SQL代码进行执行计划的分析。因此,Shell的作用就是作为SQL代码和SQLPlus之间的桥梁,实现SQL代码的执行计划分析以及SQLPlus分析完成后的结果处理。
在Shell交互层,通过Shell工具批量的将Python分析层结果中的若干个SQL文件递交给SQLPlus,并拿到SQLPlus的解析结果存储起来。
其中需要说明的一点是SQLPlus是Oracle提供的一个用来进行SQL代码执行和分析的命令行工具,它可以接收SQL文件作为参数,连接目标数据库,执行SQL并返回执行结果。本实施例中,SQLPlus在接收到Shell交互层递交过来的SQL文件之后,会连接到的指定的Oracle数据库,并执行Explain命令获取到对应每一个SQL段的执行计划(文本形式存在),而后将执行计划返回给Shell交互层。SQLPlus不需要做任何逻辑处理,只需要接收参数-执行-返回结果即可。
上述实施例中,通过Python代码快速切分Oracle Package调用链,得到一个个执行单元(SQL段),Shell将执行单元传递给SQLPlus,SQLPlus连接数据库后调用Oracle的Explain功能获取执行计划后返回Shell。Shell二次判定是否存在全表扫描,存在则返回定位标识给操作人。可以以数百倍于人工操作的效率定位一个Oracle Package中存在全表扫描执行计划的SQL。在线上出现性能问题时,这种分钟级的定位更是提高了处理效率。
在其中一个实施例中,根据分析结果确定异常语句,包括:检测分析结果中是否存在目标字符串;当分析结果中存在目标字符串时,确定存在目标字符串的分析结果对应的结构化查询语句为异常语句。
在其中一个实施例中,检测分析结果中是否存在目标字符串,包括:检测分析结果中是否存在全表扫描字段。
具体地,在该实施例中,目标字符串可以为对应全表扫描的字符串,例如“TABLEACCESS FULL”、“TABLE ACCESS STORAGE FULL”字样的字符串,全表扫描是一种SQL执行过程中常见的异常的执行计划,出现这种执行计划大概率会造成性能问题。在其他的实施例中,若是识别其他的异常语句,则目标字符串可以为其他的形式,在此不做具体限制。
在本实施例中,Shell交互层得到每一个SQLPlus返回的本文结果后,扫描判断文本结果中是否存在“TABLE ACCESS FULL”、“TABLE ACCESS STORAGE FULL”字样的字符串。
如果存在,则说明对应的SQL段中出现了异常的全表扫描执行计划,此执行计划大概率存在性能问题。Shell将此SQL段的Package-Function/Procedure-代码序号标识返回到命令行。操作人在看到返回结果之后,就可以快速的找到对应的代码文件,进行优化。
具体地,结合图3所示,提供一种异常语句识别方法的详细实施例,在该实施例中,通过Python语言分析Oracle Package,将Oracle Package中的Function和Procedure进行初步分析以及归类标识。初步分析之后,再通过Shell调用SQLPlus对每一个Function和Procedure中的SQL语句进行执行计划分析,分析每一结果集中是否存在全表扫描,如果存在,则定位到目标。对于嵌套的Oracle Package调用按照同样的方式进行递归操作。全部操作分析完成之后,就得到了整个Oracle Package的调用链条,并可以定位到任何一个存在全表扫描执行计划的SQL。
具体地,Python作为一种解释型语言,具有执行结果立即可见及代码逻辑简单的特点。所以,对于Oracle Package(本质上是一种文本数据),选择Python作为分析工具。分析过程包括:通过Python代码将Oracle Package中属于本Package(程序包)的所有Function(函数)和Procedure(程序)切分存储成独立的文件,而后将每一个独立文件中的SQL代码段二次切分,形成包含一个完整SQL代码的的SQL文件;遇到不属于本Package的调用,则将该调用单独拉取出来重复上述操作;在递归进行后,会得到一个调用链中涉及到的每一个Oracle Package中的Function及Procedure以及Function和Procedure之中的独立SQL段,并将这些文件按照“Package-Function/Procedure-代码序号”命名的方式归类存放;经过Python分析层之后,得到一个调用链条上完整的涉及到的所有Oracle Function、Procedure以及Function/Procedure中的独立完成SQL段,同时也可以知道它们之间的前后调用关系。
其中,经过Python分析层的解构之后,可以得到多个独立的SQL代码段,每一个段落对应一个基本的业务操作逻辑。通过Shell,可以很方便的调用Oracle官方的工具SQLPlus,利用SQLPlus的能力来对SQL代码进行执行计划的分析。因此,Shell的作用就是作为SQL代码和SQLPlus之间的桥梁,实现SQL代码的执行计划分析以及SQLPlus分析完成后的结果处理。
在Shell交互层,通过Shell工具批量的将Python分析层结果中的若干个SQL文件递交给SQLPlus,并拿到SQLPlus的解析结果存储起来。
SQLPlus是Oracle提供的一个用来进行SQL代码执行和分析的命令行工具,它可以接收SQL文件作为参数,连接目标数据库,执行SQL并返回执行结果。
SQLPlus在接收到Shell交互层递交过来的SQL文件之后,会连接到的指定的Oracle数据库,并执行Explain命令获取到对应每一个SQL段的执行计划(文本形式存在),而后将执行计划返回给Shell交互层。SQLPlus不需要做任何逻辑处理,只需要接收参数-执行-返回结果即可。
Shell交互层得到每一个SQLPlus返回的本文结果后,扫描判断文本结果中是否存在“TABLE ACCESS FULL”、“TABLE ACCESS STORAGE FULL”字样的字符串。
如果存在,则说明对应的SQL段中出现了异常的全表扫描执行计划,此执行计划大概率存在性能问题。Shell将此SQL段的Package-Function/Procedure-代码序号标识返回到命令行。操作人在看到返回结果之后,就可以快速的找到对应的代码文件,进行优化。
这样通过Python代码快速切分Oracle Package调用链,得到一个个执行单元(SQL段),Shell将执行单元传递给SQLPlus,SQLPlus连接数据库后调用Oracle的Explain功能获取执行计划后返回Shell。Shell二次判定是否存在全表扫描,存在则返回定位标识给操作人。可以以数百倍于人工操作的效率定位一个Oracle Package中存在全表扫描执行计划的SQL。在线上出现性能问题时,这种分钟级的定位更是提高了处理效率。
应该理解的是,虽然如上的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的异常语句识别方法的异常语句识别装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个异常语句识别装置实施例中的具体限定可以参见上文中对于异常语句识别方法的限定,在此不再赘述。
在一个实施例中,如图4所示,提供了一种异常语句识别装置,包括:待处理程序包获取模块401、分类模块402、执行计划分析模块403和确定模块404,其中:
待处理程序包获取模块401,用于获取待处理程序包。
分类模块402,用于对待处理程序包中的结构化查询语句进行分类得到目标分类。
执行计划分析模块403,用于调用目标工具对目标分类中的结构化查询语句进行执行计划分析得到分析结果。
确定模块404,用于根据分析结果确定异常语句。
在其中一个实施例中,上述分类模块402包括:
第一获取单元,用于获取当前待处理程序包。
第一分类单元,用于识别当前待处理程序包中的目标对象,以对当前待处理程序包进行第一次分类得到待处理分类。
第二分类单元,用于对所待处理分类中的结构化查询语句进行第二次分类以得到目标分类。
在其中一个实施例中,上述分类模块402还包括:
调用单元,用于当当前待处理程序包调用了其他程序包,则将其他程序包作为当前待处理程序包,并继续执行识别当前待处理程序包中的目标对象,以对当前待处理程序包进行第一次分类得到待处理分类的步骤。
上述异常语句识别装置还包括:
生成模块,用于生成目标分类对应的调用关系。
在其中一个实施例中,上述分类模块402还用于通过Python语言对待处理程序包中的结构化查询语句进行分类得到目标分类。
在其中一个实施例中,上述执行计划分析模块403用于通过shell工具调用SQLPlus工具对目标分类中的结构化查询语句进行执行计划分析得到分析结果。
在其中一个实施例中,上述确定模块404包括:
检测单元,用于检测分析结果中是否存在目标字符串;
输出单元,用于当分析结果中存在目标字符串时,确定存在目标字符串的分析结果对应的结构化查询语句为异常语句。
上述异常语句识别装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图5所示。该计算机设备包括通过系统总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、移动蜂窝网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种异常语句识别方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图5中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:获取待处理程序包;对待处理程序包中的结构化查询语句进行分类得到目标分类;调用目标工具对目标分类中的结构化查询语句进行执行计划分析得到分析结果;根据分析结果确定异常语句。
在一个实施例中,处理器执行计算机程序时所实现的对待处理程序包中的结构化查询语句进行分类得到目标分类,包括:获取当前待处理程序包;识别当前待处理程序包中的目标对象,以对当前待处理程序包进行第一次分类得到待处理分类;对所待处理分类中的结构化查询语句进行第二次分类以得到目标分类。
在一个实施例中,处理器执行计算机程序时所实现的在获取当前待处理程序包之后,还包括:当当前待处理程序包调用了其他程序包,则将其他程序包作为当前待处理程序包,并继续执行识别当前待处理程序包中的目标对象,以对当前待处理程序包进行第一次分类得到待处理分类的步骤;处理器执行计算机程序时所实现的在对所待处理分类中的结构化查询语句进行第二次分类以得到目标分类之后,还包括:生成目标分类对应的调用关系。
在一个实施例中,处理器执行计算机程序时所实现的对待处理程序包中的结构化查询语句进行分类得到目标分类,包括:通过Python语言对待处理程序包中的结构化查询语句进行分类得到目标分类。
在一个实施例中,处理器执行计算机程序时所实现的调用目标工具对目标分类中的结构化查询语句进行执行计划分析得到分析结果,包括:通过shell工具调用SQLPlus工具对目标分类中的结构化查询语句进行执行计划分析得到分析结果。
在一个实施例中,处理器执行计算机程序时所实现的根据分析结果确定异常语句,包括:检测分析结果中是否存在目标字符串;当分析结果中存在目标字符串时,确定存在目标字符串的分析结果对应的结构化查询语句为异常语句。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:获取待处理程序包;对待处理程序包中的结构化查询语句进行分类得到目标分类;调用目标工具对目标分类中的结构化查询语句进行执行计划分析得到分析结果;根据分析结果确定异常语句。
在一个实施例中,计算机程序被处理器执行时所实现的对待处理程序包中的结构化查询语句进行分类得到目标分类,包括:获取当前待处理程序包;识别当前待处理程序包中的目标对象,以对当前待处理程序包进行第一次分类得到待处理分类;对所待处理分类中的结构化查询语句进行第二次分类以得到目标分类。
在一个实施例中,计算机程序被处理器执行时所实现的在获取当前待处理程序包之后,还包括:当当前待处理程序包调用了其他程序包,则将其他程序包作为当前待处理程序包,并继续执行识别当前待处理程序包中的目标对象,以对当前待处理程序包进行第一次分类得到待处理分类的步骤;计算机程序被处理器执行时所实现的在对所待处理分类中的结构化查询语句进行第二次分类以得到目标分类之后,还包括:生成目标分类对应的调用关系。
在一个实施例中,计算机程序被处理器执行时所实现的对待处理程序包中的结构化查询语句进行分类得到目标分类,包括:通过Python语言对待处理程序包中的结构化查询语句进行分类得到目标分类。
在一个实施例中,计算机程序被处理器执行时所实现的调用目标工具对目标分类中的结构化查询语句进行执行计划分析得到分析结果,包括:通过shell工具调用SQLPlus工具对目标分类中的结构化查询语句进行执行计划分析得到分析结果。
在一个实施例中,计算机程序被处理器执行时所实现的根据分析结果确定异常语句,包括:检测分析结果中是否存在目标字符串;当分析结果中存在目标字符串时,确定存在目标字符串的分析结果对应的结构化查询语句为异常语句。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:获取待处理程序包;对待处理程序包中的结构化查询语句进行分类得到目标分类;调用目标工具对目标分类中的结构化查询语句进行执行计划分析得到分析结果;根据分析结果确定异常语句。
在一个实施例中,计算机程序被处理器执行时所实现的对待处理程序包中的结构化查询语句进行分类得到目标分类,包括:获取当前待处理程序包;识别当前待处理程序包中的目标对象,以对当前待处理程序包进行第一次分类得到待处理分类;对所待处理分类中的结构化查询语句进行第二次分类以得到目标分类。
在一个实施例中,计算机程序被处理器执行时所实现的获取当前待处理程序包之后,包括:当当前待处理程序包调用了其他程序包,则将其他程序包作为当前待处理程序包,并继续执行识别当前待处理程序包中的目标对象,以对当前待处理程序包进行第一次分类得到待处理分类的步骤;计算机程序被处理器执行时所实现的对所待处理分类中的结构化查询语句进行第二次分类以得到目标分类之后,还包括:生成目标分类对应的调用关系。
在一个实施例中,计算机程序被处理器执行时所实现的对待处理程序包中的结构化查询语句进行分类得到目标分类,包括:通过Python语言对待处理程序包中的结构化查询语句进行分类得到目标分类。
在一个实施例中,计算机程序被处理器执行时所实现的调用目标工具对目标分类中的结构化查询语句进行执行计划分析得到分析结果,包括:通过shell工具调用SQLPlus工具对目标分类中的结构化查询语句进行执行计划分析得到分析结果。
在一个实施例中,计算机程序被处理器执行时所实现的根据分析结果确定异常语句,包括:检测分析结果中是否存在目标字符串;当分析结果中存在目标字符串时,确定存在目标字符串的分析结果对应的结构化查询语句为异常语句。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (6)
1.一种异常语句识别方法,其特征在于,所述方法包括:
获取待处理程序包;
对所述待处理程序包中的结构化查询语句进行分类得到目标分类;
调用目标工具对所述目标分类中的结构化查询语句进行执行计划分析得到分析结果;
根据所述分析结果确定异常语句;
其中,所述对所述待处理程序包中的结构化查询语句进行分类得到目标分类,包括:
获取当前待处理程序包;
识别所述当前待处理程序包中的目标对象,以对所述当前待处理程序包进行第一次分类得到待处理分类;
对所述待处理分类中的结构化查询语句进行第二次分类以得到目标分类;
其中,在所述获取当前待处理程序包之后,还包括:当所述当前待处理程序包调用了其他程序包,则将所述其他程序包作为当前待处理程序包,并继续执行识别所述当前待处理程序包中的目标对象,以对所述当前待处理程序包进行第一次分类得到待处理分类的步骤;
在所述对所述待处理分类中的结构化查询语句进行第二次分类以得到目标分类之后,还包括:生成所述目标分类对应的调用关系;
其中,根据所述分析结果确定异常语句,包括:检测所述分析结果中是否存在目标字符串;当所述分析结果中存在目标字符串时,确定存在所述目标字符串的分析结果对应的结构化查询语句为异常语句;
所述检测所述分析结果中是否存在目标字符串,包括:检测所述分析结果中是否存在全表扫描字段。
2.根据权利要求1所述的方法,其特征在于,所述对所述待处理程序包中的结构化查询语句进行分类得到目标分类,包括:
通过Python语言对所述待处理程序包中的结构化查询语句进行分类得到目标分类。
3.根据权利要求1所述的方法,其特征在于,所述调用目标工具对所述目标分类中的结构化查询语句进行执行计划分析得到分析结果,包括:
通过shell工具调用SQLPlus工具对所述目标分类中的结构化查询语句进行执行计划分析得到分析结果。
4.一种异常语句识别装置,其特征在于,所述装置包括:
待处理程序包获取模块,用于获取待处理程序包;
分类模块,用于对所述待处理程序包中的结构化查询语句进行分类得到目标分类;
执行计划分析模块,用于调用目标工具对所述目标分类中的结构化查询语句进行执行计划分析得到分析结果;
确定模块,用于根据所述分析结果确定异常语句;
其中,分类模块包括:
第一获取单元,用于获取当前待处理程序包;
第一分类单元,用于识别当前待处理程序包中的目标对象,以对当前待处理程序包进行第一次分类得到待处理分类;
第二分类单元,用于对所待处理分类中的结构化查询语句进行第二次分类以得到目标分类;
其中,分类模块还包括:调用单元,用于当当前待处理程序包调用了其他程序包,则将其他程序包作为当前待处理程序包,并继续执行识别当前待处理程序包中的目标对象,以对当前待处理程序包进行第一次分类得到待处理分类的步骤;
异常语句识别装置还包括:生成模块,用于生成目标分类对应的调用关系;
其中,确定模块包括:检测单元,用于检测分析结果中是否存在目标字符串;输出单元,用于当分析结果中存在目标字符串时,确定存在目标字符串的分析结果对应的结构化查询语句为异常语句;
所述检测单元,用于检测所述分析结果中是否存在全表扫描字段。
5.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至3中任一项所述的方法的步骤。
6.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至3中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310848254.8A CN116578583B (zh) | 2023-07-12 | 2023-07-12 | 异常语句识别方法、装置、设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310848254.8A CN116578583B (zh) | 2023-07-12 | 2023-07-12 | 异常语句识别方法、装置、设备、存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116578583A CN116578583A (zh) | 2023-08-11 |
CN116578583B true CN116578583B (zh) | 2023-10-03 |
Family
ID=87534395
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310848254.8A Active CN116578583B (zh) | 2023-07-12 | 2023-07-12 | 异常语句识别方法、装置、设备、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116578583B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110909016A (zh) * | 2019-10-12 | 2020-03-24 | 中国平安财产保险股份有限公司 | 基于数据库的重复关联检测方法、装置、设备及存储介质 |
CN111291070A (zh) * | 2020-01-20 | 2020-06-16 | 南京星环智能科技有限公司 | 一种异常sql检测方法、设备及介质 |
KR102153674B1 (ko) * | 2020-08-18 | 2020-09-09 | 카페24 주식회사 | Sql 쿼리의 유형을 분류하는 방법, 이상 상황 발생 여부 결정 방법 및 컴퓨팅 디바이스 |
KR20200118965A (ko) * | 2019-04-09 | 2020-10-19 | 카페24 주식회사 | Sql 쿼리의 유형을 분류하는 방법, 이상 상황 발생 여부 결정 방법 및 컴퓨팅 디바이스 |
CN112463792A (zh) * | 2020-11-20 | 2021-03-09 | 航天精一(广东)信息科技有限公司 | 一种数据权限控制方法及装置 |
CN113448965A (zh) * | 2021-07-02 | 2021-09-28 | 中国工商银行股份有限公司 | 一种全表扫描的结构化查询语句的确定方法、装置和设备 |
WO2021259217A1 (zh) * | 2020-06-23 | 2021-12-30 | 中兴通讯股份有限公司 | 数据的关联查询方法、装置、设备及存储介质 |
CA3131725A1 (en) * | 2020-09-23 | 2022-03-23 | 10353744 Canada Ltd. | Sql optimization method and device, computer equipment and storage medium |
CN116089446A (zh) * | 2022-09-23 | 2023-05-09 | 青岛海信智慧生活科技股份有限公司 | 一种结构化查询语句的优化控制方法及装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9317414B2 (en) * | 2014-03-04 | 2016-04-19 | International Business Machines Corporation | Regression testing of SQL execution plans for SQL statements |
CN108664516A (zh) * | 2017-03-31 | 2018-10-16 | 华为技术有限公司 | 查询优化方法及相关装置 |
CN108182215B (zh) * | 2017-12-22 | 2021-10-12 | 微梦创科网络科技(中国)有限公司 | 一种结构化查询语言sql性能统计的方法及装置 |
-
2023
- 2023-07-12 CN CN202310848254.8A patent/CN116578583B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200118965A (ko) * | 2019-04-09 | 2020-10-19 | 카페24 주식회사 | Sql 쿼리의 유형을 분류하는 방법, 이상 상황 발생 여부 결정 방법 및 컴퓨팅 디바이스 |
CN110909016A (zh) * | 2019-10-12 | 2020-03-24 | 中国平安财产保险股份有限公司 | 基于数据库的重复关联检测方法、装置、设备及存储介质 |
CN111291070A (zh) * | 2020-01-20 | 2020-06-16 | 南京星环智能科技有限公司 | 一种异常sql检测方法、设备及介质 |
WO2021259217A1 (zh) * | 2020-06-23 | 2021-12-30 | 中兴通讯股份有限公司 | 数据的关联查询方法、装置、设备及存储介质 |
KR102153674B1 (ko) * | 2020-08-18 | 2020-09-09 | 카페24 주식회사 | Sql 쿼리의 유형을 분류하는 방법, 이상 상황 발생 여부 결정 방법 및 컴퓨팅 디바이스 |
CA3131725A1 (en) * | 2020-09-23 | 2022-03-23 | 10353744 Canada Ltd. | Sql optimization method and device, computer equipment and storage medium |
CN112463792A (zh) * | 2020-11-20 | 2021-03-09 | 航天精一(广东)信息科技有限公司 | 一种数据权限控制方法及装置 |
CN113448965A (zh) * | 2021-07-02 | 2021-09-28 | 中国工商银行股份有限公司 | 一种全表扫描的结构化查询语句的确定方法、装置和设备 |
CN116089446A (zh) * | 2022-09-23 | 2023-05-09 | 青岛海信智慧生活科技股份有限公司 | 一种结构化查询语句的优化控制方法及装置 |
Non-Patent Citations (1)
Title |
---|
基于ORACLE特性的SQL语句的分析及优化;刘智峰, 林宗楷, 郭玉钗;计算机研究与发展(10);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN116578583A (zh) | 2023-08-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9418144B2 (en) | Similar document detection and electronic discovery | |
TWI718643B (zh) | 異常群體識別方法及裝置 | |
CN109992601B (zh) | 待办事项信息的推送方法、装置和计算机设备 | |
CN113688288B (zh) | 数据关联分析方法、装置、计算机设备和存储介质 | |
CN111324716A (zh) | 指标数据获取方法、装置、计算机设备和存储介质 | |
CN115512823A (zh) | 设备异常处理方法、装置、异常处理系统和设备 | |
CN117033424A (zh) | 慢sql语句的查询优化方法、装置和计算机设备 | |
US7458001B2 (en) | Sequential pattern extracting apparatus | |
CN109656947B (zh) | 数据查询方法、装置、计算机设备和存储介质 | |
CN114356257A (zh) | 日志打印方法、装置、计算机设备、存储介质和程序产品 | |
CN111858366B (zh) | 一种测试用例生成方法、装置、设备及存储介质 | |
CN116226681B (zh) | 一种文本相似性判定方法、装置、计算机设备和存储介质 | |
CN116578583B (zh) | 异常语句识别方法、装置、设备、存储介质 | |
CN116561181A (zh) | 数据查询方法、装置、计算机设备及计算机可读存储介质 | |
CN115544007A (zh) | 标签预处理方法、装置、计算机设备和存储介质 | |
CN112256566B (zh) | 一种测试案例的保鲜方法和装置 | |
CN115309554A (zh) | 基于兼容层运行的应用的排错方法、排错系统及计算设备 | |
CN111460268B (zh) | 数据库查询请求的确定方法、装置和计算机设备 | |
CN116483735B (zh) | 一种代码变更的影响分析方法、装置、存储介质及设备 | |
CN114610749A (zh) | 数据库执行语句优化方法、装置、设备、介质和程序产品 | |
CN114547066A (zh) | 核电业务数据的标准化方法、装置和计算机设备 | |
CN116701178A (zh) | 界面测试方法、装置、计算机设备和存储介质 | |
CN117827978A (zh) | 数据冲突处理方法、装置、计算机设备和存储介质 | |
CN115098686A (zh) | 分级信息确定方法、装置、计算机设备 | |
CN114385630A (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 |