CN113986765A - Sql语句性能检测方法及装置 - Google Patents

Sql语句性能检测方法及装置 Download PDF

Info

Publication number
CN113986765A
CN113986765A CN202111424457.1A CN202111424457A CN113986765A CN 113986765 A CN113986765 A CN 113986765A CN 202111424457 A CN202111424457 A CN 202111424457A CN 113986765 A CN113986765 A CN 113986765A
Authority
CN
China
Prior art keywords
detected
sql
sql statement
performance
performance detection
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
Application number
CN202111424457.1A
Other languages
English (en)
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.)
Bank of China Ltd
Original Assignee
Bank of China 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 Bank of China Ltd filed Critical Bank of China Ltd
Priority to CN202111424457.1A priority Critical patent/CN113986765A/zh
Publication of CN113986765A publication Critical patent/CN113986765A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3608Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/35Clustering; Classification
    • G06F16/353Clustering; Classification into predefined classes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • G06F18/241Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
    • G06F18/2411Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on the proximity to a decision surface, e.g. support vector machines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/285Selection of pattern recognition techniques, e.g. of classifiers in a multi-classifier system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • G06N20/10Machine learning using kernel methods, e.g. support vector machines [SVM]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Software Systems (AREA)
  • Medical Informatics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Databases & Information Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种SQL语句性能检测方法及装置,涉及人工智能技术领域,其中该方法包括:接收用户输入的待检测SQL语句;对待检测SQL语句进行特征提取,确定待检测SQL语句的特征向量;将待检测SQL语句的特征向量输入性能检测模型,得到待检测SQL语句对应的性能检测结果;性能检测模型是根据带标记的SQL语句集和未标记的SQL语句集,对机器学习模型训练得到,性能检测模型包括第一层分类器和第二层分类器,第一层分类器用于对SQL语句的全局性能检测,第二层分类器用于对SQL语句的性能问题进行划分。本发明可以降低SQL语句的开发成本,提高SQL语句的开发效率。

Description

