CN112612810A - 慢sql语句识别方法及*** - Google Patents

慢sql语句识别方法及*** Download PDF

Info

Publication number
CN112612810A
CN112612810A CN202011539849.8A CN202011539849A CN112612810A CN 112612810 A CN112612810 A CN 112612810A CN 202011539849 A CN202011539849 A CN 202011539849A CN 112612810 A CN112612810 A CN 112612810A
Authority
CN
China
Prior art keywords
sql statement
identified
historical
slow
characteristic information
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
CN202011539849.8A
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.)
Beike Technology Co Ltd
Original Assignee
Beike Technology 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 Beike Technology Co Ltd filed Critical Beike Technology Co Ltd
Priority to CN202011539849.8A priority Critical patent/CN112612810A/zh
Publication of CN112612810A publication Critical patent/CN112612810A/zh
Pending legal-status Critical Current

Links

Images

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
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/22Matching criteria, e.g. proximity measures

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Evolutionary Biology (AREA)
  • Evolutionary Computation (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Artificial Intelligence (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Databases & Information Systems (AREA)
  • Stored Programmes (AREA)

Abstract

本发明提供一种慢SQL语句识别方法及***,首先获取待识别SQL语句的特征信息;然后计算所述待识别SQL语句的特征信息与历史慢SQL语句库中历史慢SQL语句的特征信息之间的相似度;最后根据计算得到的相似度,识别待识别SQL语句是否为慢SQL语句。本发明实施例中通过计算待识别SQL语句的特征信息与历史慢SQL语句的特征信息之间的相似度,对待识别SQL语句进行识别,不需要引入人为操作,既可以使识别结果更加准确,也可以节约人力,提高识别效率。而且,可以在SQL语句上线之前将其作为待识别SQL语句进行识别,可以避免慢SQL语句上线后导致***故障。

Description

慢SQL语句识别方法及***
技术领域
本发明涉及计算机软件技术领域,尤其涉及一种慢SQL语句识别方法及***。
背景技术
在软件编程中,由于开发者的编程能力和业务的频繁迭代可能会产生慢SQL现象。慢SQL现象是指应用在运行一段时间业务后,由于部分SQL语句频繁地对数据库进行I/O操作,从而造成了该部分SQL语句执行时长时间占用CPU。对于应用来说,少量的慢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语句的特征信息之间的simhash值;
基于计算得到的simhash值,确定所述待识别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是本发明提供的慢SQL语句识别***的结构示意图;
图4是本发明提供的电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
由于现有技术中在对***中慢SQL语句进行识别时,通常是在慢SQL现象已经产生的情况下,通过工作人员对执行时间大于阈值的慢SQL语句进行判定,这需要工作人员对***有较全面的了解,对于工作经验较少的工作人员则无法进行准确的判断。因此需要投入较大的人力,而且对工作人员的能力要求较高。另外,这种方式不仅无法避免线上***故障,而且可能存在人为引入的误判情况。为此,本发明实施例中提供了一种慢SQL语句识别方法。
图1为本发明实施例中提供的一种慢SQL语句识别方法的流程示意图。如图1所示,该方法包括:
S1,获取待识别SQL语句的特征信息;
S2,计算所述待识别SQL语句的特征信息与历史慢SQL语句库中历史慢SQL语句的特征信息之间的相似度;
S3,基于所述相似度,识别所述待识别SQL语句是否为慢SQL语句。
具体地,本发明实施例中提供的慢SQL语句识别方法,其执行主体为服务器,具体可以是本地服务器也可以是云端服务器,本地服务器可以是计算机等,本发明实施例中对此不作具体限定。
首先执行步骤S1。待识别SQL语句可以是即将上线的SQL语句,也就是即将进入生产环境的SQL语句或即将面向用户使用的SQL语句。SQL语句是一种结构化查询语言(Structured Query Language,SQL),结构化查询语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库***,SQL语句是对数据库***进行操作的一种语言。
从SQL语句中可以提取到SQL语句的特征信息,该特征信息即SQL语句的指纹,是用于表征SQL语句的标识信息,例如SQL语句1为“30元≤price≤100元”表示查询价格在30元至100元之间的目标对象,则该SQL语句1的特征信息为“A≤price≤B”,SQL语句2为“101元≤price≤200元”表示查询价格在101元至200元之间的目标对象,该SQL语句2的特征信息可以与SQL语句1的特征信息相同,均为“A≤price≤B”。也就是说,SQL语句的特征信息表征的可以是一类SQL语句,是将可以改变的数据信息忽略而得到的固定的查询格式。相应地,从待识别SQL语句中可以识别提取出待识别SQL语句的特征信息。
然后执行步骤S2。计算待识别SQL语句的特征信息与历史慢SQL语句库中历史慢SQL语句的特征信息之间的相似度。此处用到的历史慢SQL语句库可以包括从数据库***中收集到的所有慢SQL语句,也可以仅仅包括与待识别SQL语句的业务信息相匹配的所有慢SQL语句,本发明实施例中对此不作具体限定。其中,待识别SQL语句的业务信息可以是指待识别SQL对应的业务信息,例如可以包括数据库服务地址、端口号、数据库名以及数据表名等信息。
历史慢SQL语句库中存储有多个历史慢SQL语句的特征信息,因此本发明实施例中需要计算出待识别SQL语句的特征信息与每个历史慢SQL语句的特征信息之间的相似度。相似度的计算方法可以有多种,例如通过计算二者的欧氏距离,并将得到的欧氏距离作为二者之间的相似度,还可以选择其他的相似度计算方式,本发明实施例中对此不作具体限定。
最后执行步骤S3。根据步骤S2中计算得到的待识别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语句特征字串s[1,…,m]和任一历史慢SQL语句特征字串t[1,…,n]。字串s中包含有m个字符,字串t中包括有n个字符。假设字串s转换成字串t至少可以使用d[m,n]个步骤的编辑操作实现,即最少编辑操作次数为d[m,n]。当m等于0时,字串s为空,最少编辑操作次数为d[0,n],表示增加n个字符,可以使得字串s转化为字串t。当j等于0时,字串t为空,最少编辑操作次数为d[m,0],表示减少m个字符,可以使得字串s转化为字串t。
一般情况下,要将字串s经过最少次数的增加、删除或者替换等编辑操作转换为字串t,则需要在以最少次数的增加、删除或者替换等编辑操作完成第一轮转换,使得字串s和字串t只需要再经过一次编辑操作或者不做任何编辑操作的第二轮转换,就可以完成字串s到字串t的转换。其中,第一类转换可以分为下面三种情况:
1)可以在k个编辑操作内将字串s[1,…,m]转换为字串t[1,…,n-1];
2)可以在k个编辑操作内将字串s[1,…,m-1]转换为字串t[1,…,n];
3)可以在k个编辑操作内将字串s[1,…,m-1]转换为t[1,…,n-1]。
针对情况1),只需要在最后将字符t[n]加上字串s[1,…,m]就完成了匹配,总共就需要k+1个操作;
针对情况2),只需要在最后将字符s[m]移除,然后再做k个编辑操作,总共需要k+1个操作;
针对情况3),只需要在最后将字符s[m]替换为字符t[n],使得满足s[1,…,m]==t[1,…,n],总共也需要k+1个操作。
特别地,如果在第3种情况下,字符s[m]刚好等于字符t[n],则可以仅仅使用k个编辑操作就完成这个转换过程。
最后,为了保证得到的编辑操作次数总是最少的,可以从上面三种情况中选择消耗最少的一种作为将字串s[1,…,m]转换为字串t[1,…,n]所需要的最小编辑操作次数。
基于此,本发明实施例中,第一步:将字串s[1,…,m]表示为str1,将字串t[1,…,n]表示为str2,当str1或str2的长度为0时返回另一个字符串的长度。例如:
if(str1.length==0)return str2.length;
if(str2.length==0)return str1.length。
第二步:初始化(n+1)*(m+1)的矩阵d,并让第一行和列的值从0开始增长,利用矩阵d中的数值表示编辑操作次数。
第三步:扫描str1和str2,如果:str1[i]==str2[j],用temp记录它,为0。否则temp记为1。然后在矩阵d[i,j]赋于d[i-1,j]+1、d[i,j-1]+1、d[i-1,j-1]+temp三者的最小值。
第四步:扫描完后,返回矩阵的最后一个值d[n][m]即是str1和str2之间的编辑距离。
然后,将计算得到的编辑距离作为待识别SQL语句的特征信息与该任一历史慢SQL语句的特征信息之间的相似度。
需要说明的是,此时在基于相似度对待识别SQL语句进行识别时采用的预设阈值是以编辑距离作为相似度时设置的能够将某一SQL语句识别为慢SQL语句的最小相似度。也就是说,在相似度计算方法不同时,设置的预设阈值互不影响,可以相同也可以不相同。
本发明实施例中提供的慢SQL语句识别方法,引入编辑距离算法,利用待识别SQL语句的特征信息与任一历史慢SQL语句的特征信息之间的编辑距离作为二者之间的相似度,可以使得到的相似度更加准确。
在上述实施例的基础上,本发明实施例中提供的慢SQL语句识别方法,所述计算所述待识别SQL语句的特征信息与历史慢SQL语句库中历史慢SQL语句的特征信息之间的相似度,具体包括:
计算所述待识别SQL语句的特征信息与所述历史慢SQL语句库中任一历史慢SQL语句的特征信息之间的simhash值;
基于计算得到的simhash值,确定所述待识别SQL语句的特征信息与所述任一历史慢SQL语句的特征信息之间的汉明距离,并将所述汉明距离作为所述待识别SQL语句的特征信息与所述任一历史慢SQL语句的特征信息之间的相似度。
具体地,本发明实施例中,在计算相似度时,可以先分别计算出待识别SQL语句的特征信息与历史慢SQL语句库中任一历史慢SQL语句的特征信息各自的simhash值。simhash值的确定可以通过simhash算法实现,simhash算法可以将一个文档转换成一个64位的字节,即得到simhash值。
simhash算法主要包括五个步骤,分别为:分词处理、哈希计算、加权计算、累加计算以及二值化计算。以下仅以通过simhash算法计算待识别SQL语句的特征信息的simhash值为例进行说明,通过simhash算法计算任一历史慢SQL语句的特征信息的simhash值与计算待识别SQL语句的特征信息的simhash值的方法一致,本发明实施例中在此不做赘述。
分词处理:待识别SQL语句的特征信息通常是以文本的形式呈现,因此可以将待识别SQL语句的特征信息进行分词处理,得到待识别SQL语句的多个特征单词,所有特征单词构成特征单词序列。在此基础上,可以对特征单词序列进行去噪,即去掉特征单词序列中的噪音单词。还可以对特征单词序列中的每个单词赋予权重。本发明实施例中,可以将权重分为5个级别,取值分别为1~5。主语的权重可以为4,谓语的权重可以为5,量词的权重可以位3,宾语的权重可以是1,形容词的权重可以为2。例如,对“我是一个大忙人”进行分词,分词后可以得到:我(4)是(5)一群(3)大(2)忙人(1)。
哈希计算:通过hash算法计算每个特征单词的hash值,例如单词“我”通过hash算法计算得到的hash值可以为100101。
加权计算:通过哈希计算得到的结果,按照特征单词的权重形成加权数字串,加权数字串具体可以是hash值中取值为1的位与权重相乘,取值为0的位与权重相减。例如“我”对应的hash值为100101,通过加权后得到加权数字串“4-4-4 4-4 4”,“是”对应的hash值为101011,通过加权后得到加权数字串“5-5 5-5 5 5”。
累加计算:将加权计算得到的各个特征单词对应的加权数字串进行累加。例如,“我是”累加后得到:“9-9 1-1 1 9”。
二值化计算:将累加计算得到的“9-9 1-1 1 9”变换成0-1串,形成最终的simhash签名,即simhash值。变换的规则为:如果某一位上的数值大于0,则记为1,如果某一位上的数值小于0,则记为0。最后“我是”二值化计算的结果,即simhash值为“1 0 1 0 1 1”。
本发明实施例中采用的simhash算法的具体过程如下:
将待识别SQL语句的特征信息转换为一个f维的向量V,将向量V初始化为0;f维的二进制数S初始化为0;
对待识别SQL语句的每一个特征单词:采用hash算法对该特征单词产生一个f维的签名b。
对i=1~f,有:
如果签名b的第i位为1,则向量V的第i个元素加上该特征单词的权重;否则,向量V的第i个元素减去该特征单词的权重。
如果向量V的第i个元素大于0,则二进制数S的第i位为1,否则为0;最后输出二进制数S作为签名,即得到待识别SQL语句的特征信息的simhash值。
然后,根据计算得到的simhash值,确定出待识别SQL语句的特征信息与任一历史慢SQL语句的特征信息之间的汉明距离,具体可以是计算两个simhash值之间的汉明距离,并将该汉明距离作为作为待识别SQL语句的特征信息与任一历史慢SQL语句的特征信息之间的相似度。
需要说明的是,此时在基于相似度对待识别SQL语句进行识别时采用的预设阈值是以汉明距离作为相似度时设置的能够将某一SQL语句识别为慢SQL语句的最小相似度。也就是说,在相似度计算方法不同时,设置的预设阈值互不影响,可以相同也可以不相同。
本发明实施例中提供的慢SQL语句识别方法,引入simhash算法计算simhash值,并通过两个simhash值之间的汉明距离作为二者之间的相似度,可以使得到的相似度更加准确。而且,由于simhash算法可以对数据进行降维,采用simhash算法,可以使得计算相似度时的计算量减少,计算效率提高。
在上述实施例的基础上,本发明实施例中提供的慢SQL语句识别方法,所述计算所述待识别SQL语句的特征信息与历史慢SQL语句库中历史慢SQL语句的特征信息之间的相似度,具体包括:
计算所述待识别SQL语句的特征信息与所述历史慢SQL语句库中任一历史慢SQL语句的特征信息之间的杰卡德相似系数;
将所述杰卡德相似系数作为所述待识别SQL语句的特征信息与所述任一历史慢SQL语句的特征信息之间的相似度。
具体地,本发明实施例中,在计算相似度时,可以先分别计算出待识别SQL语句的特征信息与历史慢SQL语句库中任一历史慢SQL语句的特征信息之间的杰卡德相似系数。杰卡德相似系数的确定可以通过杰卡德相似系数算法实现,杰卡德相似系数算法可以理解为是将两个集合A和B的交集元素在并集中所占的比例,称为两个集合的杰卡德相似系数,用符号J(A,B)表示。则有:
Figure BDA0002854586010000121
杰卡德相似系数算法主要包括四个步骤,分别为:分词处理、交集计算、并集计算以及系数计算。
分词处理:待识别SQL语句的特征信息通常是以文本的形式呈现,因此可以将待识别SQL语句的特征信息进行分词处理,得到待识别SQL语句的多个特征单词,构成第一单词集。同理,任一历史慢SQL语句的特征信息通常也是以文本的形式呈现,因此可以将任一历史慢SQL语句的特征信息进行分词处理,得到任一历史慢SQL语句的多个特征单词,构成第二单词集。本发明实施例中,还可以通过代码“select*from menu where a=?”实现待识别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语句,具体可以通过服务器侧配置的Mysql参数获取,时间阈值可以根据需要进行设定,本发明实施例中对此不作具体限定。第一类SQL语句即为服务器侧的历史慢SQL语句。同时,还获取业务侧执行时间超过时间阈值的第二类SQL语句,具体可以通过代码监控业务侧的SQL语句的执行时间,并提取执行时间超过时间阈值的SQL语句作为第二类SQL语句。第二类SQL语句即为业务侧的历史慢SQL语句。
然后,将第一类SQL语句以及第二类SQL语句按业务信息存储至相应的历史慢SQL语句库中,即对应于同一数据表的SQL语句均存储至该数据表对应的历史慢SQL语句库中。并对相应的历史慢SQL语句库中的历史慢SQL语句进行去重处理,历史慢SQL语句库中存储的每个历史慢SQL语句均包括两个属性,一个属性为特征信息,另一个属性为M5加密后得到的加密信息。因此,去重处理的过程可以是通过比较每两个历史慢SQL语句的加密信息是否相同,如果相同则认为二者是同一历史慢SQL语句,则删除其中一个即可实现去重处理。
本发明实施例中,还可以将存储过程与去重处理过程相结合,即每获取到一个新历史慢SQL语句,通过MD5加密算法得到对应的加密信息。然后将该加密信息与新历史慢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语句的业务信息,还可以是属性信息等。
图2为本发明实施例中提供的慢SQL语句识别方法的完整流程示意图,如图2所示,该方法包括:
获取待识别SQL语句;
确定待识别SQL语句的特征信息以及业务信息,该业务信息包括数据库服务地址(Host2)、端口号(port2)、数据库名(database1)以及数据表名(table1)。一个数据库服务地址和一个端口号可以形成一个数据库实例,整个数据库***可以包括三个数据库实例,分别为Host1:port1、Host2:port2以及Host3:port3。Host1:port1下可以包括两个数据库,分别为databaseY、databaseX。Host2:port2下可以包括两个数据库,分别为database1、database2。database1下可以包括两个数据表,分别为table1、table2。database2下可以包括两个数据表,分别为table3、table4。Host3:port3下可以包括两个数据库,分别为databaseZ、databaseK。通过待识别SQL语句的业务信息中的Host2和port2可以确定出数据库实例Host2:port2,在该数据库实例下继续查找database1,在database1下继续查找table1。并确定table1对应的历史慢SQL语句库,该历史慢SQL语句库中包含有多个历史慢SQL语句,分别记为历史慢SQL1、历史慢SQL2、历史慢SQL3、历史慢SQL4、历史慢SQL5、历史慢SQL6等。通过计算待识别SQL语句的特征信息与每个历史慢SQL语句的特征信息之间的相似度,可以分别得到相似度1、相似度2、相似度3、相似度4、相似度5、相似度6。然后判断每个相似度与预设阈值之间的大小关系,如果存在大于预设阈值的相似度,则确定该待识别SQL语句为慢SQL语句,通知工作人员进行优化修改。如果不存在大于预设阈值的相似度,则确定该待识别SQL语句不是慢SQL语句,则结束识别过程。
如图3所示,在上述实施例的基础上,本发明实施例中提供了一种慢SQL语句识别***,包括:特征信息获取模块31、相似度计算模块32以及识别模块33。其中,
特征信息获取模块31用于获取待识别SQL语句的特征信息;
相似度计算模块32用于计算所述待识别SQL语句的特征信息与历史慢SQL语句库中历史慢SQL语句的特征信息之间的相似度;
识别模块33用于基于所述相似度,识别所述待识别SQL语句是否为慢SQL语句。
具体地,本发明实施例中提供的慢SQL语句识别***中各模块的作用与上述方法类实施例中各步骤的操作流程是一一对应的,实现的效果也是一致的,具体参见上述实施例,本发明实施例中对此不再赘述。
在上述实施例的基础上,本发明实施例中提供了一种慢SQL语句识别***,所述相似度计算模块,具体用于:
计算所述待识别SQL语句的特征信息与所述历史慢SQL语句库中任一历史慢SQL语句的特征信息之间的编辑距离;
将所述编辑距离作为所述待识别SQL语句的特征信息与所述任一历史慢SQL语句的特征信息之间的相似度。
在上述实施例的基础上,本发明实施例中提供了一种慢SQL语句识别***,所述相似度计算模块,具体用于:
计算所述待识别SQL语句的特征信息与所述历史慢SQL语句库中任一历史慢SQL语句的特征信息之间的simhash值;
基于计算得到的simhash值,确定所述待识别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语句。
图4示例了一种电子设备的实体结构示意图,如图4所示,该电子设备可以包括:处理器(processor)410、通信接口(Communications Interface)420、存储器(memory)430和通信总线440,其中,处理器410,通信接口420,存储器430通过通信总线440完成相互间的通信。处理器410可以调用存储器430中的逻辑指令,以执行慢SQL语句识别方法,该方法包括:获取待识别SQL语句的特征信息;计算所述待识别SQL语句的特征信息与历史慢SQL语句库中历史慢SQL语句的特征信息之间的相似度;基于所述相似度,识别所述待识别SQL语句是否为慢SQL语句。
此外,上述的存储器430中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法所提供的慢SQL语句识别方法,该方法包括:获取待识别SQL语句的特征信息;计算所述待识别SQL语句的特征信息与历史慢SQL语句库中历史慢SQL语句的特征信息之间的相似度;基于所述相似度,识别所述待识别SQL语句是否为慢SQL语句。
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各提供的慢SQL语句识别方法,该方法包括:获取待识别SQL语句的特征信息;计算所述待识别SQL语句的特征信息与历史慢SQL语句库中历史慢SQL语句的特征信息之间的相似度;基于所述相似度,识别所述待识别SQL语句是否为慢SQL语句。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (10)

