Nothing Special   »   [go: up one dir, main page]

CN102945256B - 海量sql语句合并归类的方法及装置 - Google Patents

海量sql语句合并归类的方法及装置 Download PDF

Info

Publication number
CN102945256B
CN102945256B CN201210396613.2A CN201210396613A CN102945256B CN 102945256 B CN102945256 B CN 102945256B CN 201210396613 A CN201210396613 A CN 201210396613A CN 102945256 B CN102945256 B CN 102945256B
Authority
CN
China
Prior art keywords
sql statement
sql
hash value
statement
similar
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
Application number
CN201210396613.2A
Other languages
English (en)
Other versions
CN102945256A (zh
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.)
FUJIAN STRAIT INFORMATION Corp
Original Assignee
FUJIAN STRAIT INFORMATION Corp
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 FUJIAN STRAIT INFORMATION Corp filed Critical FUJIAN STRAIT INFORMATION Corp
Priority to CN201210396613.2A priority Critical patent/CN102945256B/zh
Publication of CN102945256A publication Critical patent/CN102945256A/zh
Application granted granted Critical
Publication of CN102945256B publication Critical patent/CN102945256B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

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

Description

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

Claims (2)

1.一种海量SQL语句合并归类的方法,其特征在于,包括:
S1、分析数据库环境,采集运行系统中所有的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语句的出现频率图。
2.一种海量SQL语句合并归类的装置,其特征在于包括:
采集模块,用于分析数据库环境,采集运行系统中所有的SQL语句;
解析模块,用于对每条所述SQL语句进行解析,得到所述SQL语句中的变量值;并将所述变量值用常量替换,得到解析后SQL语句;
归类模块,用于计算并得到所述解析后SQL语句的HASH值,根据所述HASH值将所述SQL语句归类合并,并将归类合并后的结果存储;其中,解析后SQL语句相同的SQL语句为相似SQL语句;
所述归类模块包括:检测子单元,用于检测所述运行系统中是否已存储所述HASH值,并检测到没有存储所述HASH值的情况下存储所述HASH值,且将所述HASH值对应的解析后SQL语句存储至运行系统预置的相似语句表中;
所述归类模块还包括:统计子单元,用于统计所述HASH值的出现次数;
所述装置还包括:获取模块,用于获取归类模块统计的所述HASH值的出现次数,并根据获取到的HASH值的出现次数生成相似SQL语句的出现频率图。
CN201210396613.2A 2012-10-18 2012-10-18 海量sql语句合并归类的方法及装置 Active CN102945256B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210396613.2A CN102945256B (zh) 2012-10-18 2012-10-18 海量sql语句合并归类的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210396613.2A CN102945256B (zh) 2012-10-18 2012-10-18 海量sql语句合并归类的方法及装置

Publications (2)

Publication Number Publication Date
CN102945256A CN102945256A (zh) 2013-02-27
CN102945256B true CN102945256B (zh) 2016-02-03

Family

ID=47728200

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210396613.2A Active CN102945256B (zh) 2012-10-18 2012-10-18 海量sql语句合并归类的方法及装置

Country Status (1)