SQL语句性能检测方法及装置
技术领域
本发明涉及人工智能技术领域,尤其涉及一种SQL语句性能检测方法及装置。
背景技术
本部分旨在为权利要求书中陈述的本发明实施例提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
结构化查询语言(Structured Query Language,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为本发明实施例中提供的又一种SQL语句性能检测方法的流程图;
图4为本发明实施例中提供的一种用于SQL语句性能检测方法的性能检测模型训练方法的流程图;
图5为本发明实施例中提供的又一种用于SQL语句性能检测方法的性能检测模型训练方法的流程图;
图6为本发明实施例中提供的一种SQL语句性能检测装置的示意图;
图7为本发明实施例中提供的又一种SQL语句性能检测装置的示意图;。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
在本说明书的描述中,所使用的“包含”、“包括”、“具有”、“含有”等,均为开放性的用语,即意指包含但不限于。参考术语“一个实施例”、“一个具体实施例”、“一些实施例”、“例如”等的描述意指结合该实施例或示例描述的具体特征、结构或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。各实施例中涉及的步骤顺序用于示意性说明本申请的实施,其中的步骤顺序不作限定,可根据需要作适当调整。
术语解释:
结构化查询语言:Structured Query Language,简称SQL,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
支持向量机:Support Vector Machine,简称SVM,是一种按监督学习方式对数据进行二元分类的广义线性分类器,其决策边界是对学习样本求解的最大边距超平面。
经研究,SQL语句及数据库数据结构位于应用的最底层,编写符合要求的SQL语句对于构建高性能应用系统非常重要。如果SQL语句性能不佳,将不可避免地影响应用程序整体的性能,甚至可能导致应用程序异常、宕机。因此,在构建应用系统的过程中,需要对编写的SQL语句的性能进行检测,以发现可能存在的问题并进行进一步修改优化。但是,目前并没有广泛应用的已知程序自动分析结构化查询语言性能的方案,常用的方式是开发人员通过学习并长期积累SQL知识、经验,在开发过程中反复对SQL语句进行修改和调试,最终获取符合性能要求的结果。即便如此,往往还会发生由于考虑不周导致的低性能表现的SQL语句。
针对上述研究,本发明实施例提供了一种SQL语句性能检测方法及装置,能够自动分析结构化查询语言性能,降低SQL语句的开发成本,提高SQL语句的开发效率,以及减少人为因素对SQL语句性能检测结果的影响。
如图1所示,为本发明实施例提供的一种SQL语句性能检测方法的流程图,该方法包括以下步骤:
步骤101,接收用户输入的待检测SQL语句;
步骤102,对所述待检测SQL语句进行特征提取,确定所述待检测SQL语句的特征向量;
步骤103,将所述待检测SQL语句的特征向量输入性能检测模型,得到所述待检测SQL语句对应的性能检测结果;
其中,所述性能检测模型是根据带标记的SQL语句集和未标记的SQL语句集,对机器学习模型训练得到,所述性能检测模型包括第一层分类器和第二层分类器,所述第一层分类器用于对SQL语句的全局性能检测,所述第二层分类器用于对SQL语句的性能问题进行划分。
本发明实施例中,接收用户输入的待检测SQL语句;对所述待检测SQL语句进行特征提取,确定所述待检测SQL语句的特征向量;将所述待检测SQL语句的特征向量输入性能检测模型,得到所述待检测SQL语句对应的性能检测结果;其中,所述性能检测模型是根据带标记的SQL语句集和未标记的SQL语句集,对机器学习模型训练得到,与现有技术中通过人工对编写的SQL语句进行反复修改调优的技术方案相比,本发明实施例通过将待检测SQL语句的特征向量输入性能检测模型,可以自动确定待检测SQL语句的性能检测结果,进而使得开发人员可以根据性能检测结果有针对性地对SQL语句进行优化和调整,不需要通过人工的方式进行反复修改调优,从而可以降低SQL语句的开发成本,提高SQL语句的开发效率,以及减少人为因素对SQL语句性能检测结果的影响。
在上述步骤101中,在用户完成SQL语句的编写之后,接收用户输入的待检测SQL语句。
在上述步骤102中,为了使得最终得到的SQL语句的性能检测结果更加准确,需要对用户输入的待检测SQL语句进行特征提取,确定待检测SQL语句的特征向量。
其中,待检测SQL语句的特征向量包括待检测SQL语句的语句描述特征向量、数据结构特征向量和数据元特征向量。
具体实施时,可以通过预设的特征提取规则对用户输入的待检测SQL语句进行特征提取。所提取的特征可以包括:语句描述特征、数据结构特征和数据元特征。
其中,语句描述特征可以包括:语句文本特征、和/或语句语法树特征,例如,可以通过TF-IDF方法提取的SQL语句文本特征;可以通过构建SQL语法树,用于提取查询类型、查询对象、查询字段、和/或查询条件等作为语句语法树特征。
数据结构特征可以包括:SQL语句涉及的数据表的结构描述信息,例如,可以提取数据表名称、表字段属性、表字段类型、表字段长度、和/或索引类型等数据结构特征。
数据元特征可以包括:SQL语句涉及的数据库类型信息、数据库配置信息、和/或数据表数据量构成的元特征。
具体实施时,可以根据提取的SQL语句的特征,构建待检测SQL语句的特征向量。
例如,待检测SQL语句的特征向量可以为x=[x1,x2,x3]T,其中x1表示语句描述特征向量,x2表示数据结构特征向量,x3表示数据元特征向量。
在上述步骤103中,将待检测SQL语句的特征向量输入性能检测模型,可以得到待检测SQL语句对应的性能检测结果。
本发明实施例中的性能检测模型包括第一层分类器和第二层分类器,第一层分类器可以用于对SQL语句的全局性能检测,第二层分类器可以用于对SQL语句的性能问题进行划分。因此,如图2所示,上述步骤103,具体可以包括以下步骤:
步骤201,将所述待检测SQL语句的特征向量输入性能检测模型的第一层分类器,确定所述待检测SQL语句是否存在全局性能问题,所述第一层分类器包括一个全局SVM二分类器,所述全局SVM二分类器包括全局性能检测规则;
步骤202,在所述待检测SQL语句存在全局性能问题的情况下,将所述待检测SQL语句的特征向量输入性能检测模型的第二层分类器,确定所述待检测SQL语句存在的性能问题的类别;
步骤203,根据所述待检测SQL语句存在的性能问题的类别,确定所述待检测SQL语句对应的性能检测结果。
具体实施时,在上述步骤201中,由于第一层分类器可以用于对SQL语句的全局性能检测,因此,第一层分类器包括一个全局SVM二分类器,该全局SVM二分类器包括全局性能检测规则,该全局性能检测规则不针对具体性能问题进行检测,是针对待检测SQL语句所有可能存在的性能问题得出的结论。其结论可以包括待检测SQL语句存在性能问题和待检测SQL语句不存在性能问题两种中的任一个。
在上述步骤202中,在步骤201中的结论为待检测SQL语句存在性能问题的情况下,需要将待检测SQL语句的特征向量输入性能检测模型的第二层分类器,对待检测SQL语句存在的具体性能问题的类别进行确定。
在本发明实施例中,性能检测模型的第二层分类器包括多个SVM二分类器,每一SVM二分类器包括一种性能检测规则,每一SVM二分类器的性能检测规则均不同。也就是说,第二层分类器中的每一SVM二分类器之间为相互独立的关系,每一个SVM二分类器检测一种类型的性能问题。
具体的,如图3所示,上述步骤202,具体可以包括以下步骤:
步骤301,在所述待检测SQL语句存在全局性能问题的情况下,将所述待检测SQL语句的特征向量依次输入第二层分类器中的每一SVM二分类器,确定所述待检测SQL语句是否存在每一SVM二分类器的性能检测规则所对应的性能问题;
步骤302,根据所述待检测SQL语句存在的任意一个或多个SVM二分类器的性能检测规则所对应的性能问题,确定所述待检测SQL语句存在的性能问题的类别。
具体实施时,通过第二层分类器中的每一SVM二分类器逐个判定,能够确定待检测SQL语句存在的任意一个或多个性能问题的类别。
需要说明的是,在上述步骤201中的结论为待检测SQL语句不存在性能问题的情况下,则不需要经过第二层分类器进行逐个判定。待检测SQL语句的最终检测结果为不存在性能问题。
本发明实施例中,性能检测模型还可以输出不同的性能问题对应的解决问题建议。
基于此,开发人员可以根据性能检测模型输出的多种类型的性能问题以及其对应的解决问题建议,进一步修改优化SQL语句,从而不需要开发人员反复进行调试优化,进而降低大量学习和反复调优的成本,提高了开发效率。
本发明实施例中,性能检测模型是根据带标记的SQL语句集和未标记的SQL语句集,对机器学习模型训练得到。如图4所示,为本发明实施例提供的一种用于SQL语句性能检测方法的性能检测模型的训练方法流程图,该性能检测模型的训练方法包括以下步骤:
步骤401,将带标记的SQL语句集和未标记的SQL语句集作为样本数据,构建训练集和测试集,所述带标记的SQL语句集包括标记存在性能问题的SQL语句和标记不存在问题的SQL语句;
步骤402,利用训练集对机器学习模型进行训练,确定性能检测模型;
步骤403,利用测试集对性能检测模型进行测试。
在上述步骤401中,需要选取不同的应用场景下的多个SQL语句作为样本数据,该样本数据中包括带标记的SQL语句集和未标记的SQL语句集。其中,带标记的SQL语句集是通过人工的方式对未标记的SQL语句集进行标记的结果,带标记的SQL语句集中包括标记存在性能问题的SQL语句和标记不存在问题的SQL语句。
然后,对样本数据中每一SQL语句进行特征提取,得到带标记的SQL语句集的特征向量矩阵和未标记的SQL语句集的特征向量矩阵,可以将未标记的SQL语句集的特征向量矩阵作为训练集,将带标记的SQL语句集的特征向量矩阵作为测试集。
例如,样本数据的特征向量集为{X,Y},其中X为未标记的SQL语句特征向量所构成的特征矩阵,Y为带标记的SQL语句特征向量所构成的特征矩阵。
需要说明的是,在训练性能检测模型的过程中,对样本数据中每一SQL语句进行特征提取,可以参考上述步骤102中特征提取的方法,重复之处不再赘述。
在上述步骤402中,利用训练集对机器学习模型进行训练,确定性能检测模型。
具体的,如图5所示,上述步骤402,可以包括以下步骤:
步骤501,构建支持向量机SVM算法学习模型;
步骤502,利用训练集对SVM算法学习模型进行训练,确定性能检测模型。
具体实施时,构建基于SVM算法的基础学习模型,利用训练集对SVM算法学习模型进行训练,确定性能检测模型。该模型为两层二分类模型,其中,第一层用于全局性能检测,第一层分类器包括一个全局SVM二分类器,需要根据SQL语句的全局性能检测规则构建全局SVM二分类器;第二层用于对SQL语句的性能问题的划分,因此,第二层分类器包括多个SVM二分类器,需要根据预设的SQL语句性能检测规则集构建多个SVM二分类器,每一个SVM二分类器包括预设的SQL语句性能检测规则集中的一种性能检测规则。
例如,若预设的SQL语句性能检测规则集中有N种性能检测规则,则第二层分类器包括N个SVM二分类器,其N个SVM二分类器中的性能检测规则一一对应于N种性能检测规则。
在上述步骤403中,利用带标记的SQL语句集的特征向量矩阵作为测试集对性能检测模型进行测试。
基于此,本发明实施例中,通过训练性能检测模型,可以辅助开发人员在SQL开发过程中进行SQL语句的性能检测、优化,降低出现低性能表现的SQL语句的可能,降低开发人员的开发调优成本。
本发明实施例中还提供了一种SQL语句性能检测装置,如下面的实施例所述。由于该装置解决问题的原理与SQL语句性能检测方法相似,因此该装置的实施可以参见SQL语句性能检测方法的实施,重复之处不再赘述。
如图6所示,为本发明实施例提供的一种SQL语句性能检测装置的示意图,所述装置包括:
接收模块601,用于接收用户输入的待检测SQL语句;
特征提取模块602,用于对所述待检测SQL语句进行特征提取,确定所述待检测SQL语句的特征向量;
性能检测模块603,用于将所述待检测SQL语句的特征向量输入性能检测模型,得到所述待检测SQL语句对应的性能检测结果;
其中,所述性能检测模型是根据带标记的SQL语句集和未标记的SQL语句集,对机器学习模型训练得到,所述性能检测模型包括第一层分类器和第二层分类器,所述第一层分类器用于对SQL语句的全局性能检测,所述第二层分类器用于对SQL语句的性能问题进行划分。
本发明实施例中,所述待检测SQL语句的特征向量包括所述待检测SQL语句的语句描述特征向量、数据结构特征向量和数据元特征向量。
本发明实施例中,性能检测模块603,具体用于:
将所述待检测SQL语句的特征向量输入性能检测模型的第一层分类器,确定所述待检测SQL语句是否存在全局性能问题,所述第一层分类器包括一个全局SVM二分类器,所述全局SVM二分类器包括全局性能检测规则;
在所述待检测SQL语句存在全局性能问题的情况下,将所述待检测SQL语句的特征向量输入性能检测模型的第二层分类器,确定所述待检测SQL语句存在的性能问题的类别;
根据所述待检测SQL语句存在的性能问题的类别,确定所述待检测SQL语句对应的性能检测结果。
本发明实施例中,所述第二层分类器包括多个SVM二分类器,每一SVM二分类器包括一种性能检测规则,每一SVM二分类器的性能检测规则均不同;
性能检测模块603,具体还用于:
在所述待检测SQL语句存在全局性能问题的情况下,将所述待检测SQL语句的特征向量依次输入第二层分类器中的每一SVM二分类器,确定所述待检测SQL语句是否存在每一SVM二分类器的性能检测规则所对应的性能问题;
根据所述待检测SQL语句存在的任意一个或多个SVM二分类器的性能检测规则所对应的性能问题,确定所述待检测SQL语句存在的性能问题的类别。
本发明实施例中,如图7所示,还包括模型训练和测试模块701,用于:
将带标记的SQL语句集和未标记的SQL语句集作为样本数据,构建训练集和测试集,所述带标记的SQL语句集包括标记存在性能问题的SQL语句和标记不存在问题的SQL语句;
利用训练集对机器学习模型进行训练,确定性能检测模型;
利用测试集对性能检测模型进行测试。
本发明实施例中,模型训练和测试模块701,具体还用于:
构建支持向量机SVM算法学习模型;
利用训练集对SVM算法学习模型进行训练,确定性能检测模型。
本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述SQL语句性能检测方法。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述SQL语句性能检测方法。
本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现上述SQL语句性能检测方法。
本发明实施例中,接收用户输入的待检测SQL语句;对所述待检测SQL语句进行特征提取,确定所述待检测SQL语句的特征向量;将所述待检测SQL语句的特征向量输入性能检测模型,得到所述待检测SQL语句对应的性能检测结果;其中,所述性能检测模型是根据带标记的SQL语句集和未标记的SQL语句集,对机器学习模型训练得到。与现有技术中通过人工对编写的SQL语句进行反复修改调优的技术方案相比,本发明实施例通过将待检测SQL语句的特征向量输入性能检测模型,可以自动确定待检测SQL语句的性能检测结果,进而使得开发人员可以根据性能检测结果有针对性地对SQL语句进行优化和调整,不需要通过人工的方式进行反复修改调优,从而可以降低SQL语句的开发成本,提高SQL语句的开发效率,以及减少人为因素对SQL语句性能检测结果的影响。
本发明实施例中,性能检测模型还可以输出不同的性能问题对应的解决问题建议。开发人员可以根据性能检测模型输出的多种类型的性能问题以及其对应的解决问题建议,进一步修改优化SQL语句,从而不需要开发人员反复进行调试优化,进而降低大量学习和反复调优的成本,提高了开发效率。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (15)

1.一种SQL语句性能检测方法,其特征在于,包括:
接收用户输入的待检测SQL语句;
对所述待检测SQL语句进行特征提取,确定所述待检测SQL语句的特征向量;
将所述待检测SQL语句的特征向量输入性能检测模型,得到所述待检测SQL语句对应的性能检测结果;
其中,所述性能检测模型是根据带标记的SQL语句集和未标记的SQL语句集,对机器学习模型训练得到,所述性能检测模型包括第一层分类器和第二层分类器,所述第一层分类器用于对SQL语句的全局性能检测,所述第二层分类器用于对SQL语句的性能问题进行划分。
2.如权利要求1所述的方法,其特征在于,所述待检测SQL语句的特征向量包括所述待检测SQL语句的语句描述特征向量、数据结构特征向量和数据元特征向量。
3.如权利要求1所述的方法,其特征在于,将所述待检测SQL语句的特征向量输入性能检测模型,得到所述待检测SQL语句对应的性能检测结果,包括:
将所述待检测SQL语句的特征向量输入性能检测模型的第一层分类器,确定所述待检测SQL语句是否存在全局性能问题,所述第一层分类器包括一个全局SVM二分类器,所述全局SVM二分类器包括全局性能检测规则;
在所述待检测SQL语句存在全局性能问题的情况下,将所述待检测SQL语句的特征向量输入性能检测模型的第二层分类器,确定所述待检测SQL语句存在的性能问题的类别;
根据所述待检测SQL语句存在的性能问题的类别,确定所述待检测SQL语句对应的性能检测结果。
4.如权利要求3所述的方法,其特征在于,所述第二层分类器包括多个SVM二分类器,每一SVM二分类器包括一种性能检测规则,每一SVM二分类器的性能检测规则均不同;
在所述待检测SQL语句存在全局性能问题的情况下,将所述待检测SQL语句的特征向量输入性能检测模型的第二层分类器,确定所述待检测SQL语句存在的性能问题的类别,包括:
在所述待检测SQL语句存在全局性能问题的情况下,将所述待检测SQL语句的特征向量依次输入第二层分类器中的每一SVM二分类器,确定所述待检测SQL语句是否存在每一SVM二分类器的性能检测规则所对应的性能问题;
根据所述待检测SQL语句存在的任意一个或多个SVM二分类器的性能检测规则所对应的性能问题,确定所述待检测SQL语句存在的性能问题的类别。
5.如权利要求1所述的方法,其特征在于,将所述待检测SQL语句的特征向量输入性能检测模型,得到所述待检测SQL语句对应的性能检测结果之前,还包括:
将带标记的SQL语句集和未标记的SQL语句集作为样本数据,构建训练集和测试集,所述带标记的SQL语句集包括标记存在性能问题的SQL语句和标记不存在问题的SQL语句;
利用训练集对机器学习模型进行训练,确定性能检测模型;
利用测试集对性能检测模型进行测试。
6.如权利要求5所述的方法,其特征在于,利用训练集对机器学习模型进行训练,确定性能检测模型,包括:
构建支持向量机SVM算法学习模型;
利用训练集对SVM算法学习模型进行训练,确定性能检测模型。
7.一种SQL语句性能检测装置,其特征在于,包括:
接收模块,用于接收用户输入的待检测SQL语句;
特征提取模块,用于对所述待检测SQL语句进行特征提取,确定所述待检测SQL语句的特征向量;
性能检测模块,用于将所述待检测SQL语句的特征向量输入性能检测模型,得到所述待检测SQL语句对应的性能检测结果;
其中,所述性能检测模型是根据带标记的SQL语句集和未标记的SQL语句集,对机器学习模型训练得到,所述性能检测模型包括第一层分类器和第二层分类器,所述第一层分类器用于对SQL语句的全局性能检测,所述第二层分类器用于对SQL语句的性能问题进行划分。
8.如权利要求7所述的装置,其特征在于,所述待检测SQL语句的特征向量包括所述待检测SQL语句的语句描述特征向量、数据结构特征向量和数据元特征向量。
9.如权利要求7所述的装置,其特征在于,性能检测模块,具体用于:
将所述待检测SQL语句的特征向量输入性能检测模型的第一层分类器,确定所述待检测SQL语句是否存在全局性能问题,所述第一层分类器包括一个全局SVM二分类器,所述全局SVM二分类器包括全局性能检测规则;
在所述待检测SQL语句存在全局性能问题的情况下,将所述待检测SQL语句的特征向量输入性能检测模型的第二层分类器,确定所述待检测SQL语句存在的性能问题的类别;
根据所述待检测SQL语句存在的性能问题的类别,确定所述待检测SQL语句对应的性能检测结果。
10.如权利要求9所述的装置,其特征在于,所述第二层分类器包括多个SVM二分类器,每一SVM二分类器包括一种性能检测规则,每一SVM二分类器的性能检测规则均不同;
性能检测模块,具体还用于:
在所述待检测SQL语句存在全局性能问题的情况下,将所述待检测SQL语句的特征向量依次输入第二层分类器中的每一SVM二分类器,确定所述待检测SQL语句是否存在每一SVM二分类器的性能检测规则所对应的性能问题;
根据所述待检测SQL语句存在的任意一个或多个SVM二分类器的性能检测规则所对应的性能问题,确定所述待检测SQL语句存在的性能问题的类别。
11.如权利要求7所述的装置,其特征在于,还包括模型训练和测试模块,用于:
将带标记的SQL语句集和未标记的SQL语句集作为样本数据,构建训练集和测试集,所述带标记的SQL语句集包括标记存在性能问题的SQL语句和标记不存在问题的SQL语句;
利用训练集对机器学习模型进行训练,确定性能检测模型;
利用测试集对性能检测模型进行测试。
12.如权利要求11所述的装置,其特征在于,模型训练和测试模块,具体还用于:
构建支持向量机SVM算法学习模型;
利用训练集对SVM算法学习模型进行训练,确定性能检测模型。
13.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6任一所述方法。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1至6任一所述方法。
15.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现权利要求1至6任一所述方法。
CN202111424457.1A 2021-11-26 2021-11-26 Sql语句性能检测方法及装置 Pending CN113986765A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111424457.1A CN113986765A (zh) 2021-11-26 2021-11-26 Sql语句性能检测方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111424457.1A CN113986765A (zh) 2021-11-26 2021-11-26 Sql语句性能检测方法及装置

Publications (1)

Publication Number Publication Date
CN113986765A true CN113986765A (zh) 2022-01-28

Family

ID=79732264

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111424457.1A Pending CN113986765A (zh) 2021-11-26 2021-11-26 Sql语句性能检测方法及装置

Country Status (1)

Country Link
CN (1) CN113986765A (zh)

Similar Documents

Publication Publication Date Title
CN110245496B (zh) 一种源代码漏洞检测方法及检测器和其训练方法及系统
US11620574B2 (en) Holistic optimization for accelerating iterative machine learning
US10347019B2 (en) Intelligent data munging
Steidl et al. Feature-based detection of bugs in clones
US11651014B2 (en) Source code retrieval
WO2020232898A1 (zh) 文本分类方法、装置、电子设备及计算机非易失性可读存储介质
CN108710662B (zh) 语言转换方法和装置、存储介质、数据查询系统和方法
US11288266B2 (en) Candidate projection enumeration based query response generation
US11995573B2 (en) Artificial intelligence system providing interactive model interpretation and enhancement tools
CN113127339A (zh) 一种Github开源平台数据的获取方法及源代码缺陷修复系统
JP2022042497A (ja) コーパスに格納された既存の械学習プロジェクトのパイプラインからの新しい機械学習プロジェクトのパイプラインの自動生成
CN110750297B (zh) 一种基于程序分析和文本分析的Python代码参考信息生成方法
CN114090784A (zh) 一种材料领域知识图谱的实体标签聚类方法及装置
CN115146062A (zh) 融合专家推荐与文本聚类的智能事件分析方法和系统
CN116049376B (zh) 一种信创知识检索回复的方法、装置和系统
EP4254279A1 (en) Machine learning pipeline augmented with explanation
JP2023145767A (ja) 語彙抽出支援システムおよび語彙抽出支援方法
CN117009518A (zh) 融合基本属性和文本内容的相似事件判断方法及其应用
CN116860583A (zh) 数据库的性能优化方法、装置、存储介质及电子设备
Sun et al. A scenario model aggregation approach for mobile app requirements evolution based on user comments
US11842175B2 (en) Dynamic recommendations for resolving static code issues
CN108536576B (zh) 用于对应用程序的测试脚本进行优化的方法和装置
CN113986765A (zh) Sql语句性能检测方法及装置
EP3965024A1 (en) Automatically labeling functional blocks in pipelines of existing machine learning projects in a corpus adaptable for use in new machine learning projects
CN111198934A (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