CN115687050A - 一种sql语句的性能分析方法及装置 - Google Patents
一种sql语句的性能分析方法及装置 Download PDFInfo
- Publication number
- CN115687050A CN115687050A CN202211426900.3A CN202211426900A CN115687050A CN 115687050 A CN115687050 A CN 115687050A CN 202211426900 A CN202211426900 A CN 202211426900A CN 115687050 A CN115687050 A CN 115687050A
- Authority
- CN
- China
- Prior art keywords
- analysis
- performance
- sql statement
- sql
- parameters
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本申请提供一种SQL语句的性能分析方法及装置,涉及人工智能领域,也可用于金融领域,所述方法包括:根据待分析源代码的特征属性解析所述待分析源代码,得到对应的待分析SQL语句;所述特征属性至少包括表数据量、语句数量及索引参数;根据所述特征属性确定所述待分析SQL语句的性能分析参数;所述性能分析参数包括静态分析参数及动态分析参数;将所述静态分析参数及动态分析参数输入预先构建的SQL语句性能分析模型,得到对应的性能分析结果。本申请能够通过静态动态相结合的方式,对待分析源代码中的SQL语句进行性能分析。
Description
技术领域
本申请涉及人工智能领域,可以用于金融领域,具体是一种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语句性能分析模型。
进一步地,所述将所述静态分析参数及动态分析参数输入预先构建的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语句的性能分析方法的步骤。
第四方面,本申请提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现所述SQL语句的性能分析方法的步骤。
第五方面,本申请提供一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现所述SQL语句的性能分析方法的步骤。
针对现有技术中的问题,本申请提供的SQL语句的性能分析方法及装置,能够通过静态动态相结合的方式,对待分析源代码中的SQL语句进行性能分析,有效地提升了软件开发快速迭代过程中,SQL语句的编写及优化效率,提升了软件产品开发过程中对SQL语句性能的智能分析能力。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例中SQL语句的性能分析方法的流程图之一;
图2为本申请实施例中得到待分析SQL语句的流程图;
图3为本申请实施例中确定静态性能分析参数的流程图;
图4为本申请实施例中确定动态性能分析参数的流程图;
图5为本申请实施例中构建SQL语句性能分析模型的流程图;
图6为本申请实施例中SQL语句的性能分析方法的流程图之二;
图7为本申请实施例中SQL语句的性能分析方法装置的结构图之一;
图8为本申请实施例中SQL语句提取单元的结构图;
图9为本申请实施例中分析参数确定单元的结构图;
图10为本申请实施例中分析参数确定单元的结构图;
图11为本申请实施例中SQL语句的性能分析方法装置的结构图之二;
图12为本申请实施例中SQL语句的性能分析方法装置的结构图之三;
图13为本申请实施例中的电子设备的结构示意图;
图14为本申请实施例中得到性能分析结果的流程图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,本申请提供的SQL语句的性能分析方法及装置,可用于金融领域,也可用于除金融领域之外的任意领域,本申请提供的SQL语句的性能分析方法及装置的应用领域不做限定。
本申请技术方案中对数据的获取、存储、使用及处理等均符合国家法律法规的相关规定。
一实施例中,参见图1,为了能够通过静态动态相结合的方式,对待分析源代码中的SQL语句进行性能分析,本申请提供一种SQL语句的性能分析方法,包括:
S101:根据待分析源代码的特征属性解析所述待分析源代码,得到对应的待分析SQL语句;所述特征属性至少包括表数据量、语句数量及索引参数;
可以理解的是,随着人们对软件应用需求的不断提升,软件版本从需求提出到研发交付的周期越来越短。静态代码扫描作为检查代码质量的一个重要环节,可在项目编码提交前快速定位代码中潜在的错误,发现劣质代码,并提出对应的代码优化建议。
然而,现有的静态代码扫描工具在分析源码中SQL语句的静态参数时,至少存在如下问题:第一,现有的静态代码扫描工具偏重对SQL语句的语法进行分析。在分析时,会根据SQL语句的编写规范形成相应的检查规则。在一定程度上,检查规则相对刻板,难以适应各种各样的实际业务需求,引发误报。第二,现有的静态代码扫描工具在对SQL语句进行检查时,未在实际数据库环境中运行相应的代码,造成一定的检查误差。第三,现有的静态代码扫描工具未检查SQL语句在动态执行过程中的真实执行效果,未结合实际数据分布及数据量智能分析SQL语句的运行效率,导致在效率检查方面只能由人工进行。综上所述,现有的静态代码扫描工具在对SQL语句进行检查时,排查流程长、周期长,导致持续集成流程效率降低,影响软件交付。
为了解决现有技术中存在的问题,本申请提供一种SQL语句的性能分析方法,提高了交付时对SQL语句性能分析的检查准确性。
步骤S101的具体实施方式可以为:
一实施例中,参见图2,所述根据待分析源代码的特征属性解析所述待分析源代码,得到对应的待分析SQL语句,包括:
S201:根据所述待分析源代码的特征属性生成对应的语法树;其中,特征属性包括但不限于语法规则;
S202:根据所述语法树中的关键词确定所述待分析SQL语句。
具体地,第一,获取软件产品属性配置(也称特征属性);可以使用GIT、JENKINS等工具获取该属性。
第二,获取软件产品的源代码;可以使用GIT、JENKINS等工具下载该源代码。
第三,扫描软件产品的源代码,解析出SQL语句,并根据源代码记录SQL的联机或批量标签;获取标记SQL表数据量;生成SQL的抽象语法树。
其中,联机交易算是实时返回,响应实际要求比较高,并发量可能比较大;批量可理解为定时执行作业流程,响应要求较低一些。
具体实施举例如下:
1、下载产品属性配置,包括但不限于源代码联机批量标签信息、重点表标签信息、表数据量均值、表数据分布、表结构信息、表约束信息及表索引信息。
2、下载产品软件源代码
3、利用开源的PDM代码扫描工具,根据预设的扫描规则(设置检查规则,扫描分析程序目录时,分别检查java源文件、xml文件;分别按下面解析代码解析出java语法树)对代码库的源代码进行扫描分析,解析出语法树,进而解析出需分析的目标SQL语句。
实施方式一:可以通过java规则解析样例java类,形成成语法树,历遍语法树注解引入的SQL语句。(如表1所示)
表1
实施方式二:可以通过代码历遍xml文件配置sql,解析出xml配置的SQL语句。(如表2所示)
表2
对SQL语句进行语法分析,生成SQL语句的抽象语法树。
例如上述解析出的SQL语句为:
SELECT ZONENO,PRTOEX,PRODID,CURRTYPE FROM ATHFPSUB WHERE ZONENO=#{zoneNo}AND OPENBRNO=#{openBrno}。
其中,SQL语法树参见表3所示。
表3
S102:根据所述特征属性确定所述待分析SQL语句的性能分析参数;所述性能分析参数包括静态分析参数及动态分析参数;
可以理解的是,步骤S102中确定静态分析参数的具体实施方式可以参见步骤S301至步骤S303。
一实施例中,参见图3,本实施例是对静态参数进行分析的实施例。所述静态分析参数包括:表数据量均值、表性能关注度、SQL语句复杂度及SQL语句索引匹配度;所述根据所述特征属性确定所述待分析SQL语句的性能分析参数,包括:
S301:根据所述表数据量计算所述表数据量均值;
具体地,从历史数据库信息统计获取到SQL语句涉及的表数据量大小,根据所述表数据量计算所述表数据量均值。通过监控系统,监控正式提供服务的生产数据库信息,获取表的数据量情况。例如ORACLE数据库,可通过表分析语句analyze tables获取表的数据量,也可以通过查询user_tables获取;例如MYSQL数据库,可通过查询information_schema.tables获取。
S302:根据所述表数据量计算所述表性能关注度;
具体地,从历史数据库统计信息,获取目标SQL涉及表的交易调用量,根据表交易量计算所述表的表性能关注度。通过代码实现mybatis插件拦截功能,获取到交易调用的SQL情况,并根据拦截的SQL语句统计,得到表的调用交易量。调用量越大的表,性能关注度越高。
S303:根据所述语句数量计算所述SQL语句复杂度;
具体地,通过分析目标SQL语句的语法关键字“JOIN、HAVING、GROUP BY、UNION、ORDER BY、DISTINCT、数据库函数”数量情况,分析得出目标SQL语句的复杂度。解析SQL语句,获取和统计关键字数量,例如按关键字数量小于等于3,复杂度为10;关键字数量大于等于4,小于等于8,复杂度为15;关键字数量大于7,小于15,复杂度为20;关键字大于15,复杂度为30。
S304:根据所述索引参数计算所述SQL语句索引匹配度。
具体地,从历史数据库统计信息获取目标SQL涉及表的约束和索引,获取历史表索引列的数据量情况,结合分析目标SQL查询条件列与索引配置关系,得出目标SQL的索引匹配度。通过监控系统,监控正式提供服务的生产数据库信息,统计数据表各索引列的数据量及去重数据量情况;并分析目标SQL语句中WHERE子句条件列对应索引列的命中情况。通过SQL各索引列,及对应去重数据量与列数据量的比率,分析出目标SQL索引匹配度。
一实施例中,可以根据生成的SQL抽象语法树,历遍规范检查规则模块,生成规范检查结果,包括全表扫描、SQL语句索引匹配度、复杂度检查、编码检查错误。
参见表4,根据SQL语句:SELECT ZONENO,PRTOEX,PRODID,CURRTYPE FROMATHFPSUB WHERE ZONENO=#{zoneNo}AND OPENBRNO=#{openBrno}。按如下规则检查列表,检查出结果:
表4
可以理解的是,步骤S102中确定动态分析参数的具体实施方式可以参见步骤S401至步骤S402。
一实施例中,参见图4,本实施例是对动态参数进行分析的实施例。所述性能分析参数包括:所述动态分析参数;所述动态分析参数包括:有效执行时间及历史执行明细比率;所述根据所述特征属性确定所述待分析SQL语句的性能分析参数,包括:
S401:从历史数据库中获取所述待分析SQL语句的动态执行信息;所述动态执行信息至少包括执行总耗时、计算处理耗时、输入输出耗时及锁等待耗时;
具体地,通过分析历史SQL执行情况,对待分析的目标SQL,在测试环境数据库换进行多次执行,通过分析多次执行情况的结果,监控数据库慢日志,获取包括执行耗时,计算处理耗时,输入输出耗时、锁等待耗时等。sql的执行情况,通过数据库软件对应功能查询回去,例如oracle数据库通过查询v$sqlarea、v$sql_plan、v$sql等试图获取sql的执行情况;结合explain命令分析目标sql,最终获得目标sql的动态执行“执行总耗时、计算处理耗时、输入输出耗时及锁等待耗时”均值。
S402:对所述待分析SQL语句进行全表扫描、全分区扫描、索引快速全扫描及索引跳跃扫描,得到所述有效执行时间及历史执行明细比率。
通过分析历史SQL执行情况,和实施多次的动态执行目标SQL,通过分析SQL的执行情况,得到索引的匹配情况,具体是“全表扫描、全分区扫描、索引快速全扫描及索引跳跃扫描”情况。本步骤中,对待分析SQL在测试数据库多次执行和分析,获取到对应执行情况指标数据,再输入性能评估模型进行计算分析。
1、存在性能问题SQL,引入数据库信息、表结构及表数据拼装、生产表数据量及数据量分布情况。
2、作为SQL客户端执行SQL,并检查SQL执行的慢日志。
3、通过数据库,监控并获取:SQL执行总耗时、CPU使用率、IO读写、锁等待耗时、执行计划分析:全表扫描、全分区扫描、笛卡尔积、索引快速全扫描、索引跳跃扫描、Cost成本开销高等。动态执行分析:SQL有效执行时间分析、历史执行明细比率、查询中间结果集过大等。
S103:将所述静态分析参数及动态分析参数输入预先构建的SQL语句性能分析模型,得到对应的性能分析结果。
需要说明的是,一实施例中,参见图5,构建SQL语句性能分析模型的步骤,包括:
S501:根据历史静态分析参数及对应的静态分析权重计算历史静态特征参数;
S502:根据历史动态分析参数及对应的动态分析权重计算历史动态特征参数;
S503:将所述历史静态特征参数及所述历史动态特征参数分别输入神经网络回归模型,得到静态分析模型及动态分析模型;
S504:组合所述静态分析模型及动态分析模型,得到所述SQL语句性能分析模型。
对于静态分析模型及动态分析模型,其训练都是将对应的分析参数输入至上述神经网络回归模型中进行训练得到;不同之处仅在于,当分析参数为静态特征参数时,得到的是静态分析模型;当分析参数为动态特征参数时,得到的是动态分析模型。
下面以静态分析模型为例进行阐述(以下输入参数均为历史静态分析参数):
其中,x=(r1×p1+r2×p2+r3×p3+r4×p4+r5×p5+r6×p6-t)通过公式进行计算;r1、r2、r3、r4、r5、r6分别对应SQL批量联机标签(0批量、1联机)、表数据量均值、全表扫描、SQL语句索引匹配度、SQL复杂度、SQL规范分析结果;p1、p2、p3、p4、p5、p6分别对应SQL批量联机标签、表数据量均值权值、全表扫描权值、静态检查结果、复杂度权值、SQL规范分析结果,t为阈值。
其中,记录预先设置SQL语句性能问题情况,引入SQL批量联机标签、表数据量均值、全表扫描、SQL语句索引匹配度、复杂度具体值;以及,采用逻辑回归算法计算出来的SQL性能问题参考值,把这两者作为一组数据;对计算模型进行运算,得到权重值和阈值;再准备至少两组数据,对模型进行验证,并对权值、阈值进行调整直到符合要求。
在步骤S103中,静态智能分析过程如下:
一实施例中,参见图14,所述将所述静态分析参数及动态分析参数输入预先构建的SQL语句性能分析模型,得到对应的性能分析结果,包括:
S501’:根据所述静态分析参数及对应的静态分析权重计算静态特征参数;
S502’:根据所述动态分析参数及对应的动态分析权重计算动态特征参数;
S503’:将所述静态特征参数及所述动态特征参数分别输入SQL语句性能分析模型,得到对应的性能分析结果。
具体地,将静态特征参数输入SQL语句性能分析模型中的静态分析模型;将动态特征参数输入SQL语句性能分析模型中的动态分析模型。
根据给定的SQL静态扫描结果,采用神经网络的逻辑回归算法进行计算,计算确定SQL语句是否存在性能问题。
其中x=(r1×p1+r2×p2+r3×p3+r4×p4+r5×p5+r6×p6-t)通过公式进行计算;r1、r2、r3、r4、r5、r6分别对应SQL批量联机标签、表数据量均值、重点表标签、SQL语句索引匹配度、SQL语句复杂度、规范匹配度;p1、p2、p3、p4、p5、p6分别对应SQL批量联机标签、表数据量均值权值、重点表标签、SQL语句索引匹配度权值、SQL语句复杂度权值、规范匹配度,t为阈值。
其中,记录预先设置SQL语句性能问题情况,及SQL批量联机标签、表数据量均值、重点表标签、SQL语句索引匹配度、SQL语句复杂度具体值;以及,采用逻辑回归算法计算出来的SQL性能问题参考值,把这两者作为一组数据;对计算模型进行运算,得到权重值和阈值;再准备至少两组数据,对模型进行验证,并对权值、阈值进行调整直到符合要求。
在步骤S103中,动态智能分析过程如下:
数据库语句处理SQL语句,引入数据库信息、表结构及表数据拼装;作为SQL客户端执行SQL,并检查SQL执行日志,分析语句执行总耗时、锁等待耗时、命中行数、检索行数。(参见表5)
表5
通过数据库,监控并获取SQL执行信息:SQL执行总耗时、CPU使用率、IO读写、锁等待耗时、执行计划分析:全表扫描、全分区扫描、笛卡尔积、索引快速全扫描、索引跳跃扫描、Cost成本开销高等。动态执行分析:SQL有效执行时间分析、历史执行明细比率、查询中间结果集过大等。按性能分析模型,对SQL监控的各项指标进行计算,判别SQL是否存在性能问题。
其中,x=(r1'×p1'+r2'×p2'+r3'×p3'+r4'×p4'+r5'×p5'-t)通过公式进行计算;r1’、r2’、r3’、r4’、r5’分别对应SQL执行总耗时、CPU使用率、IO读写、锁等待耗时、执行计划分析;p1’、p2’、p3’、p4’、p5’分别对应SQL执行总耗时权值、CPU使用率权值、IO读写权值、锁等待耗时权值、执行计划分析权值,t为阈值。
其中,记录预先设置SQL语句性能问题情况,及SQL执行总耗时、CPU使用率、IO读写、锁等待耗时、执行计划分析;以及,采用逻辑回归算法计算出来的SQL性能问题参考值,把这两者作为一组数据;对计算模型进行运算,得到权重值和阈值;再准备至少两组数据,对模型进行验证,并对权值、阈值进行调整直到符合要求。
一实施例中,参见图6,所述性能分析结果包括:静态分析结果及动态分析结果;在将所述静态分析参数及动态分析参数输入预先构建的SQL语句性能分析模型,得到对应的性能分析结果之后,还包括:
S601:比较预设的静态性能分析阈值与所述静态分析结果,得到第一比较结果;如下表格样例数据说明:表数据量越大,对性能影响越大;表关注度越多,说明调用量越大,引发性能风险越高;索引匹配度值越大,匹配度越高;SQL复杂度越大,对系统性能影响越大;SQL规范分析命中问题越多,性能风险越大。通过选取样本数据并清洗,得到SQL的静态分析的样本。根据神经网络的逻辑回归算法模型:其中阈值以0.5设置,对样本迭代计算训练得到模型参数。应用模型对每一个检验SQL,给出一个0到1的评分;分值越大,表明该SQL静态性能风险的可能性就越大。(参见表6及表7。)
表6训练样例
表7匹配结果
阈值 | 预测能力 |
(0,0.5) | 效果差 |
0.5 | 临界值 |
(0.5,0.7] | 效果较低 |
(0.7,0.85] | 效果适中 |
(0.85,0.95] | 效果优秀 |
(0.95,1] | 关注数据有效性 |
S602:比较预设的动态性能分析阈值与所述动态分析结果,得到第二比较结果;如下表格样例数据说明:SQL执行耗时越长,对性能影响越大;CPU使用率越高,说明资源消耗越大,引发性能风险越高;IO读写越多,性能消耗越大;锁等待越久,执行效性效果越差;执行分析数据扫描越多,性能风险越高。通过选取样本数据并清洗,得到SQL的动态执行分析样本。根据神经网络的逻辑回归算法模型:其中阈值以0.5设置,得到模型计算:。对样本迭代计算训练得到模型参数。应用模型对每一个检验SQL,给出一个0到1的评分;分值越大,表明该SQL动态性能风险的可能性就越大。(参见表8及表9。)
表8训练样例
表9匹配结果
阈值 | 预测能力 |
(0,0.5) | 效果差 |
0.5 | 临界值 |
(0.5,0.7] | 效果较低 |
(0.7,0.85] | 效果适中 |
(0.85,0.95] | 效果优秀 |
(0.95,1] | 关注数据有效性 |
S603:当所述第一比较结果及所述第二比较结果均为通过时,确定待分析SQL语句的性能为达标。
可以理解的是,在本申请实施例中,任一结果不达标均会被报出错误。
从上述描述可知,本申请提供的SQL语句的性能分析方法及装置,能够通过静态动态相结合的方式,对待分析源代码中的SQL语句进行性能分析,有效地提升了软件开发快速迭代过程中,SQL语句的编写及优化效率,提升了软件产品开发过程中对SQL语句性能的智能分析能力。
因此在静态代码扫描基础上,完善SQL语句智能静态分析,并结合SQL动态执行结果的智能分析相结合的方式,进行完善。目前,动态运行监控SQL运行效率问题,主要在软件生产运行阶段较为准确,导致发现效率问题时间晚。
基于同一发明构思,本申请实施例还提供了一种SQL语句的性能分析方法装置,可以用于实现上述实施例所描述的方法,如下面的实施例所述。由于SQL语句的性能分析方法装置解决问题的原理与SQL语句的性能分析方法相似,因此SQL语句的性能分析方法装置的实施可以参见基于软件性能基准确定方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的系统较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
一实施例中,参见图7,为了能够通过静态动态相结合的方式,对待分析源代码中的SQL语句进行性能分析,本申请提供一种SQL语句的性能分析装置,包括:
SQL语句提取单元701,用于根据待分析源代码的特征属性解析所述待分析源代码,得到对应的待分析SQL语句;所述特征属性至少包括表数据量、语句数量及索引参数;
分析参数确定单元702,用于根据所述特征属性确定所述待分析SQL语句的性能分析参数;所述性能分析参数包括静态分析参数及动态分析参数;
性能分析单元703,用于将所述静态分析参数及动态分析参数输入预先构建的SQL语句性能分析模型,得到对应的性能分析结果。
一实施例中,参见图8,所述SQL语句提取单元701,包括:语法树生成模块801及SQL语句解析模块802。
语法树生成模块801,用于根据所述待分析源代码的特征属性生成对应的语法树;
SQL语句解析模块802,用于根据所述语法树中的关键词确定所述待分析SQL语句。
一实施例中,参见图9,所述静态分析参数包括:表数据量均值、表性能关注度、SQL语句复杂度及SQL语句索引匹配度;所述分析参数确定单元702,包括:
表数据量均值计算模块901,用于根据所述表数据量计算所述表数据量均值;
SQL语句复杂度计算模块902,用于根据所述语句数量计算所述SQL语句复杂度;
SQL语句索引匹配度计算模块903,用于根据所述索引参数计算所述SQL语句索引匹配度。
一实施例中,参见图10,所述动态分析参数包括:有效执行时间及历史执行明细比率;所述分析参数确定单元702,包括:动态执行信息获取模块1001及执行时间比率计算模块1002。
动态执行信息获取模块1001,用于从历史数据库中获取所述待分析SQL语句的动态执行信息;所述动态执行信息至少包括执行总耗时、计算处理耗时、输入输出耗时及锁等待耗时;
执行时间比率计算模块1002,用于动态执行信息获取模块1001,用于对所述待分析SQL语句进行全表扫描、全分区扫描、索引快速全扫描及索引跳跃扫描,得到所述有效执行时间及历史执行明细比率。
一实施例中,参见图11,所述SQL语句的性能分析装置,还包括:静态参数计算单元1101、动态参数计算单元1102、模型训练单元1103及模型组合单元1104。
静态参数计算单元1101,用于根据所述静态分析参数及对应的静态分析权重计算静态特征参数;
动态参数计算单元1102,用于根据所述动态分析参数及对应的动态分析权重计算动态特征参数;
模型训练单元1103,用于将所述静态特征参数及所述动态特征参数分别输入神经网络回归模型,得到静态分析模型及动态分析模型;
模型组合单元1104,用于组合所述静态分析模型及动态分析模型,得到所述SQL语句性能分析模型。
一实施例中,参见图12,所述性能分析结果包括:静态分析结果及动态分析结果;所述SQL语句的性能分析装置,还包括:第一结果确定单元1201、第二结果确定单元1202及性能判断单元1203。
第一结果确定单元1201,用于比较预设的静态性能分析阈值与所述静态分析结果,得到第一比较结果;
第二结果确定单元1202,用于比较预设的动态性能分析阈值与所述动态分析结果,得到第二比较结果;
性能判断单元1203,用于当所述第一比较结果及所述第二比较结果均为通过时,确定待分析SQL语句的性能为达标。
从硬件层面来说,为了能够通过静态动态相结合的方式,对待分析源代码中的SQL语句进行性能分析,本申请提供一种用于实现所述SQL语句的性能分析方法中的全部或部分内容的电子设备的实施例,所述电子设备具体包含有如下内容:
处理器(Processor)、存储器(Memory)、通讯接口(Communications Interface)和总线;其中,所述处理器、存储器、通讯接口通过所述总线完成相互间的通讯;所述通讯接口用于实现所述SQL语句的性能分析方法装置与核心业务系统、用户终端以及相关数据库等相关设备之间的信息传输;该逻辑控制器可以是台式计算机、平板电脑及移动终端等,本实施例不限于此。在本实施例中,该逻辑控制器可以参照实施例中的SQL语句的性能分析方法的实施例,以及SQL语句的性能分析方法装置的实施例进行实施,其内容被合并于此,重复之处不再赘述。
可以理解的是,所述用户终端可以包括智能手机、平板电子设备、网络机顶盒、便携式计算机、台式电脑、个人数字助理(PDA)、车载设备、智能穿戴设备等。其中,所述智能穿戴设备可以包括智能眼镜、智能手表、智能手环等。
在实际应用中,SQL语句的性能分析方法的部分可以在如上述内容所述的电子设备侧执行,也可以所有的操作都在所述客户端设备中完成。具体可以根据所述客户端设备的处理能力,以及用户使用场景的限制等进行选择。本申请对此不作限定。若所有的操作都在所述客户端设备中完成,所述客户端设备还可以包括处理器。
上述的客户端设备可以具有通讯模块(即通讯单元),可以与远程的服务器进行通讯连接,实现与所述服务器的数据传输。所述服务器可以包括任务调度中心一侧的服务器,其他的实施场景中也可以包括中间平台的服务器,例如与任务调度中心服务器有通讯链接的第三方服务器平台的服务器。所述的服务器可以包括单台计算机设备,也可以包括多个服务器组成的服务器集群,或者分布式装置的服务器结构。
图13为本申请实施例的电子设备9600的系统构成的示意框图。如图13所示,该电子设备9600可以包括中央处理器9100和存储器9140;存储器9140耦合到中央处理器9100。值得注意的是,该图13是示例性的;还可以使用其他类型的结构,来补充或代替该结构,以实现电信功能或其他功能。
一实施例中,SQL语句的性能分析方法功能可以被集成到中央处理器9100中。其中,中央处理器9100可以被配置为进行如下控制:
S101:根据待分析源代码的特征属性解析所述待分析源代码,得到对应的待分析SQL语句;所述特征属性至少包括表数据量、语句数量及索引参数;
S102:根据所述特征属性确定所述待分析SQL语句的性能分析参数;所述性能分析参数包括静态分析参数及动态分析参数;
S103:将所述静态分析参数及动态分析参数输入预先构建的SQL语句性能分析模型,得到对应的性能分析结果。
从上述描述可知,本申请提供的SQL语句的性能分析方法及装置,能够通过静态动态相结合的方式,对待分析源代码中的SQL语句进行性能分析,有效地提升了软件开发快速迭代过程中,SQL语句的编写及优化效率,提升了软件产品开发过程中对SQL语句性能的智能分析能力。
在另一个实施方式中,SQL语句的性能分析方法装置可以与中央处理器9100分开配置,例如可以将数据复合传输装置SQL语句的性能分析方法装置配置为与中央处理器9100连接的芯片,通过中央处理器的控制来实现SQL语句的性能分析方法的功能。
如图13所示,该电子设备9600还可以包括:通讯模块9110、输入单元9120、音频处理器9130、显示器9160、电源9170。值得注意的是,电子设备9600也并不是必须要包括图13中所示的所有部件;此外,电子设备9600还可以包括图13中没有示出的部件,可以参考现有技术。
如图13所示,中央处理器9100有时也称为控制器或操作控件,可以包括微处理器或其他处理器装置和/或逻辑装置,该中央处理器9100接收输入并控制电子设备9600的各个部件的操作。
其中,存储器9140,例如可以是缓存器、闪存、硬驱、可移动介质、易失性存储器、非易失性存储器或其它合适装置中的一种或更多种。可储存上述与失败有关的信息,此外还可存储执行有关信息的程序。并且中央处理器9100可执行该存储器9140存储的该程序,以实现信息存储或处理等。
输入单元9120向中央处理器9100提供输入。该输入单元9120例如为按键或触摸输入装置。电源9170用于向电子设备9600提供电力。显示器9160用于进行图像和文字等显示对象的显示。该显示器例如可为LCD显示器,但并不限于此。
该存储器9140可以是固态存储器,例如,只读存储器(ROM)、随机存取存储器(RAM)、SIM卡等。还可以是这样的存储器,其即使在断电时也保存信息,可被选择性地擦除且设有更多数据,该存储器的示例有时被称为EPROM等。存储器9140还可以是某种其它类型的装置。存储器9140包括缓冲存储器9141(有时被称为缓冲器)。存储器9140可以包括应用/功能存储部9142,该应用/功能存储部9142用于存储应用程序和功能程序或用于通过中央处理器9100执行电子设备9600的操作的流程。
存储器9140还可以包括数据存储部9143,该数据存储部9143用于存储数据,例如联系人、数字数据、图片、声音和/或任何其他由电子设备使用的数据。存储器9140的驱动程序存储部9144可以包括电子设备的用于通讯功能和/或用于执行电子设备的其他功能(如消息传送应用、通讯录应用等)的各种驱动程序。
通讯模块9110即为经由天线9111发送和接收信号的发送机/接收机9110。通讯模块(发送机/接收机)9110耦合到中央处理器9100,以提供输入信号和接收输出信号,这可以和常规移动通讯终端的情况相同。
基于不同的通讯技术,在同一电子设备中,可以设置有多个通讯模块9110,如蜂窝网络模块、蓝牙模块和/或无线局域网模块等。通讯模块(发送机/接收机)9110还经由音频处理器9130耦合到扬声器9131和麦克风9132,以经由扬声器9131提供音频输出,并接收来自麦克风9132的音频输入,从而实现通常的电信功能。音频处理器9130可以包括任何合适的缓冲器、解码器、放大器等。另外,音频处理器9130还耦合到中央处理器9100,从而使得可以通过麦克风9132能够在本机上录音,且使得可以通过扬声器9131来播放本机上存储的声音。
本申请的实施例还提供能够实现上述实施例中的执行主体为服务器或客户端的SQL语句的性能分析方法中全部步骤的一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中的执行主体为服务器或客户端的SQL语句的性能分析方法的全部步骤,例如,所述处理器执行所述计算机程序时实现下述步骤:
S101:根据待分析源代码的特征属性解析所述待分析源代码,得到对应的待分析SQL语句;所述特征属性至少包括表数据量、语句数量及索引参数;
S102:根据所述特征属性确定所述待分析SQL语句的性能分析参数;所述性能分析参数包括静态分析参数及动态分析参数;
S103:将所述静态分析参数及动态分析参数输入预先构建的SQL语句性能分析模型,得到对应的性能分析结果。
从上述描述可知,本申请提供的SQL语句的性能分析方法及装置,能够通过静态动态相结合的方式,对待分析源代码中的SQL语句进行性能分析,有效地提升了软件开发快速迭代过程中,SQL语句的编写及优化效率,提升了软件产品开发过程中对SQL语句性能的智能分析能力。
本领域内的技术人员应明白,本发明的实施例可提供为方法、装置、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(装置)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种SQL语句的性能分析方法,其特征在于,包括:
根据待分析源代码的特征属性解析所述待分析源代码,得到对应的待分析SQL语句;
根据所述特征属性确定所述待分析SQL语句的性能分析参数;所述性能分析参数包括静态分析参数及动态分析参数;
将所述静态分析参数及动态分析参数输入预先构建的SQL语句性能分析模型,得到对应的性能分析结果。
2.根据权利要求1所述的SQL语句的性能分析方法,其特征在于,所述根据待分析源代码的特征属性解析所述待分析源代码,得到对应的待分析SQL语句,包括:
根据所述待分析源代码的特征属性生成对应的语法树;
根据所述语法树中的关键词确定所述待分析SQL语句。
3.根据权利要求1所述的SQL语句的性能分析方法,其特征在于,所述静态分析参数包括:表数据量均值、表性能关注度、SQL语句复杂度及SQL语句索引匹配度;所述根据所述特征属性确定所述待分析SQL语句的性能分析参数,包括:
根据所述表数据量计算所述表数据量均值;
根据所述表数据量计算所述表性能关注度;
根据所述语句数量计算所述SQL语句复杂度;
根据所述索引参数计算所述SQL语句索引匹配度。
4.根据权利要求1所述的SQL语句的性能分析方法,其特征在于,所述动态分析参数包括:有效执行时间及历史执行明细比率;所述根据所述特征属性确定所述待分析SQL语句的性能分析参数,包括:
从历史数据库中获取所述待分析SQL语句的动态执行信息;所述动态执行信息至少包括执行总耗时、计算处理耗时、输入输出耗时及锁等待耗时;
对所述待分析SQL语句进行全表扫描、全分区扫描、索引快速全扫描及索引跳跃扫描,得到所述有效执行时间及历史执行明细比率。
5.根据权利要求1所述的SQL语句的性能分析方法,其特征在于,所述将所述静态分析参数及动态分析参数输入预先构建的SQL语句性能分析模型,得到对应的性能分析结果,包括:
根据所述静态分析参数及对应的静态分析权重计算静态特征参数;
根据所述动态分析参数及对应的动态分析权重计算动态特征参数;
将所述静态特征参数及所述动态特征参数分别输入SQL语句性能分析模型,得到对应的性能分析结果;其中,所述SQL语句性能分析模型为将历史静态分析参数及历史动态分析参数输入神经网络回归模型进行训练得到。
6.根据权利要求1所述的SQL语句的性能分析方法,其特征在于,所述性能分析结果包括:静态分析结果及动态分析结果;在将所述静态分析参数及动态分析参数输入预先构建的SQL语句性能分析模型,得到对应的性能分析结果之后,还包括:
比较预设的静态性能分析阈值与所述静态分析结果,得到第一比较结果;
比较预设的动态性能分析阈值与所述动态分析结果,得到第二比较结果;
当所述第一比较结果及所述第二比较结果均为通过时,确定待分析SQL语句的性能为达标。
7.一种SQL语句的性能分析装置,其特征在于,包括:
SQL语句提取单元,用于根据待分析源代码的特征属性解析所述待分析源代码,得到对应的待分析SQL语句;所述特征属性至少包括表数据量、语句数量及索引参数;
分析参数确定单元,用于根据所述特征属性确定所述待分析SQL语句的性能分析参数;所述性能分析参数包括静态分析参数及动态分析参数;
性能分析单元,用于将所述静态分析参数及动态分析参数输入预先构建的SQL语句性能分析模型,得到对应的性能分析结果。
8.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至6任一项所述的SQL语句的性能分析方法的步骤。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至6任一项所述的SQL语句的性能分析方法的步骤。
10.一种计算机程序产品,包括计算机程序/指令,其特征在于,该计算机程序/指令被处理器执行时实现权利要求1至6任一项所述的SQL语句的性能分析方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211426900.3A CN115687050A (zh) | 2022-11-15 | 2022-11-15 | 一种sql语句的性能分析方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211426900.3A CN115687050A (zh) | 2022-11-15 | 2022-11-15 | 一种sql语句的性能分析方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115687050A true CN115687050A (zh) | 2023-02-03 |
Family
ID=85051650
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211426900.3A Pending CN115687050A (zh) | 2022-11-15 | 2022-11-15 | 一种sql语句的性能分析方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115687050A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115857838A (zh) * | 2023-03-01 | 2023-03-28 | 天翼云科技有限公司 | 存储资源的分析方法、装置、电子设备及存储介质 |
CN118195563A (zh) * | 2024-05-20 | 2024-06-14 | 成都数联云算科技有限公司 | 一种编程人员自动面试系统 |
-
2022
- 2022-11-15 CN CN202211426900.3A patent/CN115687050A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115857838A (zh) * | 2023-03-01 | 2023-03-28 | 天翼云科技有限公司 | 存储资源的分析方法、装置、电子设备及存储介质 |
CN115857838B (zh) * | 2023-03-01 | 2023-06-23 | 天翼云科技有限公司 | 存储资源的分析方法、装置、电子设备及存储介质 |
CN118195563A (zh) * | 2024-05-20 | 2024-06-14 | 成都数联云算科技有限公司 | 一种编程人员自动面试系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115687050A (zh) | 一种sql语句的性能分析方法及装置 | |
CN110795455A (zh) | 依赖关系解析方法、电子装置、计算机设备及可读存储介质 | |
CN108959279B (zh) | 数据处理方法、数据处理装置、可读介质及电子设备 | |
CN110427188A (zh) | 单测断言程序的配置方法、装置、设备及存储介质 | |
CN111382182A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN111814458A (zh) | 规则引擎系统优化方法、装置、计算机设备及存储介质 | |
CN117271481B (zh) | 数据库自动优化方法及设备 | |
CN114385694A (zh) | 一种数据加工处理方法、装置、计算机设备及存储介质 | |
CN112749238A (zh) | 搜索排序方法、装置、电子设备以及计算机可读存储介质 | |
CN106843822B (zh) | 一种执行代码生成方法及设备 | |
CN113419957A (zh) | 基于规则的大数据离线批处理性能容量扫描方法及装置 | |
CN107273293B (zh) | 大数据系统性能测试方法、装置及电子设备 | |
CN115357625A (zh) | 结构化数据比对方法、装置、电子设备及存储介质 | |
CN114968917A (zh) | 一种文件数据快速导入方法及装置 | |
CN111125073A (zh) | 一种大数据平台数据质量校验的方法、装置及系统 | |
CN114285896A (zh) | 信息推送方法、装置、设备、存储介质及程序产品 | |
CN111652281A (zh) | 信息数据的分类方法、装置及可读存储介质 | |
CN111161047A (zh) | 银行业务数据处理、查询方法及装置 | |
CN115168577B (zh) | 模型更新方法、装置、电子设备及存储介质 | |
CN116501764B (zh) | 一种基于生成式预训练模型的自动化sql优化方法 | |
CN113377677B (zh) | 一种单元测试方法及装置 | |
CN112597149B (zh) | 数据表相似度确定方法及装置 | |
CN112307050B (zh) | 一种重复关联计算的识别方法、装置及计算机系统 | |
CN113190236B (zh) | Hql脚本校验方法及装置 | |
CN112905491B (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 |