1.一种慢SQL语句识别方法,其特征在于,包括:
获取待识别SQL语句的特征信息;
计算所述待识别SQL语句的特征信息与历史慢SQL语句库中历史慢SQL语句的特征信息之间的相似度;
基于所述相似度,识别所述待识别SQL语句是否为慢SQL语句。
2.根据权利要求1所述的慢SQL语句识别方法,其特征在于,所述计算所述待识别SQL语句的特征信息与历史慢SQL语句库中历史慢SQL语句的特征信息之间的相似度,具体包括:
计算所述待识别SQL语句的特征信息与所述历史慢SQL语句库中任一历史慢SQL语句的特征信息之间的编辑距离;
将所述编辑距离作为所述待识别SQL语句的特征信息与所述任一历史慢SQL语句的特征信息之间的相似度。
3.根据权利要求1所述的慢SQL语句识别方法,其特征在于,所述计算所述待识别SQL语句的特征信息与历史慢SQL语句库中历史慢SQL语句的特征信息之间的相似度,具体包括:
计算所述待识别SQL语句的特征信息与所述历史慢SQL语句库中任一历史慢SQL语句的特征信息之间的simhash值;
基于计算得到的simhash值,确定所述待识别SQL语句的特征信息与所述任一历史慢SQL语句的特征信息之间的汉明距离,并将所述汉明距离作为所述待识别SQL语句的特征信息与所述任一历史慢SQL语句的特征信息之间的相似度。
4.根据权利要求1所述的慢SQL语句识别方法,其特征在于,所述计算所述待识别SQL语句的特征信息与历史慢SQL语句库中历史慢SQL语句的特征信息之间的相似度,具体包括:
计算所述待识别SQL语句的特征信息与所述历史慢SQL语句库中任一历史慢SQL语句的特征信息之间的杰卡德相似系数;
将所述杰卡德相似系数作为所述待识别SQL语句的特征信息与所述任一历史慢SQL语句的特征信息之间的相似度。
5.根据权利要求1-4中任一项所述的慢SQL语句识别方法,其特征在于,所述历史慢SQL语句库,具体通过如下方法确定:
获取所述待识别SQL语句的业务信息;
基于所述业务信息,确定所述历史慢SQL语句库。
6.根据权利要求5所述的慢SQL语句识别方法,其特征在于,所述历史慢SQL语句库中历史慢SQL语句,具体通过如下方法确定:
获取服务器侧执行时间超过时间阈值的第一类SQL语句以及业务侧执行时间超过所述时间阈值的第二类SQL语句;
将所述第一类SQL语句以及所述第二类SQL语句按业务信息存储至相应的历史慢SQL语句库中,并对相应的历史慢SQL语句库中的历史慢SQL语句进行去重处理。
7.根据权利要求1-4中任一项所述的慢SQL语句识别方法,其特征在于,所述基于所述相似度,识别所述待识别SQL语句是否为慢SQL语句,具体包括:
若判断获知所述待识别SQL语句的特征信息与所述历史慢SQL语句库中任一历史慢SQL语句的特征信息之间的相似度大于预设阈值,则确定识别的结果是所述待识别SQL语句为慢SQL语句。
8.一种慢SQL语句识别***,其特征在于,包括:
特征信息获取模块,用于获取待识别SQL语句的特征信息;
相似度计算模块,用于计算所述待识别SQL语句的特征信息与历史慢SQL语句库中历史慢SQL语句的特征信息之间的相似度;
识别模块,用于基于所述相似度,识别所述待识别SQL语句是否为慢SQL语句。
9.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至7任一项所述慢SQL语句识别方法的步骤。
10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述慢SQL语句识别方法的步骤。
CN202011539849.8A 2020-12-23 2020-12-23 慢sql语句识别方法及*** Pending CN112612810A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011539849.8A CN112612810A (zh) 2020-12-23 2020-12-23 慢sql语句识别方法及***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011539849.8A CN112612810A (zh) 2020-12-23 2020-12-23 慢sql语句识别方法及***

Publications (1)

Publication Number Publication Date
CN112612810A true CN112612810A (zh) 2021-04-06

Family

ID=75244673

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011539849.8A Pending CN112612810A (zh) 2020-12-23 2020-12-23 慢sql语句识别方法及***

Country Status (1)

Country Link
CN (1) CN112612810A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113452710A (zh) * 2021-06-28 2021-09-28 深圳前海微众银行股份有限公司 越权漏洞检测方法、装置、设备及计算机程序产品
CN114880351A (zh) * 2022-05-31 2022-08-09 中国电信股份有限公司 慢查询语句的识别方法及装置、存储介质、电子设备

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107977358A (zh) * 2017-11-23 2018-05-01 浪潮金融信息技术有限公司 语句识别方法及装置、计算机存储介质和终端
CN109766429A (zh) * 2019-02-19 2019-05-17 北京奇艺世纪科技有限公司 一种语句检索方法及装置
CN110019349A (zh) * 2019-04-02 2019-07-16 深圳前海微众银行股份有限公司 语句预警方法、装置、设备及计算机可读存储介质
US20190361899A1 (en) * 2017-01-16 2019-11-28 China Unionpay Co., Ltd. Statement parsing method for database statement
CN110852057A (zh) * 2018-07-27 2020-02-28 北京京东尚科信息技术有限公司 一种计算文本相似度的方法和装置
CN111190876A (zh) * 2019-12-31 2020-05-22 天津浪淘科技股份有限公司 日志管理***及其运行方法
CN112084211A (zh) * 2020-10-12 2020-12-15 北京高因科技有限公司 一种慢sql语句处理***

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190361899A1 (en) * 2017-01-16 2019-11-28 China Unionpay Co., Ltd. Statement parsing method for database statement
CN107977358A (zh) * 2017-11-23 2018-05-01 浪潮金融信息技术有限公司 语句识别方法及装置、计算机存储介质和终端
CN110852057A (zh) * 2018-07-27 2020-02-28 北京京东尚科信息技术有限公司 一种计算文本相似度的方法和装置
CN109766429A (zh) * 2019-02-19 2019-05-17 北京奇艺世纪科技有限公司 一种语句检索方法及装置
CN110019349A (zh) * 2019-04-02 2019-07-16 深圳前海微众银行股份有限公司 语句预警方法、装置、设备及计算机可读存储介质
CN111190876A (zh) * 2019-12-31 2020-05-22 天津浪淘科技股份有限公司 日志管理***及其运行方法
CN112084211A (zh) * 2020-10-12 2020-12-15 北京高因科技有限公司 一种慢sql语句处理***

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113452710A (zh) * 2021-06-28 2021-09-28 深圳前海微众银行股份有限公司 越权漏洞检测方法、装置、设备及计算机程序产品
CN114880351A (zh) * 2022-05-31 2022-08-09 中国电信股份有限公司 慢查询语句的识别方法及装置、存储介质、电子设备
CN114880351B (zh) * 2022-05-31 2024-02-06 中国电信股份有限公司 慢查询语句的识别方法及装置、存储介质、电子设备

