SQL审核方法和装置与流程

文档序号:11677594阅读:225来源:国知局
SQL审核方法和装置与流程
本发明涉及数据库
技术领域
,特别是涉及一种sql审核方法和装置。
背景技术
:在数据库的工作中,经常需要对数据库执行的sql(structuredquerylanguage,结构化查询语言)语句进行审核,从而避免性能太差的sql语句进入生产系统,导致数据库的整体性能降低。对于一些数据字典信息不完善的数据库,例如mysql、postgres等数据库的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基线的状态标记为不通过,若否,则根据所述sql编号及不通过的审核项目编号建立sql基线。上述sql审核方法和装置,从慢日志数据中提取待审核的sql语句及与sql语句匹配的基本信息,并按照预设的审核模板中的审核项目,对解析sql语句得到的解析结果及与sql语句匹配的基本信息进行审核,通过挖掘分析慢日志数据,能够为数据字典信息不完善的数据库扩展出可进行sql深度审核sql语句及与sql语句匹配的基本信息,使sql审核更具有针对性,并有效提高了sql审核的准确性。附图说明图1为一个实施例中服务器的内部结构示意图;图2为一个实施例中sql审核方法的流程示意图;图3为一个实施例中按照预设的审核模板中的审核项目进行审核的流程示意图;图4为一个实施例中建立sql基线并进行分析的流程示意图;图5为一个实施例中建立sql基线的流程示意图;图6为一个实施例中sql审核装置的结构示意图;图7为一个实施例中提取模块的内部结构示意图;图8为另一个实施例中sql审核装置的结构示意图;图9为一个实施例中建立模块的内部结构示意图。具体实施方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。图1为一个实施例中服务器的内部结构示意图。如图1所示,该服务器包括通过系统总线连接的处理器、非易失性存储介质、内存储器和网络接口。其中,该服务器的非易失性存储介质存储有操作系统、数据库和sql审核装置,数据库中存储有慢日志数据,该sql审核装置用于实现适用于服务器的一种sql审核方法。该服务器的处理器用于提供计算和控制能力,支撑整个服务器的运行。该服务器的内存储器为非易失性存储介质中的sql审核装置的运行提供环境,该内存储器中可储存有计算机可读指令,该计算机可读指令被所述处理器执行时,可使得所述处理器执行sql审核方法。该服务器的网络接口用于据以与外部的终端通过网络连接通信,比如接收终端发送的修改后的sql语句以及向终端返回sql审核数据等。服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现。本领域技术人员可以理解,图1中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的服务器的限定,具体的服务器可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。如图2所示,提供了一种sql审核方法,包括以下步骤:步骤s210,获取慢日志数据。具体的,服务器可通过外部链接表的方式,从数据字典信息不完善的目标数据库中获取慢日志数据,例如、mysql、postgres等目标数据库,其中,慢日志数据指的是慢查询日志数据,在数据库中超过指定时间的sql语句查询称为“慢查询”,慢日志数据记录有超过指定时间的sql语句,以及日志时间、存储位置、执行时间、执行者编号等sql语句执行时产生的相关数据。步骤s220,从慢日志数据中提取待审核的sql语句及与sql语句匹配的基本信息。具体的,可从获取的慢日志数据中提取待审核的sql语句,以及审核sql语句所需的与待审核的sql语句匹配的基本信息,基本信息可根据预设的审核模板中的审核项目进行提取,基本信息可包括执行次数、执行总时间、执行操作、执行开销等。通过慢日志数据中提取待审核的sql语句,相当于对sql语句进行筛选,根据sql语句的执行时间过滤性能好的sql语句,超过指定时间的性能较差的sql语句则进行审核。在一个实施例中,步骤s220从慢日志数据中提取待审核的sql语句及与sql语句匹配的基本信息,包括以下步骤:(a)根据预设格式分析慢日志数据,并生成慢日志数据列表。具体的,可分析慢日志数据并按照预设格式提取慢日志数据中的数据,预设格式可根据实际需求进行设定,例如,预设格式可包括字段名、字段类型、字段内容,则提取慢日志数据中各个字段名,以及与字段名对应的字段类型及字段内容。可根据按照预设格式从慢日志数据提取的数据生成慢日志数据列表,慢日志数据列表的格式内容与预设格式及提取的数据对应,例如,慢日志数据列表可如表1所示:表1字段名字段类型字段内容log_timetimestamp(3)withtimezone20160523user_nametextzhangsandatabase_nametextdb1useridoid267975431callsbigint5total_timedoubleprecision35其中,log_time为日志时间,user_name为用户名,database_name为数据库名,userid为用户编号,calls为执行次数,total_time为执行总时间,可以理解地,慢日志数据列表中的内容及格式并不限于表1所示的内容及格式。(b)根据慢日志数据列表中的字段名从慢日志数据列表中提取待审核的sql语句及与sql语句匹配的基本信息。具体的,可在慢日志数据列表中,提取字段名为query,即字段名为执行语句的字段内容作为待审核的sql语句,并根据预设的审核模板中的审核项目,从慢日志数据列表中提取对应的与sql语句匹配的基本信息,例如,预设的审核模板中的审核项目包括执行时间,则从慢日志数据列表中提取字段名为calls及total_time的字段内容作为与sql语句匹配的基本信息。步骤s230,识别并解析sql语句,得到解析结果。具体的,可对从慢日志数据中提取的sql语句进行识别解析,得到可被审核模板识别的解析结果,在本实施例中,解析sql语句后可得到sql树形解析结果,方便按照审核模板中的审核项目对解析结果进行审核。步骤s240,逐一按照预设的审核模板中的审核项目,对解析结果和/或基本信息进行审核,得到审核结果。具体的,预设的审核模板可包括执行计划审核模板及sql语法审核模板。执行计划审核模板是对sql语句的执行计划进行审核,在数据库中,一个sql语句表示想要得到的数据,但是并没有表示如何获取数据,例如,通过一个sql语句,可以取出所有住在深圳的客户.当服务器中的数据库接收到的这条sql的时候,通过计算会选择读取整个客户表还是利用索引进行获取数据,最终sql语句被物理性执行的方法被称为执行计划。执行计划审核模板的审核项目可包括慢查询、高成本操作等。sql语法审核模板是对sql语句本身的语法语义进行审核,sql语法审核模板的审核项目可包括禁止出现重复查询子句、禁止出现select*等。服务器可逐一按照预设的审核模板中的各个审核项目,对解析结果和/或基本信息进行审核,当不满足审核模板中的任一审核项目时,则审核不通过,当全部符合审核模板中的各个审核项目时,则审核通过。步骤s250,根据审核结果生成审核结果集。具体的,可对从慢日志数据中提取的多个sql语句及与各个sql语句匹配的基本信息进行审核,并根据审核结果生成审核结果集,审核结果集可包括审核的sql语句的sql编号、数据库名称、执行时间、命令类型、审核状态、违规项目等内容,并将审核结果集存储在审计数据库中,其中,审核状态表示审核结果,可用0、1等数字或其它的字母、符号等表示审核结果为不通过或是通过。上述sql审核方法,从慢日志数据中提取待审核的sql语句及与sql语句匹配的基本信息,并按照预设的审核模板中的审核项目,对解析sql语句得到的解析结果及与sql语句匹配的基本信息进行审核,通过挖掘分析慢日志数据,能够为数据字典信息不完善的数据库扩展出可进行sql深度审核sql语句及与sql语句匹配的基本信息,使sql审核更具有针对性,并有效提高了sql审核的准确性。如图3所示,在一个实施例中,步骤s240逐一按照预设的审核模板中的审核项目,对解析结果和/或基本信息进行审核,得到审核结果,可包括步骤s302和/或步骤s304:步骤s302,逐一按照执行计划审核模板中的审核项目,提取基本信息中与审核项目匹配的数据进行审核,得到审核结果。具体的,预设的审核模板可包括执行计划审核模板及sql语法审核模板,执行计划审核模板是对sql语句的执行计划进行审核。执行计划审核模板中的审核项目可包括慢查询、高成本操作等项目,其中,慢查询的审核内容为判断sql语句的执行时间是否大于预设的执行时间,例如,执行时间是否大于1s(秒),高成本操作的审核内容为判断sql语句中是否有高成本操作,例如,是否有seqscan(序列扫描)、全表扫描等操作。执行计划审核模板的审核项目所审核的内容一般需要从与sql语句匹配的基本信息中获取,例如,审核执行时间是否大于预设的执行时间,则需要从基本信息中获取执行次数及执行总时间,并求取平均值,即执行时间,审核高成本操作则需要获取基本信息中的执行操作。每个审核项目有唯一对应的审核项目编号,当审核不通过时,可记录不通过的审核项目编号。步骤s304,逐一按照sql语法审核模板中的审核项目,对解析结果进行语法分析,并根据分析结果进行审核,得到审核结果。具体的,sql语法审核模板是对sql语句本身的语法语义进行审核,sql语法审核模板的审核项目可包括禁止使用select*、禁止出现重复查询子句、update禁止出现orderby子句、update必须出现where子句、禁止嵌套select子句、delete必须出现where子句、delete禁止出现orderby子句、delete禁止出现limit子句等。禁止出现重复查询子句的审核项目可提高sql语句的执行效率,update禁止出现orderby子句、delete禁止出现orderby子句及delete禁止出现limit子句的审核项目可防止dml(datamanipulationlanguage,数据操纵语言)过程出现不必要的排序,update必须出现where子句及delete必须出现where子句的审核项目可防止dml过程出现全表锁。可逐一根据sql语法审核模板的各个审核项目对解析得到的sql树形解析结果进行分析审核,并得到审核结果。预设的审核模板中的各个审核项目可对应不同的审核数值,对审核的sql语句进行评分。当审核项目不通过时,则将sql语句的审核总数值扣除不通过的审核项目对应的审核数值,审核结束后,可得到最后的审核数值,通过对sql语句进行评分可清晰地得到sql语句的性能好坏程度。例如,执行计划审核模板中的慢查询及高成本操作分别对应的审核数据为1分、2分,sql语句的审核总数值为100分,若sql语句不符合慢查询的审核项目,则扣除一分,最后的审核数值为99分。在本实施例中,可通过执行计划审核模板及sql语法审核模板对解析sql语句得到的解析结果和/或与sql语句匹配的基本信息逐一进行审核,可对数据字典信息不完善的数据库中的sql进行更深度的审核,使sql审核更具有针对性,并有效提高了sql审核的准确性。如图4所示,在一个实施例中,在步骤s250根据审核结果生成审核结果集之后,还包括以下步骤:步骤s402,提取审核结果集中审核结果为不通过的sql语句建立sql基线。具体的,sql基线用于记录审核结果为不通过的sql语句的相关数据及状态的变化过程,sql基线可包括sql语句内容、sql编号、数据库名称、用户名、审核不通过的审核项目编号、审核状态等,刚建立sql基线时,审核状态为不通过,当数据库管理员对sql语句进行整改后,审核状态可修改为通过。如图5所示,在一个实施例中,步骤s402提取审核结果集中审核结果为不通过的sql语句建立sql基线,包括以下步骤:步骤s502,提取审核结果集中审核结果为不通过的sql语句。步骤s504,获取审核结果为不通过的sql语句的sql编号及不通过的审核项目编号。具体的,可提取审核结果集中审核结果为不通过的sql语句建立sql基线,可从审核结果集中获取审核结果为不通过的sql语句的sql语句内容、sql编号、数据库名称、用户名、审核不通过的审核项目编号等信息。步骤s506,根据sql编号及不通过的审核项目编号判断是否存在匹配的sql基线,若是,则执行步骤s508,若否,则执行步骤s510。具体的,sql语句每个不通过的审核项目可对应于唯一的sql基线,即每个sql基线有唯一对应的sql编号及不通过的审核项目编号,若sql语句不通过的审核项目有多个,则需建立多个对应的sql基线。提取审核结果集中审核结果为不通过的sql语句,并获取sql编号及不通过的审核项目编号后,可先根据sql编号查找审计数据库中是否有对应的sql基线,若有,则再进一步从与sql编号对应的sql基线中,查找是否有与审核项目编号匹配的sql基线,若有,则无需重新建立sql基线,只需将匹配的sql基线的审核状态修改为不通过。步骤s508,将sql基本的状态标记为不通过。步骤s510,根据sql编号及不通过的审核项目编号建立sql基线。具体的,若没有与sql编号及不通过的审核项目编号匹配的sql基线,则根据sql编号及不通过的审核项目编号在审计数据库中建立sql基线,sql基线中的审核状态标记为不通过。步骤s404,分析sql基线得到sql审核数据,并展示sql审核数据。具体的,可每隔预设时间从审计数据库中提取预设时间内新建立的或是状态被重新标记为不通过sql基线,得到sql的审核数据,例如,每隔1小时、3小时等时间,sql的审核数据可包括sql语句内容、sql编号、数据库名称、用户名、审核不通过的审核项目编号等内容,并通过终端进行展示。数据库管理员可根据展示的sql审核数据对sql语句进行整改,使其符合审核项目,整改完成后,可根据整改结果修改sql基线的审核状态,若sql语句审核不通过的审核项目已进行整改,可将与该整改的审核项目编号匹配的sql基线的审核状态标记为通过。在其它的实施例中,可每隔一段时间生成基线报告,例如生成基线日报及基线月报,基线报告中记录有该段时间所有新生成的sql基线,以及变更过审核状态的sql基线,方便数据库管理员了解审计数据库中sql基线的变化。在本实施例中,提取审核结果集中审核结果为不通过的sql语句建立sql基线,可方便数据库管理员对数据库中审核不通过的sql语句进行整改,有效提高sql审核工作的效率,帮助提升数据库的数据处理性能。如图6所示,提供了一种sql审核装置,包括获取模块610、提取模块620、解析模块630、审核模块640及生成模块650。获取模块610,用于获取慢日志数据。具体的,服务器可通过外部链接表的方式,从数据字典信息不完善的目标数据库中获取慢日志数据,例如、mysql、postgres等目标数据库,其中,慢日志数据指的是慢查询日志数据,在数据库中超过指定时间的sql语句查询称为“慢查询”,慢日志数据记录有超过指定时间的sql语句,以及日志时间、存储位置、执行时间、执行者编号等sql语句执行时产生的相关数据。提取模块620,用于从慢日志数据中提取待审核的sql语句及与sql语句匹配的基本信息。具体的,可从获取的慢日志数据中提取待审核的sql语句,以及审核sql语句所需的与待审核的sql语句匹配的基本信息,基本信息可根据预设的审核模板中的审核项目进行提取,基本信息可包括执行次数、执行总时间、执行操作、执行开销等。通过慢日志数据中提取待审核的sql语句,相当于对sql语句进行筛选,根据sql语句的执行时间过滤性能好的sql语句,超过指定时间的性能较差的sql语句则进行审核。如图7所示,在一个实施例中,提取模块620包括列表生成单元622及信息提取单元624。列表生成单元622,用于根据预设格式分析慢日志数据,并生成慢日志数据列表。具体的,可分析慢日志数据并按照预设格式提取慢日志数据中的数据,预设格式可根据实际需求进行设定,例如,预设格式可包括字段名、字段类型、字段内容,则提取慢日志数据中各个字段名,以及与字段名对应的字段类型及字段内容。可根据按照预设格式从慢日志数据提取的数据生成慢日志数据列表,慢日志数据列表的格式内容与预设格式及提取的数据对应,例如,慢日志数据列表可如表1所示,其中,log_time为日志时间,user_name为用户名,database_name为数据库名,userid为用户编号,calls为执行次数,total_time为执行总时间,可以理解地,慢日志数据列表中的内容及格式并不限于表1所示的内容及格式。信息提取单元624,用于根据慢日志数据列表中的字段名从慢日志数据列表中提取待审核的sql语句及与sql语句匹配的基本信息。具体的,可在慢日志数据列表中,提取字段名为query,即字段名为执行语句的字段内容作为待审核的sql语句,并根据预设的审核模板中的审核项目,从慢日志数据列表中提取对应的与sql语句匹配的基本信息,例如,预设的审核模板中的审核项目包括执行时间,则从慢日志数据列表中提取字段名为calls及total_time的字段内容作为与sql语句匹配的基本信息。解析模块630,用于识别并解析sql语句,得到解析结果。具体的,可对从慢日志数据中提取的sql语句进行识别解析,得到可被审核模板识别的解析结果,在本实施例中,解析sql语句后可得到sql树形解析结果,方便按照审核模板中的审核项目对解析结果进行审核。审核模块640,用于逐一按照预设的审核模板中的审核项目,对解析结果和/或基本信息进行审核,得到审核结果。具体的,预设的审核模板可包括执行计划审核模板及sql语法审核模板。执行计划审核模板是对sql语句的执行计划进行审核,在数据库中,一个sql语句表示想要得到的数据,但是并没有表示如何获取数据,例如,通过一个sql语句,可以取出所有住在深圳的客户.当服务器中的数据库接收到的这条sql的时候,通过计算会选择读取整个客户表还是利用索引进行获取数据,最终sql语句被物理性执行的方法被称为执行计划。执行计划审核模板的审核项目可包括慢查询、高成本操作等。sql语法审核模板是对sql语句本身的语法语义进行审核,sql语法审核模板的审核项目可包括禁止出现重复查询子句、禁止出现select*等。服务器可逐一按照预设的审核模板中的各个审核项目,对解析结果和/或基本信息进行审核,当不满足审核模板中的任一审核项目时,则审核不通过,当全部符合审核模板中的各个审核项目时,则审核通过。生成模块650,用于根据审核结果生成审核结果集。具体的,可对从慢日志数据中提取的多个sql语句及与各个sql语句匹配的基本信息进行审核,并根据审核结果生成审核结果集,审核结果集可包括审核的sql语句的sql编号、数据库名称、执行时间、命令类型、审核状态、违规项目等内容,并将审核结果集存储在审计数据库中,其中,审核状态表示审核结果,可用0、1等数字或其它的字母、符号等表示审核结果为不通过或是通过。上述sql审核装置,从慢日志数据中提取待审核的sql语句及与sql语句匹配的基本信息,并按照预设的审核模板中的审核项目,对解析sql语句得到的解析结果及与sql语句匹配的基本信息进行审核,通过挖掘分析慢日志数据,能够为数据字典信息不完善的数据库扩展出可进行sql深度审核sql语句及与sql语句匹配的基本信息,使sql审核更具有针对性,并有效提高了sql审核的准确性。在一个实施例中,审核模块640,还用于逐一按照执行计划审核模板中的审核项目,提取基本信息中与审核项目匹配的数据进行审核,得到审核结果。具体的,预设的审核模板可包括执行计划审核模板及sql语法审核模板,执行计划审核模板是对sql语句的执行计划进行审核。执行计划审核模板中的审核项目可包括慢查询、高成本操作等项目,其中,慢查询的审核内容为判断sql语句的执行时间是否大于预设的执行时间,例如,执行时间是否大于1s,高成本操作的审核内容为判断sql语句中是否有高成本操作,例如,是否有seqscan、全表扫描等操作。执行计划审核模板的审核项目所审核的内容一般需要从与sql语句匹配的基本信息中获取,例如,审核执行时间是否大于预设的执行时间,则需要从基本信息中获取执行次数及执行总时间,并求取平均值,即执行时间,审核高成本操作则需要获取基本信息中的执行操作。每个审核项目有唯一对应的审核项目编号,当审核不通过时,可记录不通过的审核项目编号。和/或审核模块640,还用于逐一按照sql语法审核模板中的审核项目,对解析结果进行语法分析,并根据分析结果进行审核,得到审核结果。具体的,sql语法审核模板是对sql语句本身的语法语义进行审核,sql语法审核模板的审核项目可包括禁止使用select*、禁止出现重复查询子句、update禁止出现orderby子句、update必须出现where子句、禁止嵌套select子句、delete必须出现where子句、delete禁止出现orderby子句、delete禁止出现limit子句等。禁止出现重复查询子句的审核项目可提高sql语句的执行效率,update禁止出现orderby子句、delete禁止出现orderby子句及delete禁止出现limit子句的审核项目可防止dml过程出现不必要的排序,update必须出现where子句及delete必须出现where子句的审核项目可防止dml过程出现全表锁。可逐一根据sql语法审核模板的各个审核项目对解析得到的sql树形解析结果进行分析审核,并得到审核结果。预设的审核模板中的各个审核项目可对应不同的审核数值,对审核的sql语句进行评分。当审核项目不通过时,则将sql语句的审核总数值扣除不通过的审核项目对应的审核数值,审核结束后,可得到最后的审核数值,通过对sql语句进行评分可清晰地得到sql语句的性能好坏程度。例如,执行计划审核模板中的慢查询及高成本操作分别对应的审核数据为1分、2分,sql语句的审核总数值为100分,若sql语句不符合慢查询的审核项目,则扣除一分,最后的审核数值为99分。在本实施例中,可通过执行计划审核模板及sql语法审核模板对解析sql语句得到的解析结果和/或与sql语句匹配的基本信息逐一进行审核,可对数据字典信息不完善的数据库中的sql进行更深度的审核,使sql审核更具有针对性,并有效提高了sql审核的准确性。如图8所示,在一个实施例中,上述sql审核装置,除了包括获取模块610、提取模块620、解析模块630、审核模块640及生成模块650,还包括建立模块660及展示模块670。建立模块660,用于提取审核结果集中审核结果为不通过的sql语句建立sql基线。具体的,sql基线用于记录审核结果为不通过的sql语句的相关数据及状态的变化过程,sql基线可包括sql语句内容、sql编号、数据库名称、用户名、审核不通过的审核项目编号、审核状态等,刚建立sql基线时,审核状态为不通过,当数据库管理员对sql语句进行整改后,审核状态可修改为通过。如图9所示,在一个实施例中,建立模块660包括语句提取单元662、获取单元664及判断单元666。语句提取单元662,用于提取审核结果集中审核结果为不通过的sql语句。获取单元664,用于获取审核结果为不通过的sql语句的sql编号及不通过的审核项目编号。具体的,可提取审核结果集中审核结果为不通过的sql语句建立sql基线,可从审核结果集中获取审核结果为不通过的sql语句的sql语句内容、sql编号、数据库名称、用户名、审核不通过的审核项目编号等信息。判断单元666,用于根据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基线中的审核状态标记为不通过。展示模块670,用于分析sql基线得到sql审核数据,并展示sql审核数据。具体的,可每隔预设时间从审计数据库中提取预设时间内新建立的或是状态被重新标记为不通过sql基线,得到sql的审核数据,例如,每隔1小时、3小时等时间,sql的审核数据可包括sql语句内容、sql编号、数据库名称、用户名、审核不通过的审核项目编号等内容,并通过终端进行展示。数据库管理员可根据展示的sql审核数据对sql语句进行整改,使其符合审核项目,整改完成后,可根据整改结果修改sql基线的审核状态,若sql语句审核不通过的审核项目已进行整改,可将与该整改的审核项目编号匹配的sql基线的审核状态标记为通过。在其它的实施例中,可每隔一段时间生成基线报告,例如生成基线日报及基线月报,基线报告中记录有该段时间所有新生成的sql基线,以及变更过审核状态的sql基线,方便数据库管理员了解审计数据库中sql基线的变化。在本实施例中,提取审核结果集中审核结果为不通过的sql语句建立sql基线,可方便数据库管理员对数据库中审核不通过的sql语句进行整改,有效提高sql审核工作的效率,帮助提升数据库的数据处理性能。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)等。以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1