CN113064597B - 一种冗余代码的识别方法、装置和设备 - Google Patents
一种冗余代码的识别方法、装置和设备 Download PDFInfo
- Publication number
- CN113064597B CN113064597B CN202110439936.4A CN202110439936A CN113064597B CN 113064597 B CN113064597 B CN 113064597B CN 202110439936 A CN202110439936 A CN 202110439936A CN 113064597 B CN113064597 B CN 113064597B
- Authority
- CN
- China
- Prior art keywords
- execution plan
- information set
- fragments
- redundant
- stock
- 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 52
- 239000012634 fragment Substances 0.000 claims abstract description 93
- 238000004519 manufacturing process Methods 0.000 claims abstract description 56
- 238000012423 maintenance Methods 0.000 claims abstract description 54
- 239000013598 vector Substances 0.000 claims abstract description 44
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 26
- 238000012545 processing Methods 0.000 claims description 24
- 230000002776 aggregation Effects 0.000 claims description 9
- 238000004220 aggregation Methods 0.000 claims description 9
- 238000003860 storage Methods 0.000 claims description 7
- 238000007493 shaping process Methods 0.000 claims description 3
- 238000010606 normalization Methods 0.000 claims description 2
- 238000007781 pre-processing Methods 0.000 claims 1
- 238000012163 sequencing technique Methods 0.000 claims 1
- 230000008569 process Effects 0.000 abstract description 9
- 238000000605 extraction Methods 0.000 description 10
- 238000011161 development Methods 0.000 description 7
- 230000018109 developmental process Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 238000004590 computer program Methods 0.000 description 4
- 230000010354 integration Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000011218 segmentation Effects 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 238000005192 partition Methods 0.000 description 3
- 238000000275 quality assurance Methods 0.000 description 3
- 238000007619 statistical method Methods 0.000 description 3
- 238000012935 Averaging Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000003064 k means clustering Methods 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 230000001364 causal effect Effects 0.000 description 1
- 239000007795 chemical reaction product Substances 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000007418 data mining Methods 0.000 description 1
- 238000013499 data model Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000006386 memory function Effects 0.000 description 1
- 238000005065 mining Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4434—Reducing the memory space required by the program code
- G06F8/4435—Detection or removal of dead or redundant code
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
Abstract
本说明书实施例提供了一种冗余代码的识别方法、装置和设备,其中,该方法包括:获取目标源代码的执行计划信息集;确定所述执行计划信息集中各个执行计划片段的目标特征向量;基于所述各个执行计划片段的目标特征向量,利用聚类算法对所述各个执行计划片段进行相似度匹配,得到至少一组匹配成功的相似执行计划片段;获取所述相似执行计划片段的生产运维信息;根据所述生产运维信息,确定所述至少一组相似执行计划片段中的待调整冗余执行计划片段。在本说明书实施例中,在冗余代码识别过程中无需依赖手动操作,可以高效地实现大数据平台冗余高消耗逻辑的识别,有效提升了大数据平台自我调优的能力。
Description
技术领域
本说明书实施例涉及大数据技术领域,特别涉及一种冗余代码的识别方法、装置和设备。
背景技术
随着数据的应用场景越来越多,各大企业也纷纷投入大数据平台的建设,然而在业务发展前期,为了快速实现业务,烟囱式的开发模式导致大数据平台上存在大量重复逻辑的代码,大大浪费了大数据平台的计算资源,如何将这些冗余重复又高消耗的逻辑识别出来,成为阻碍大数据平台发展的瓶颈问题。
现有技术中由于各个数据应用的割裂,需要运维人员重新梳理业务数据、重新设计数据模型、搭建数据中台、重写现有逻辑,使得项目周期长,无法及时地识别出冗余代码,以便对大数据平台进行调优。
针对上述问题,目前尚未提出有效的解决方案。
发明内容
本说明书实施例提供了一种冗余代码的识别方法、装置和设备,以解决现有技术中无法及时地识别出冗余代码以对大数据平台进行调优的问题。
本说明书实施例提供了一种冗余代码的识别方法,包括:获取目标源代码的执行计划信息集;其中,所述执行计划信息集中包含所述目标源代码中各个结构化查询语句对应的至少一个执行计划片段;确定所述执行计划信息集中各个执行计划片段的目标特征向量;基于所述各个执行计划片段的目标特征向量,利用聚类算法对所述各个执行计划片段进行相似度匹配,得到至少一组匹配成功的相似执行计划片段;获取所述相似执行计划片段的生产运维信息;根据所述生产运维信息,确定所述至少一组相似执行计划片段中的待调整冗余执行计划片段。
本说明书实施例还提供了一种冗余代码的识别装置,包括:第一获取模块,用于获取目标源代码的执行计划信息集;其中,所述执行计划信息集中包含所述目标源代码中各个结构化查询语句对应的至少一个执行计划片段;第一确定模块,用于确定所述执行计划信息集中各个执行计划片段的目标特征向量;匹配模块,用于基于所述各个执行计划片段的目标特征向量,利用聚类算法对所述各个执行计划片段进行相似度匹配,得到至少一组匹配成功的相似执行计划片段;第二获取模块,用于获取所述相似执行计划片段的生产运维信息;第二确定模块,用于根据所述生产运维信息,确定所述至少一组相似执行计划片段中的待调整冗余执行计划片段。
本说明书实施例还提供了一种冗余代码的识别设备,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现所述冗余代码的识别方法的步骤。
本说明书实施例还提供了一种计算机可读存储介质,其上存储有计算机指令,所述指令被执行时实现所述冗余代码的识别方法的步骤。
本说明书实施例提供了一种冗余代码的识别方法,可以通过获取目标源代码的执行计划信息集,确定出执行计划信息集中各个执行计划片段的目标特征向量,其中,执行计划信息集中可以包含目标源代码中各个结构化查询语句对应的至少一个执行计划片段。可以基于确定的各个执行计划片段的目标特征向量,利用聚类算法对各个执行计划片段进行相似度匹配,得到至少一组匹配成功的相似执行计划片段,从而可以准确地得到至少一组疑似冗余的执行计划片段。进一步的,由于低消耗的代码占用资源较少可以保留,为了提高识别出的冗余代码的有效性,可以根据获取的各个相似执行计划片段的生产运维信息,确定出疑似冗余的执行计划片段中的高消耗冗余执行计划片段,并将高消耗冗余执行计划片段作为待调整冗余执行计划片段。在冗余代码识别过程中无需依赖手动操作,可以实现大数据平台冗余高消耗逻辑的自动识别,有效提升了大数据平台自我调优的能力。
附图说明
此处所说明的附图用来提供对本说明书实施例的进一步理解,构成本说明书实施例的一部分,并不构成对本说明书实施例的限定。在附图中:
图1是根据本说明书实施例提供的冗余代码的识别方法的步骤示意图;
图2是根据本说明书实施例提供的按STAGE分割的结果以及按树形结构进行解析的结果的示意图;
图3是根据本说明书实施例提供的冗余代码的识别装置的结构示意图;
图4是根据本说明书实施例提供的冗余代码的识别设备的结构示意图。
具体实施方式
下面将参考若干示例性实施方式来描述本说明书实施例的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本说明书实施例,而并非以任何方式限制本说明书实施例的范围。相反,提供这些实施方式是为了使本说明书实施例公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
本领域的技术人员知道,本说明书实施例的实施方式可以实现为一种系统、装置设备、方法或计算机程序产品。因此,本说明书实施例公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
虽然下文描述流程包括以特定顺序出现的多个操作,但是应该清楚了解,这些过程可以包括更多或更少的操作,这些操作可以顺序执行或并行执行(例如使用并行处理器或多线程环境)。
请参阅图1,本实施方式可以提供一种冗余代码的识别方法。该冗余代码的识别方法可以用于高效、准确地识别出冗余代码。上述冗余代码的识别方法可以包括以下步骤。
S101:获取目标源代码的执行计划信息集;其中,执行计划信息集中包含目标源代码中各个结构化查询语句对应的至少一个执行计划片段。
在本实施方式中,可以获取目标源代码的执行计划信息集,上述执行计划信息集中可以包含目标源代码中各个结构化查询语句对应的至少一个执行计划片段。其中,上述目标源代码可以为待识别冗余代码的源代码,可以根据实际需求确定。
在本实施方式中,上述目标源代码可以为多个源代码文件,在一些实施例中,上述目标源代码可以包括不同应用的最新版本的源代码。源代码文件通常存储在云端代码库中,可以通过工具拉取源代码文件,并将该过程通过DevOps体系配置持续集成任务,持续地从代码库中获取源代码文件用于后续的冗余识别处理。其中,上述DevOps是一组过程、方法与系统的统称,用于促进开发、技术运营和质量保障部门之间的沟通、协作与整合。
在本实施方式中,上述目标源代码可以是利用结构化查询语言(SQL,StructuredQuery Language)编写的,上述结构化查询语言是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。由于SQL是一种“描述型”语言,与“过程型”语言不同,用户在使用SQL时只描述了“要做什么”,而不是“怎么做”,因此,可以为目标源代码中的每个结构化查询语句生成一个执行计划,执行计划可以用于描述结构化查询语句的具体步骤。
在本实施方式中,由于同一结构化查询语句的执行计划具有不同阶段(STAGE),因此,可以按照STAGE将各个执行计划划分为多个的执行计划片断,并且同一结构化查询语句的执行计划的各个STAGE之间存在相互依赖关系。
在本实施方式中,上述执行计划信息集中可以包含各个执行计划片段的相关信息,例如:关键处理步骤、步骤间的依赖关系、关键处理步骤得到名值对等。上述执行计划信息集中的各个执行计划的相关信息可以以结构化形式存储,例如:树形结构等,具体的可以根据实际情况确定,本说明书实施例对此不作限定。
S102:确定执行计划信息集中各个执行计划片段的目标特征向量。
在本实施方式中,可以确定上述执行计划信息集中各个执行计划片段的目标特征向量,其中,上述目标特征向量可以用于表征执行计划片段的特征信息。
在本实施方式中,上述目标特征向量中可以包含多个特征数据,特征数据可以包括以下至少之一:执行计划层级、表名、谓词、聚合算法、排序方式、投影方式、文本处理特征、关联方式等。当然,可以理解的是上述特征数据仅为一种示例,在一些实施例中目标特征向量中还可以包含更多或者更少的特征数据,例如,还可以包含:聚合字段、分区列等。具体的可以根据实际情况确定,本说明书实施例对此不作限定。
S103:基于各个执行计划片段的目标特征向量,利用聚类算法对各个执行计划片段进行相似度匹配,得到至少一组匹配成功的相似执行计划片段。
在本实施方式中,可以基于上述各个执行计划片段的目标特征向量,利用聚类算法对各个执行计划片段进行相似度匹配,得到至少一组匹配成功的相似执行计划片段。上述聚类算法研究(样品或指标)分类问题的一种统计分析方法,同时也是数据挖掘的一个重要算法,聚类分析以相似性为基础,在一个聚类中的模式之间比不在同一聚类中的模式之间具有更多的相似性。
在本实施方式中,可以利用聚类算法进行建模,并将各个执行计划片段的目标特征向量作为建立的模型的输入数据,从而进行相似度匹配。模型的输出结果可以为至少一组相似度匹配成功的相似执行计划片段,每组相似执行计划片段中可以包含至少两个执行计划片段,可以将每组相似执行计划片段中的执行计划片段视为疑似冗余的执行计划片段。
在本实施方式中,上述聚类算法可以为一下任意之一:K-MEANS聚类算法、均值偏移聚类算法、DBSCAN(Density-Based Spatial Clustering of Applications withNoise)聚类算法、使用高斯混合模型(GMM)的期望最大化(EM)聚类、层次聚类算法等。具体的可以根据实际情况确定,本说明书实施例对此不作限定。
在本实施方式中,在利用K-MEANS聚类算法建模时,可以将训练数据集中的多个特征向量数据作为对象集传入到K-MEANS算法中,输入指定聚类类数N,并在对象集中随机选取N个对象作为初始聚类中心。将聚类中心收敛误差容限设定为迭代终止条件,通过以每一类的平均向量作为新的聚类中心来不断训练,直到满足终止条件,得到最终的模型,进而可以利用该模型进行相似度匹配。
S104:获取相似执行计划片段的生产运维信息。
在本实施方式中,由于相似度匹配成功的执行计划片段不一定是需要调整的冗余代码,因此,可以获取相似执行计划片段的生产运维信息,以评估相似执行计划片段的资源消耗。如果资源消耗量较低则无需进行调整,可以保留;如资源消耗量较大则为高消耗的疑似冗余代码,则可能需要进行调整。
在本实施方式中,上述生产运维信息可以包括:SQL语句运行时长、运行时CPU(Central Processing Unit,中央处理器)占用、运行时内存占用、运行时磁盘空间占用等资源消耗情况。当然,生产运维信息不限于上述举例,所属领域技术人员在本说明书实施例技术精髓的启示下,还可能做出其它变更,但只要其实现的功能和效果与本说明书实施例相同或相似,均应涵盖于本说明书实施例保护范围内。
在本实施方式中,获取相似执行计划片段的生产运维信息的方式可以包括:从预设数据库中拉取得到,或者,结合语料库使用规则抽取方法从文本描述中挖掘得到。当然可以理解的是,还可以采用其它可能的方式获取上述相似执行计划片段的生产运维信息,例如,接收用户向系统测试装置中输入的相似执行计划片段的生产运维信息,具体的可以根据实际情况确定,本说明书实施例对此不作限定。
S105:根据生产运维信息,确定至少一组相似执行计划片段中的待调整冗余执行计划片段。
在本实施方式中,可以根据上述生产运维信息,确定至少一组相似执行计划片段中的待调整冗余执行计划片段,从而可以准确地筛选出高消耗的冗余代码,进而可以对高消耗的冗余代码进行调整,以优化目标源代码。
在本实施方式中,可以根据上述待调整冗余执行计划片段确定出目标源代码中对应的结构化查询语句。为了使运维人员更加直观地看到冗余代码的识别结果,可以将待调整冗余执行计划片段对应的结构化查询语句、根据生产运维信息确定的资源消耗情况等信息进行关联加工处理,并在运维人员对应的界面中展示。当然可以理解的是,向运维人员展示的信息中还可以包含其它数据,例如:待调整冗余执行计划片段在目标源代码中的位置、执行计划代价估算信息等,具体的可以根据实际情况确定,本说明书实施例对此不作限定。
从以上的描述中,可以看出,本说明书实施例实现了如下技术效果:可以通过获取目标源代码的执行计划信息集,确定出执行计划信息集中各个执行计划片段的目标特征向量,其中,执行计划信息集中可以包含目标源代码中各个结构化查询语句对应的至少一个执行计划片段。可以基于确定的各个执行计划片段的目标特征向量,利用聚类算法对各个执行计划片段进行相似度匹配,得到至少一组匹配成功的相似执行计划片段,从而可以准确地得到至少一组疑似冗余的执行计划片段。进一步的,由于低消耗的代码占用资源较少可以保留,为了提高识别出的冗余代码的有效性,可以根据获取的各个相似执行计划片段的生产运维信息,确定出疑似冗余的执行计划片段中的高消耗冗余执行计划片段,并将高消耗冗余执行计划片段作为待调整冗余执行计划片段。在冗余代码识别过程中无需依赖手动操作,可以实现大数据平台冗余高消耗逻辑的自动识别,有效提升了大数据平台自我调优的能力。
在一个实施方式中,获取目标源代码的执行计划信息集,可以包括:获取目标源代码,并确定目标源代码对应的结构化查询语句信息集。可以获取目标源代码对应的数据库表统计信息,并根据数据库表统计信息和结构化查询语句信息集,生成各个结构化查询语句的执行计划。进一步的,可以将各个结构化查询语句的执行计划按STAGE分割,得到多个执行计划片段。并将多个执行计划片段按照树形结构进行解析,得到目标源代码的执行计划信息集。
在本实施方式中,源代码文件通常存储在云端代码库中,可以通过工具拉取源代码文件,并将该过程通过DevOps体系配置持续集成任务,持续地从代码库中获取源代码文件用于后续的冗余识别处理。其中,上述DevOps是一组过程、方法与系统的统称,用于促进开发、技术运营和质量保障(QA)部门之间的沟通、协作与整合。
在本实施方式中,可以从目标源代码中解析出结构化查询语句,从而得到目标源代码对应的结构化查询语句信息集。其中,上述结构化查询语句信息集中可以包含结构化查询语句的属性、结构化查询语句在目标源代码中的路径、原结构化查询语句、所属的作业、作业组和应用。上述结构化查询语句的属性的值可以包括:增量属性和存量属性,增量属性表示为当期版本新增代码,存量属性为历史版本代码,已在生产环境上运行。
在本实施方式中,为了生成各个结构化查询语句的执行计划,可以获取目标源代码对应的数据库表统计信息,数据库表统计信息主要描述结构化查询语句涉及的数据库中表的大小、规模、数据分布状况等一类信息。
在本实施方式中,可以利用生产运维提供的接口获取数据库表统计信息,可以将数据库表统计信息按照预设时间间隔导入研发环境,同时通过研发环境的执行计划生成接口可以生成得到类生产的执行计划文本,即各个结构化查询语句的执行计划。为了将执行计划进行结构化存储,可以对执行计划进行片断分割、关键字特征提取等操作。上述处理过程可以通过DevOps框架配置持续集成任务,持续对结构化查询语句进行处理,进而可以将执行计划片段以结构化形式存储至执行计划信息集。
在本实施方式中,可以将生成的各个结构化查询语句的执行计划按STAGE分割,对每个STAGE按树形结构进行解析存储。STAGE表示执行计划的不同阶段,按STAGE可把执行计划划分为不同的执行计划片断,且各个STAGE之间存在相互依赖关系。
在本实施方式中,可以针对分割后的每个STAGE按树形结构进行解析,并将解析得到的关键处理步骤及步骤间的依赖关系以树形结构存储至执行计划信息集。关键处理步骤可以包括:MapOperator(Map操作)、TableScan(表扫描操作)、FilterOperator(过滤操作)、ReduceOutputOperator(输出到Reduce)、SelectOperator(列投影操作)、GroupByOperator(分组聚合)、ReduceOperator(Reduce操作)、JoinOperator(关联操作)、FileOutputOperator(文件输出操作)等。其中,按STAGE分割的结果以及按树形结构进行解析的结果可以如图2中所示。
在一个实施方式中,确定目标源代码对应的结构化查询语句信息集,可以包括:对目标源代码进行分割整形,得到多个结构化查询语句。可以标记多个结构化查询语句的属性;其中,属性可以包括:增量属性和存量属性。进一步的,可以基于多个结构化查询语句的属性,得到结构化查询语句信息集;其中,结构化查询语句信息集中包含各个结构化查询语句的属性和特征信息,特征信息包括:结构化查询语句在目标源代码中的路径、原结构化查询语句、所属的作业、作业组和应用。
在本实施方式中,可以采用代码分割整形器对目标源代码进行分割整形,可以使用分隔符对源代码进行分割,得到多个独立的结构化查询语句。进一步的,可以使用正则匹配替换等方式对源代码进行整形,使之成为可执行的结构化查询语句。
在本实施方式中,可以对分割整形后的结构化查询语句进行增存量属性标记,可以通过比对不同版本的源代码文件,识别出相关变动行,如果结构化查询语句所处行为变动行,则标记为增量语句,否则标记为存量语句。
在本实施方式中,可以将结构化查询语句在目标源代码中的路径、原结构化查询语句、所属的作业、作业组和应用等特征信息,一并作为结构化查询语句的附属信息存储在结构化查询语句信息集中。
在一个实施方式中,确定执行计划信息集中各个执行计划片段的目标特征向量,可以包括:利用规则匹配法提取各个执行计划片段的特征数据,得到各个执行计划片段的特征信息集。可以对各个执行计划片段的特征信息集进行预处理,得到各个执行计划片段的初始特征向量。进一步的,可以对各个执行计划片段的初始特征向量进行归一化处理,得到各个执行计划片段的目标特征向量。
在本实施方式中,可以利用规则匹配法提取对执行计划片段的关键字特征进行提取,并以结构化形式存储。在一些实施例中,执行计划信息集中各个STAGE对应的树形结构的各个节点可以以名值对的方式记录关键字特征,例如:TableScan(表扫描操作)可以对其进行表名、统计信息的特征提取,FillterOperator(过滤操作)可以对其进行谓词、统计信息的特征提取,GroupByOperator(分组聚合)可以对其进行聚合算法、聚合字段、聚合方式、统计信息的特征提取,ReduceOutputOperator(输出到Reduce)可以对其进行排序方式、名值对表达式、分区列、统计信息的特征提取,SelectOperator(列投影操作)可以对其进行投影列、输出列、统计信息的特征提取,FileOutputOperator(文件输出操作)可以对其进行压缩标志、输入格式、输出格式、统计信息的特征提取,JoinOperator(关联操作)可以对其进行关联模式、关联字段的特征提取,从而得到各个执行计划片段的初始特征数据集。
在本实施方式中,可以对各个执行计划片段的初始特征数据集进行预处理,预处理可以包括统计分析、去除冗余特征等。例如:可以通过统计分析得到执行计划层级、根据投影列确定投影方式等。具体的可以根据实际情况确定,本说明书实施例对此不作限定。可以根据预处理的特征数据生成初始特征向量,进一步的,为了去除量纲的影响,可以对各个执行计划片段的初始特征向量进行归一化处理,得到各个执行计划片段的目标特征向量,从而可以将各个执行计划片段的特征数据以结构化形式存储。
在一个实施方式中,在得到至少一组匹配成功的相似执行计划片段之后,还可以包括:将至少一组匹配成功的相似执行计划片段加入第一冗余信息集中,并确定第一冗余信息集中每组相似执行计划片段的代价估算均值。进一步的,可以将代价估算均值小于等于第一预设阈值的各组相似执行计划片段从第一冗余信息集中移除,得到第二冗余信息集,并根据执行计划片段对应的结构化查询语句的属性对第二冗余信息集中的各个执行计划片段进行分类,得到增量冗余信息集和存量冗余信息集。
在本实施方式中,可以通过对第一冗余信息集中各个相似执行计划片段的各个关键处理步骤的代价值进行加权平均得到单个执行计划片段的代价估算值,再通过对相似执行计划片断组进行算术平均值得到每组相似执行计划片段的代价估算均值,将代价估算均值大于第一预设阈值的相似执行计划片断组保留,代价估算均值小于等于第一预设阈值的各组相似执行计划片段无需进行调整,可以从第一冗余信息集中移除。
在本实施方式中,每个执行计划片段中可以包含多个关键处理步骤,每个关键处理步骤都有对应的代价值,代价值可以为无量纲的大于0的数值,例如:2、3等。上述代价值可以是根据结构化查询语句的CUP占用情况、调用频率等确定的,具体的可以根据实际情况确定,本说明书对此不作限定。
在本实施方式中,可以为每个关键处理步骤设置权重,在计算单个执行计划片段的代价估算值时,可以结合每个关键处理步骤的权重和每个关键处理步骤都有对应的代价值,进行加权平均。在一些实施例中,也可以不考虑关键处理步骤的权重,直接对每个关键处理步骤都有对应的代价值进行算数平均,得到单个执行计划片段的代价估算值。具体的可以根据实际情况确定,本说明书对此不作限定。
在本实施方式中,由于增量语句未投入生产,没有生产运维信息的记录,因此,可以根据执行计划片段对应的结构化查询语句的增存量属性对第二冗余信息集中的各组相似执行计划片段分别进行分类,得到每组相似执行计划片段对应的增量冗余信息集和存量冗余信息集。
在一个实施方式中,根据生产运维信息,确定至少一组相似执行计划片段中的待调整冗余执行计划片段,可以包括:在确定一组相似执行计划片段对应的增量冗余信息集为空并且存量冗余信息集非空的情况下,根据存量冗余信息集中各个执行计划片段的生产运维信息,确定存量冗余信息集的平均资源消耗。在平均资源消耗大于第二预设阈值的情况下,可以将存量冗余信息集中的执行计划片段加入待调整冗余信息集中。在平均资源消耗小于等于第二预设阈值的情况下,可以将存量冗余信息集中的执行计划片段移除。
在本实施方式中,可以对划分的增量冗余信息集和存量冗余信息集进行判空处理,可以分别对增量组为空且存量组不为空、增存量组均不为空以及增量组不为空且存量组为空的三种情况进行分类处理。
在本实施方式中,可以在确定一组相似执行计划片段对应的增量冗余信息集为空并且存量冗余信息集非空的情况下,可以先获取存量冗余信息集中各个执行计划片段的生产运维信息,并确定存量冗余信息集的平均资源消耗。上述生产运维信息中可以包含多个生产运维指标,例如:SQL语句运行时长、运行时CPU占用、运行时内存占用、运行时磁盘空间占用等。当然,生产运维指标不限于上述举例,所属领域技术人员在本说明书实施例技术精髓的启示下,还可能做出其它变更,但只要其实现的功能和效果与本说明书实施例相同或相似,均应涵盖于本说明书实施例保护范围内。
在本实施方式中,每个生产运维指标均可以有一个对应的第二预设阈值,每个生产运维指标的第二预设阈值可以是不同的,第二预设阈值可以用于衡量资源消耗的高低。在存量冗余信息集中包含多个执行计划片段的情况下,可以分别计算各个生产运维指标的平均值,将各个生产运维指标的平均值作为存量冗余信息集的平均资源消耗。进一步的,可以将计算得到的各个生产运维指标的平均值分别与每个生产运维指标的第二预设阈值进行比较,从而确定资源消耗的高低。
在本实施方式中,如果存量冗余信息集中仅包含一个执行计划片段,则可以直接将该执行计划片段的各个生成运维指标的值与每个生产运维指标的第二预设阈值进行比较,从而确定资源消耗的高低。
在本实施方式中,可以在有一个生产运维指标大于第二预设阈值的情况下就认为资源消耗高,从而将该存量冗余信息集中的执行计划片段加入待调整冗余信息集中。当然,资源消耗高低的判断方式不限于上述举例,也可以在一半以上的生产运维指标大于第二预设阈值的情况下认为资源消耗高,所属领域技术人员在本说明书实施例技术精髓的启示下,还可能做出其它变更,但只要其实现的功能和效果与本说明书实施例相同或相似,均应涵盖于本说明书实施例保护范围内。
在一个实施方式中,在得到增量冗余信息集和存量冗余信息集之后,还可以包括:在确定增量冗余信息集非空并且存量冗余信息集非空的情况下,根据存量冗余信息集中各个执行计划片段的生产运维信息,确定存量冗余信息集的平均资源消耗。在平均资源消耗大于第二预设阈值的情况下,可以将存量冗余信息集和增量冗余信息集中的执行计划片段加入待调整冗余信息集中;其中,待调整冗余信息集中包含至少一个待调整冗余执行计划片段。在平均资源消耗小于等于第二预设阈值的情况下,可以将存量冗余信息集和增量冗余信息集中的执行计划片段移除。在确定增量冗余信息集非空并且存量冗余信息集为空的情况下,可以将增量冗余信息集中的执行计划片段移除。
在本实施方式中,由于增量语句未投入生产,没有生产运维信息的记录,因此,在增量冗余信息集非空的情况下,需要先确定存量冗余信息集的资源消耗情况,如果确定存量冗余信息集的资源消耗高(平均资源消耗大于第二预设阈值),可以将该存量冗余信息集和与其对应的增量冗余信息集中的执行计划片段加入待调整冗余信息集中。
在本实施方式中,如果确定存量冗余信息集的资源消耗低(平均资源消耗小于等于预设阈值),则说明存量冗余信息集中的执行计划片段资源消耗低无需进行调整,对应的增量冗余信息集中的执行计划片段也无需进行调整,因此,可以将存量冗余信息集和增量冗余信息集中的执行计划片段均移除。
在本实施方式中,如果确定增量冗余信息集非空并且存量冗余信息集为空,由于增量语句未投入生产,没有生产运维信息的记录,因此,可以直接将增量冗余信息集中的执行计划片段移除,暂不进行处理。
在一个实施方式中,上述目标特征向量中可以包含多个特征数据,特征数据可以包括以下至少之一:执行计划层级、表名、谓词、聚合算法、排序方式、投影方式、文本处理特征、关联方式等。当然,可以理解的是上述特征数据仅为一种示例,在一些实施例中目标特征向量中还可以包含更多或者更少的特征数据,例如,还可以包含:聚合字段、分区列等。具体的可以根据实际情况确定,本说明书实施例对此不作限定。
根据上述描述可知,本说明书实施例中的冗余代码的识别方法2与目前的冗余代码识别方法1的对比结果可以如表1中所示。
表1
基于同一发明构思,本说明书实施例中还提供了一种冗余代码的识别装置,如下面的实施例。由于冗余代码的识别装置解决问题的原理与冗余代码的识别方法相似,因此冗余代码的识别装置的实施可以参见冗余代码的识别方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。图3是本说明书实施例的冗余代码的识别装置的一种结构框图,如图3所示,可以包括:第一获取模块301、第一确定模块302、匹配模块303、第二获取模块304、第二确定模块305,下面对该结构进行说明。
第一获取模块301,可以用于获取目标源代码的执行计划信息集;其中,执行计划信息集中包含目标源代码中各个结构化查询语句对应的至少一个执行计划片段;
第一确定模块302,可以用于确定执行计划信息集中各个执行计划片段的目标特征向量;
匹配模块303,可以用于基于各个执行计划片段的目标特征向量,利用聚类算法对各个执行计划片段进行相似度匹配,得到至少一组匹配成功的相似执行计划片段;
第二获取模块304,可以用于获取相似执行计划片段的生产运维信息;
第二确定模块305,可以用于根据生产运维信息,确定至少一组相似执行计划片段中的待调整冗余执行计划片段。
本说明书实施例实施方式还提供了一种电子设备,具体可以参阅图4所示的基于本说明书实施例提供的冗余代码的识别方法的电子设备组成结构示意图,电子设备具体可以包括输入设备41、处理器42、存储器43。其中,输入设备41具体可以用于输入目标源代码。处理器42具体可以用于获取目标源代码的执行计划信息集;其中,执行计划信息集中包含目标源代码中各个结构化查询语句对应的至少一个执行计划片段;确定执行计划信息集中各个执行计划片段的目标特征向量;基于各个执行计划片段的目标特征向量,利用聚类算法对各个执行计划片段进行相似度匹配,得到至少一组匹配成功的相似执行计划片段;获取相似执行计划片段的生产运维信息;根据生产运维信息,确定至少一组相似执行计划片段中的待调整冗余执行计划片段。存储器43具体可以用于存储生产运维信息、待调整冗余执行计划片段等数据。
在本实施方式中,输入设备具体可以是用户和计算机系统之间进行信息交换的主要装置之一。输入设备可以包括键盘、鼠标、摄像头、扫描仪、光笔、手写输入板、语音输入装置等;输入设备用于把原始数据和处理这些数的程序输入到计算机中。输入设备还可以获取接收其他模块、单元、设备传输过来的数据。处理器可以按任何适当的方式实现。例如,处理器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(ApplicationSpecific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式等等。存储器具体可以是现代信息技术中用于保存信息的记忆设备。存储器可以包括多个层次,在数字系统中,只要能保存二进制数据的都可以是存储器;在集成电路中,一个没有实物形式的具有存储功能的电路也叫存储器,如RAM、FIFO等;在系统中,具有实物形式的存储设备也叫存储器,如内存条、TF卡等。
在本实施方式中,该电子设备具体实现的功能和效果,可以与其它实施方式对照解释,在此不再赘述。
本说明书实施例实施方式中还提供了一种基于冗余代码的识别方法的计算机存储介质,计算机存储介质存储有计算机程序指令,在计算机程序指令被执行时可以实现:获取目标源代码的执行计划信息集;其中,执行计划信息集中包含目标源代码中各个结构化查询语句对应的至少一个执行计划片段;确定执行计划信息集中各个执行计划片段的目标特征向量;基于各个执行计划片段的目标特征向量,利用聚类算法对各个执行计划片段进行相似度匹配,得到至少一组匹配成功的相似执行计划片段;获取相似执行计划片段的生产运维信息;根据生产运维信息,确定至少一组相似执行计划片段中的待调整冗余执行计划片段。
在本实施方式中,上述存储介质包括但不限于随机存取存储器(Random AccessMemory,RAM)、只读存储器(Read-Only Memory,ROM)、缓存(Cache)、硬盘(Hard DiskDrive,HDD)或者存储卡(Memory Card)。所述存储器可以用于存储计算机程序指令。网络通信单元可以是依照通信协议规定的标准设置的,用于进行网络连接通信的接口。
在本实施方式中,该计算机存储介质存储的程序指令具体实现的功能和效果,可以与其它实施方式对照解释,在此不再赘述。
显然,本领域的技术人员应该明白,上述的本说明书实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本说明书实施例不限制于任何特定的硬件和软件结合。
虽然本说明书实施例提供了如上述实施例或流程图所述的方法操作步骤,但基于常规或者无需创造性的劳动在所述方法中可以包括更多或者更少的操作步骤。在逻辑性上不存在必要因果关系的步骤中,这些步骤的执行顺序不限于本说明书实施例提供的执行顺序。所述的方法的在实际中的装置或终端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。
应该理解,以上描述是为了进行图示说明而不是为了进行限制。通过阅读上述描述,在所提供的示例之外的许多实施方式和许多应用对本领域技术人员来说都将是显而易见的。因此,本说明书实施例的范围不应该参照上述描述来确定,而是应该参照前述权利要求以及这些权利要求所拥有的等价物的全部范围来确定。
以上所述仅为本说明书实施例的优选实施例而已,并不用于限制本说明书实施例,对于本领域的技术人员来说,本说明书实施例可以有各种更改和变化。凡在本说明书实施例的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本说明书实施例的保护范围之内。
Claims (9)
1.一种冗余代码的识别方法,其特征在于,包括:
获取目标源代码的执行计划信息集;其中,所述执行计划信息集中包含所述目标源代码中各个结构化查询语句对应的至少一个执行计划片段;
确定所述执行计划信息集中各个执行计划片段的目标特征向量;
基于所述各个执行计划片段的目标特征向量,利用聚类算法对所述各个执行计划片段进行相似度匹配,得到至少一组匹配成功的相似执行计划片段;
将所述至少一组匹配成功的相似执行计划片段加入第一冗余信息集中;确定所述第一冗余信息集中每组相似执行计划片段的代价估算均值;将代价估算均值小于等于第一预设阈值的各组相似执行计划片段从所述第一冗余信息集中移除,得到第二冗余信息集;根据执行计划片段对应的结构化查询语句的属性对所述第二冗余信息集中的各组相似执行计划片段进行分类,得到多组增量冗余信息集和存量冗余信息集;
获取所述相似执行计划片段的生产运维信息;
根据所述生产运维信息,确定至少一组相似执行计划片段中的待调整冗余执行计划片段;其中,包括:在确定一组相似执行计划片段对应的增量冗余信息集为空并且所述存量冗余信息集非空的情况下,根据所述存量冗余信息集中各个执行计划片段的生产运维信息,确定所述存量冗余信息集的平均资源消耗;在所述平均资源消耗大于第二预设阈值的情况下,将所述存量冗余信息集中的执行计划片段加入待调整冗余信息集中;在所述平均资源消耗小于等于第二预设阈值的情况下,将所述存量冗余信息集中的执行计划片段移除。
2.根据权利要求1所述的方法,其特征在于,获取目标源代码的执行计划信息集,包括:
获取所述目标源代码;
确定所述目标源代码对应的结构化查询语句信息集;
获取所述目标源代码对应的数据库表统计信息;
根据所述数据库表统计信息和所述结构化查询语句信息集,生成所述各个结构化查询语句的执行计划;
将所述各个结构化查询语句的执行计划按STAGE分割,得到多个执行计划片段;
将所述多个执行计划片段按照树形结构进行解析,得到所述目标源代码的执行计划信息集。
3.根据权利要求2所述的方法,其特征在于,确定所述目标源代码对应的结构化查询语句信息集,包括:
对所述目标源代码进行分割整形,得到多个结构化查询语句;
标记所述多个结构化查询语句的属性;其中,所述属性包括:增量属性和存量属性;
基于所述多个结构化查询语句的属性,得到结构化查询语句信息集;其中,所述结构化查询语句信息集中包含各个结构化查询语句的属性和特征信息,所述特征信息包括:结构化查询语句在所述目标源代码中的路径、原结构化查询语句、所属的作业、作业组和应用。
4.根据权利要求1所述的方法,其特征在于,确定所述执行计划信息集中各个执行计划片段的目标特征向量,包括:
利用规则匹配法提取所述各个执行计划片段的特征数据,得到所述各个执行计划片段的特征信息集;
对所述各个执行计划片段的特征信息集进行预处理,得到所述各个执行计划片段的初始特征向量;
对所述各个执行计划片段的初始特征向量进行归一化处理,得到所述各个执行计划片段的目标特征向量。
5.根据权利要求1所述的方法,其特征在于,在得到增量冗余信息集和存量冗余信息集之后,还包括:
在确定一组相似执行计划片段对应的增量冗余信息集非空并且所述存量冗余信息集非空的情况下,根据所述存量冗余信息集中各个执行计划片段的生产运维信息,确定所述存量冗余信息集的平均资源消耗;
在所述平均资源消耗大于第二预设阈值的情况下,将所述存量冗余信息集和增量冗余信息集中的执行计划片段加入待调整冗余信息集中;其中,所述待调整冗余信息集中包含至少一个待调整冗余执行计划片段;
在所述平均资源消耗小于等于第二预设阈值的情况下,将所述存量冗余信息集和增量冗余信息集中的执行计划片段移除;
在确定所述增量冗余信息集非空并且所述存量冗余信息集为空的情况下,将所述增量冗余信息集中的执行计划片段移除。
6.根据权利要求1所述的方法,其特征在于,所述目标特征向量中的特征数据包含以下至少之一:执行计划层级、表名、谓词、聚合算法、排序方式、投影方式、文本处理特征、关联方式。
7.一种冗余代码的识别装置,其特征在于,包括:
第一获取模块,用于获取目标源代码的执行计划信息集;其中,所述执行计划信息集中包含所述目标源代码中各个结构化查询语句对应的至少一个执行计划片段;
第一确定模块,用于确定所述执行计划信息集中各个执行计划片段的目标特征向量;
匹配模块,用于基于所述各个执行计划片段的目标特征向量,利用聚类算法对所述各个执行计划片段进行相似度匹配,得到至少一组匹配成功的相似执行计划片段;
冗余信息集获取模块,用于将所述至少一组匹配成功的相似执行计划片段加入第一冗余信息集中;确定所述第一冗余信息集中每组相似执行计划片段的代价估算均值;将代价估算均值小于等于第一预设阈值的各组相似执行计划片段从所述第一冗余信息集中移除,得到第二冗余信息集;根据执行计划片段对应的结构化查询语句的属性对所述第二冗余信息集中的各组相似执行计划片段进行分类,得到多组增量冗余信息集和存量冗余信息集;
第二获取模块,用于获取所述相似执行计划片段的生产运维信息;
第二确定模块,用于根据所述生产运维信息,确定至少一组相似执行计划片段中的待调整冗余执行计划片段;其中,包括:在确定一组相似执行计划片段对应的增量冗余信息集为空并且所述存量冗余信息集非空的情况下,根据所述存量冗余信息集中各个执行计划片段的生产运维信息,确定所述存量冗余信息集的平均资源消耗;在所述平均资源消耗大于第二预设阈值的情况下,将所述存量冗余信息集中的执行计划片段加入待调整冗余信息集中;在所述平均资源消耗小于等于第二预设阈值的情况下,将所述存量冗余信息集中的执行计划片段移除。
8.一种冗余代码的识别设备,其特征在于,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现权利要求1至6中任一项所述方法的步骤。
9.一种计算机可读存储介质,其特征在于,其上存储有计算机指令,所述指令被执行时实现权利要求1至6中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110439936.4A CN113064597B (zh) | 2021-04-23 | 2021-04-23 | 一种冗余代码的识别方法、装置和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110439936.4A CN113064597B (zh) | 2021-04-23 | 2021-04-23 | 一种冗余代码的识别方法、装置和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113064597A CN113064597A (zh) | 2021-07-02 |
CN113064597B true CN113064597B (zh) | 2024-03-08 |
Family
ID=76567592
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110439936.4A Active CN113064597B (zh) | 2021-04-23 | 2021-04-23 | 一种冗余代码的识别方法、装置和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113064597B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106547683A (zh) * | 2015-09-22 | 2017-03-29 | 阿里巴巴集团控股有限公司 | 一种冗余代码检测方法及装置 |
CN110502443A (zh) * | 2019-08-22 | 2019-11-26 | 深圳前海环融联易信息科技服务有限公司 | 冗余代码检测方法、检测模块、电子设备及计算机存储介质 |
CN111290784A (zh) * | 2020-01-21 | 2020-06-16 | 北京航空航天大学 | 适用于大规模样本的程序源代码相似度检测方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200183668A1 (en) * | 2018-12-05 | 2020-06-11 | Bank Of America Corporation | System for code analysis by stacked denoising autoencoders |
-
2021
- 2021-04-23 CN CN202110439936.4A patent/CN113064597B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106547683A (zh) * | 2015-09-22 | 2017-03-29 | 阿里巴巴集团控股有限公司 | 一种冗余代码检测方法及装置 |
CN110502443A (zh) * | 2019-08-22 | 2019-11-26 | 深圳前海环融联易信息科技服务有限公司 | 冗余代码检测方法、检测模块、电子设备及计算机存储介质 |
CN111290784A (zh) * | 2020-01-21 | 2020-06-16 | 北京航空航天大学 | 适用于大规模样本的程序源代码相似度检测方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113064597A (zh) | 2021-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10042912B2 (en) | Distributed clustering with outlier detection | |
US8280915B2 (en) | Binning predictors using per-predictor trees and MDL pruning | |
WO2019218475A1 (zh) | 异常行为对象的识别方法、装置、终端设备及介质 | |
CN111160021A (zh) | 日志模板提取方法及装置 | |
KR101965277B1 (ko) | 하이퍼그래프 데이터 분석 시스템 및 방법과, 이를 위한 컴퓨터 프로그램 | |
CN104239553A (zh) | 一种基于Map-Reduce框架的实体识别方法 | |
CN110597796B (zh) | 基于全生命周期的大数据实时建模方法及系统 | |
CN114818643B (zh) | 一种保留特定业务信息的日志模板提取方法及装置 | |
CN111986792A (zh) | 医疗机构评分方法、装置、设备及存储介质 | |
US10467276B2 (en) | Systems and methods for merging electronic data collections | |
CN115577701A (zh) | 针对大数据安全的风险行为识别方法、装置、设备及介质 | |
CN115794798A (zh) | 一种市场监管信息化标准管理与动态维护系统及方法 | |
CN116841779A (zh) | 异常日志检测方法、装置、电子设备和可读存储介质 | |
CN115146062A (zh) | 融合专家推荐与文本聚类的智能事件分析方法和系统 | |
CN113689114A (zh) | 一种信用度的确定方法、装置和设备 | |
CN112632000A (zh) | 日志文件聚类方法、装置、电子设备和可读存储介质 | |
CN112579781A (zh) | 文本归类方法、装置、电子设备及介质 | |
CN113064597B (zh) | 一种冗余代码的识别方法、装置和设备 | |
CN116578700A (zh) | 日志分类方法、日志分类装置、设备及介质 | |
CN116204647A (zh) | 一种目标比对学习模型的建立、文本聚类方法及装置 | |
CN116244367A (zh) | 一种基于多模型的自定义算法的可视化大数据分析平台 | |
CN115495587A (zh) | 一种基于知识图谱的告警分析方法及装置 | |
WO2018100700A1 (ja) | データ変換装置とデータ変換方法 | |
CN115204155A (zh) | 一种配置异常检测方法、装置、计算机设备和存储介质 | |
CN115034762A (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 |