Similar Documents

Publication Publication Date Title
JP5768063B2 (ja) 適合を特徴付けるルールを用いたメタデータソースの照合
US9390176B2 (en) System and method for recursively traversing the internet and other sources to identify, gather, curate, adjudicate, and qualify business identity and related data
US20220342921A1 (en) Systems and methods for parsing log files using classification and a plurality of neural networks
CA2882280A1 (en) System and method for matching data using probabilistic modeling techniques
CN110597844B (zh) 异构数据库数据统一访问方法及相关设备
CN111651552B (zh) 结构化信息确定方法、装置和电子设备
CN112612810A (zh) 慢sql语句识别方法及***
CN115186650B (zh) 数据检测方法及相关装置
CN113901474A (zh) 一种基于函数级代码相似性的漏洞检测方法
CN112613176A (zh) 慢sql语句预测方法及***
US11604923B2 (en) High volume message classification and distribution
CN111723182B (zh) 一种用于漏洞文本的关键信息抽取方法及装置
CN113672653A (zh) 识别数据库中的隐私数据的方法和装置
CN113760891A (zh) 一种数据表的生成方法、装置、设备和存储介质
CN117216239A (zh) 文本去重方法、装置、计算机设备及存储介质
CN112395866A (zh) 报关单数据匹配方法及装置
CN112711678A (zh) 数据解析方法、装置、设备及存储介质
CN110807082A (zh) 质量抽检项目确定方法、***、电子设备及可读存储介质
CN114936139A (zh) 数据中心网络内的日志处理方法、装置、设备及存储介质
CN113688240A (zh) 威胁要素提取方法、装置、设备及存储介质
CN111859896B (zh) 配方文档检测方法、装置、计算机可读介质及电子设备
CN113420127A (zh) 威胁情报处理方法、装置、计算设备及存储介质
CN116361517B (zh) 一种企业字号查重方法、装置、设备和介质
CN112395865B (zh) 报关单校验方法及装置
JP2014235584A (ja) 文書分析システム、文書分析方法およびプログラム

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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20210406