Country Link
CN (1) CN102945256B (zh)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103488715B (zh) * 2013-09-11 2017-01-18 北京思特奇信息技术股份有限公司 一种基于全局设置的预解析管理方法及系统
CN105373607B (zh) * 2015-11-13 2020-04-24 国网智能电网研究院 一种电力业务系统sql访问日志压缩方法
CN106919612B (zh) * 2015-12-25 2020-10-16 中国移动通信集团浙江有限公司 一种上线结构化查询语言脚本的处理方法及装置
CN105740344A (zh) * 2016-01-25 2016-07-06 中国科学院计算技术研究所 一种独立于数据库的sql语句合并方法及系统
CN105912594B (zh) * 2016-04-05 2020-01-07 深信服科技股份有限公司 Sql语句处理方法和系统
CN105868078B (zh) * 2016-04-14 2019-03-08 国家电网公司 基于动态视图监控的Oracle RAC数据库SQL流捕获方法及系统
CN106599139B (zh) * 2016-12-05 2021-02-26 金蝶软件(中国)有限公司 一种基于MyBatis框架的SQL处理方法及装置
CN110121704B (zh) * 2016-12-30 2021-09-21 华为技术有限公司 一种用于存储过程的执行方法、设备以及系统
CN107025263A (zh) * 2017-01-16 2017-08-08 中国银联股份有限公司 用于数据库语句的语句解析方法
CN107562790B (zh) * 2017-07-31 2020-05-01 北京北信源软件股份有限公司 一种实现数据处理批量入库的方法和系统
CN107506450A (zh) * 2017-08-28 2017-12-22 深圳市华傲数据技术有限公司 一种用于解决数据高并发访问的方法及装置
CN108052394B (zh) * 2017-12-27 2021-11-30 福建星瑞格软件有限公司 基于sql语句运行时间的资源分配的方法及计算机设备
CN109542868A (zh) * 2018-09-28 2019-03-29 中国平安人寿保险股份有限公司 定位异常sql语句的方法、装置、电子设备及存储介质
CN109800240B (zh) * 2018-12-13 2024-03-22 平安科技(深圳)有限公司 Sql语句归类方法、装置、计算机设备和存储介质
CN112527815A (zh) * 2020-12-02 2021-03-19 平安医疗健康管理股份有限公司 数据库的脚本迁移方法、装置、计算机设备和存储介质
CN112966101B (zh) * 2021-02-07 2024-06-18 白腊梅 语句聚类方法、事务聚类方法、语句聚类装置与事务聚类装置
CN115114374B (zh) * 2022-06-27 2023-03-31 腾讯科技(深圳)有限公司 事务执行方法、装置、计算设备及存储介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100403308C (zh) * 2005-10-31 2008-07-16 北京神舟航天软件技术有限公司 基于sql负载挖掘的物理数据库自动设计方法
CN100550019C (zh) * 2007-03-22 2009-10-14 金蝶软件(中国)有限公司 面向对象的数据库访问方法及系统
JP4722195B2 (ja) * 2009-04-13 2011-07-13 富士通株式会社 データベース・メッセージ分析支援プログラム、方法及び装置

Also Published As

Publication number Publication date
CN102945256A (zh) 2013-02-27

Similar Documents

Publication Publication Date Title
CN102945256B (zh) 海量sql语句合并归类的方法及装置
CN107577588B (zh) 一种海量日志数据智能运维系统
CN109684352B (zh) 数据分析系统、方法、存储介质及电子设备
Nagappan et al. Abstracting log lines to log event types for mining software system logs
KR101611166B1 (ko) 빅데이터 분석 기반의 위크시그널 도출 시스템 및 그 방법
CN107391598B (zh) 一种威胁情报自动生成方法及系统
CN111190876A (zh) 日志管理系统及其运行方法
CN107908550B (zh) 一种软件缺陷统计处理方法及装置
CN102540944B (zh) 嵌入式多功能统计过程控制装置及方法
AU2012236577A1 (en) Processing data in a mapreduce framework
CN106530121B (zh) 电力监控系统安全防护合规性检测方法和系统
US10810225B2 (en) System and method for large scale data processing of source data
CN108304382B (zh) 基于制造过程文本数据挖掘的质量分析方法与系统
CN111224843B (zh) 资源链路监控方法、装置、设备和存储介质
CN114461644A (zh) 一种数据采集方法、装置、电子设备及存储介质
CN113010484A (zh) 日志文件管理方法及装置
KR101510647B1 (ko) 이슈 템플릿 추출 기반의 웹 동향 분석 방법 및 장치
CN102831174B (zh) 结构化信息快速检索方法及系统
Jing et al. A microservice fault identification method based on LightGBM
CN102193859B (zh) 一种代码分析方法及系统
US20160239264A1 (en) Re-streaming time series data for historical data analysis
CN117035563B (zh) 产品质量安全风险监测方法、设备、监测系统及介质
CN110580170B (zh) 软件性能风险的识别方法及装置
KR20170078038A (ko) 유사성 분석을 통한 시공 계측 센서 데이터 이상 감지 방법 및 시스템
US20200242121A1 (en) Method and apparatus for analyzing data

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant