海量SQL语句合并归类的方法及装置制造方法及图纸

技术编号:8366793 阅读:239 留言:0更新日期:2013-02-28 05:23
本发明专利技术提供一种海量SQL语句合并归类的方法及装置,其中所述方法包括:S1、分析数据库环境,采集运行系统中所有的SQL语句;S2、对每条所述SQL语句进行解析,得到所述SQL语句中的变量值;并将所述变量值用常量替换,得到解析后SQL语句;S3、计算并得到所述解析后SQL语句的HASH值,根据所述HASH值将所述SQL语句归类合并,并将归类合并后的结果存储;其中,解析后SQL语句相同的SQL语句为相似SQL语句。通过本发明专利技术提供的技术方案,得到了相似SQL语句及其唯一的HASH值,实现了SQL语句的归类及合并;那么对于一个每天都重复着同样的操作的被审计监控的系统,被原始SQL语句占据的空间就大大减少,这样大大节省了存储空间,数据查询效率大幅度提升。

【技术实现步骤摘要】

本专利技术涉及数据库,尤其涉及一种海量SQL语句合并归类的方法及装置
技术介绍
在目前很多大型企业如电子、金融、政府等都已经建立了符合自身需求的数据库及其管理系统,以加强对日益膨胀的数据仓库的管理。为了能够维持管理系统的稳定,要有专门的维护管理,日常管理中就少不了对数据库的监控分析。在目前的数据库监控分析中, 对于SQL数据的分析挖掘,往往局限于操作方式及操作对象的分析,操作方式及操作对象的关联松散,会导致由于数据量庞大,数据繁杂,语义复杂,难以查找识别异常操作,工作量繁琐且巨大,浪费了大量的人力资源和时间。通过对现有技术的分析,总结出了下述缺点。缺点I :操作方式及操作对象的关联松散,仅有这两个值并不能确定语意。缺点2 :相似的SQL语句之间没有归类合并,导致数据量庞大,查找困难。 缺点3 :没有具体的语意,导致匹配不准确,容易出现误报。
技术实现思路
本专利技术主要解决的技术问题是提供一种海量SQL语句合并归类的方法及装置,用以解决现有技术的诸多不足。为解决上述问题,本专利技术采用的一种技术方案是提供一种海量SQL语句合并归类的方法,包括SI、分析数据库环境,采集运行系统中所有的SQL语句;S2、对每条所述SQL语句进行解析,得到所述SQL语句中的变量值;并将所述变量值用常量替换,得到解析后SQL语句;S3、计算并得到所述解析后SQL语句的HASH值,根据所述HASH值将所述SQL语句归类合并,并将归类合并后的结果存储;其中,解析后SQL语句相同的SQL语句为相似SQL 语句。其中,所述S3中根据所述HASH值将所述SQL语句归类合并包括检测所述运行系统中是否已存储所述HASH值,并检测到没有存储所述HASH值的情况下存储所述HASH值, 且将所述HASH值对应的解析后SQL语句存储至运行系统预置的相似语句表中。其中,所述S3中还包括统计所述HASH值的出现次数。其中,所述S3之后还包括S4、获取S3统计的所述HASH值的出现次数,并根据获取到的HASH值的出现次数生成相似SQL语句的出现频率图。为解决上述问题,本专利技术采用的另一种技术方案是提供一种海量SQL语句合并归类的装置,包括采集模块,用于分析数据库环境,采集运行系统中所有的SQL语句;解析模块,用于对每条所述SQL语句进行解析,得到所述SQL语句中的变量值;并将所述变量值用常量替换,得到解析后SQL语句;归类模块,用于计算并得到所述解析后SQL语句的HASH值,根据所述HASH值将所述SQL语句归类合并,并将归类合并后的结果存储;其中,解析后SQL语句相同的SQL语句为相似SQL语句。其中,所述归类模块包括检测子单元,用于检测所述运行系统中是否已存储所述 HASH值,并检测到没有存储所述HASH值的情况下存储所述HASH值,且将所述HASH值对应的解析后SQL语句存储至运行系统预置的相似语句表中。其中,所述归类模块还包括统计子单元,用于统计所述HASH值的出现次数。其中,获取模块,用于获取归类模块统计的所述HASH值的出现次数,并根据获取到的HASH值的出现次数生成相似SQL语句的出现频率图。本专利技术的有益效果是区别于现有技术的诸多不足,本专利技术提供一种海量SQL语句合并归类的方法及装置,通过本专利技术提供的技术方案,得到了相似SQL语句及其唯一的 HASH值,实现了 SQL语句的归类及合并;那么对于一个每天都重复着同样的操作的被审计监控的系统,其系统中有了大量的相似语句,被原始SQL语句占据的空间就大大减少,这样大大节省了存储空间,并且由于数据量的急剧减少,数据查询效率大幅度提升。进一步可以理解的是,在一个稳定的被审计监控的系统中,相似语句数量是会处于一个稳定的状态,并且随着审计系统的运行,数量将慢慢地不再增加。附图说明图I为一实施方式中海量SQL语句合并归类的方法的流程图2为上述实施方式中S3的具体流程图3为另一实施方式中海量SQL语句合并归类的方法的流程图4为一实施方式中海量SQL语句合并归类的装置的功能模块图5为上述实施方式中归类模块的功能模块图6为另一实施方式中海量SQL语句合并归类的装置的功能模块图。标号说明10-采集模块,20-解析模块,30-归类模块,301-计算子单元,302-检测子单元,303-统计子单元。40-获取模块。具体实施方式为详细说明本专利技术的
技术实现思路
、构造特征、所实现目的及效果,以下结合实施方式并配合附图详予说明。请参阅图I至图3,图I所示的实施方式提供一种海量SQL语句合并归类的方法, 包括SI、分析数据库环境,采集运行系统中所有的SQL语句。S2、对每条所述SQL语句进行解析,得到所述SQL语句中的变量值。然后并将所述变量值用常量替换,得到解析后SQL语句。在本实施方式中,把变量值用“1”,“2”等数字常量按顺序替换,使得到每条SQL语句都变成这种形式的新的SQL语句。在其他实施方式中,把变量用“a” “b”等字母常量顺序替换。S3、计算并得到所述解析后SQL语句的HASH值,根据所述HASH值将所述SQL语句归类合并,并将归类合并后的结果存储;其中,解析后SQL语句相同的SQL语句为相似SQL 语句。通过上述S2解析后SQL语句,由于把变量值都替换了,相似SQL语句经过解析后是完全一样的,因此解析后相同的SQL语句在系统中会出现很多相同的。对这些SQL语句分别计算每条的HASH值,由于这HASH值对于相同的SQL语句是相同的,因此相似SQL语句的 HASH值是一样的,非相似SQL的HASH值是不同的。应当理解的是,解析后SQL语句相同的 SQL语句为相似SQL语句,也就意味着相似SQL语句的原始SQL语句只有变量值不同。例如下面每组都为相似语句语句select*from tab I where fl=123 与语句 select*from tab I where f 1=456 ;语句update tab I set f I = lwhere f2=a 与语句 update tab I set f 1=2 where f2=b ;语句insert tab I (f I, f2, f3) values (I, 2, 3)与语句 insert tab I (f I, f2, f3) values (a, b, c)。在具体如图2所示的某些实施例中,所述S3中根据所述HASH值将所述SQL语句归类合并包括S301、S302,具体如下文所示S301、检测所述运行系统中是否已存储所述HASH值;S302、检测到没有存储所述HASH值的情况下存储所述HASH值,且将所述HASH值对应的解析后SQL语句存储至运行系统预置的相似语句表中。通过上述过程,得到了相似SQL语句及其唯一的HASH值,实现了 SQL语句的归类及合并。传统技术原来在存储时,在每条操作明细中,都要存储原始SQL语句,通过本方法只要存储计算出来的HASH值及原始SQL语句的变量值,把相似语句存储在另外一张运行系统预置的相似语句表中。在本实施方式中,本系统专门建立一张存储表用于存储计算出来的HASH值及原始SQL语句的变量值。应当理解,存储表与相似语句表之间是通过HASH值进行关联的。那么对于一个每天都重复着同样的操作的被审计监控的系统,其系统中有了大量的相似本文档来自技高网
...

【技术保护点】
一种海量SQL语句合并归类的方法,其特征在于,包括:S1、分析数据库环境,采集运行系统中所有的SQL语句;S2、对每条所述SQL语句进行解析,得到所述SQL语句中的变量值;并将所述变量值用常量替换,得到解析后SQL语句;S3、计算并得到所述解析后SQL语句的HASH值,根据所述HASH值将所述SQL语句归类合并,并将归类合并后的结果存储;其中,解析后SQL语句相同的SQL语句为相似SQL语句。

【技术特征摘要】

【专利技术属性】
技术研发人员:钟小东陈健赖建华张章学蓝友枢
申请(专利权)人:福建省海峡信息技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1