一种数据库代码的检查装置和方法制造方法及图纸

技术编号:15639435 阅读:54 留言:0更新日期:2017-06-15 23:31
本发明专利技术公开了一种数据库代码的检查装置和方法,包括日志模块,用于开启数据库的日志,拉取数据库的日志文件并复制到备份文件中;分析模块,用于对备份文件中的语句进行索引分析,得到数据库中没有设置索引或索引设置不合理的数据表。可选地,还包括过滤模块,用于使用预先设定的规则,对备份文件中的语句进行过滤。可选地,还包括统计模块,用于对没有设置索引或索引设置不合理的数据表,按照预设的属性进行统计。本发明专利技术通过对数据库日志中的SQL语句进行索引分析,检查开发代码中的数据库是否设置了合理的表索引;通过预先设定的规则,灵活控制检测范围;并在需要时,对项目开发人员进行预警,降低故障风险。

【技术实现步骤摘要】
一种数据库代码的检查装置和方法
本专利技术涉及网络数据库
,尤指一种数据库代码的检查装置和方法。
技术介绍
结构化查询语言(StructuredQueryLanguage,SQL)是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系型数据库系统,现有的关系型数据库包括Oracle、DB2、SQLServer、Sybase、MySQL等。随着关系型数据库应用的日益广泛,越来越多的数据需要存储及访问。数据库索引好比是一本书前面的目录,如果合理设置索引,能加快数据库的查询速度;如果没有设置索引或索引设置不合理,则会降低数据库的查询效率,而且,当数据库的数据访问量达到几十万甚至更多时,就会出现数据库的瓶颈问题,严重的可能造成数据库资源耗尽,造成系统应用崩溃。因此,在系统应用开发过程中,如何检测开发代码中的数据库是否设置了合理的表索引,进而对开发人员进行预警,具有非常重要的实际意义。
技术实现思路
为了解决上述技术问题,本专利技术提供了一种数据库代码的检查装置和方法,能够及时检测开发代码中的数据库是否设置了合理的表索引。为了达到本专利技术目的,本专利技术实施例的技术方案是这样实现的:一种数据库代码的检查装置,包括日志模块和分析模块,其中,日志模块,用于开启数据库的日志,拉取数据库的日志文件并复制到备份文件中;分析模块,用于对备份文件中的语句进行索引分析,得到数据库中没有设置索引或索引设置不合理的数据表。进一步地,本专利技术实施例的数据库代码的检查装置,还包括过滤模块,其中,过滤模块,用于使用预先设定的规则,对备份文件中的语句进行过滤;所述分析模块,用于对所述备份文件中过滤后的语句进行索引分析,得到数据库中没有设置索引或索引设置不合理的数据表。进一步地,所述预先设定的规则包括:不需要检查的数据表、表数据量的检查阈值、调用频率阈值或无需检查的语句中的至少一种。进一步地,本专利技术实施例的数据库代码的检查装置,还包括统计模块,其中,所述分析模块,还用于将所述没有设置索引或索引设置不合理的数据表输出至统计模块;统计模块,用于对所述没有设置索引或索引设置不合理的数据表,按照预设的属性进行统计。进一步地,所述预设的属性包括:表使用频率、表数据量或是否慢查询属性中的至少一种。一种数据库代码的检查方法,包括:开启数据库的日志,拉取数据库的日志文件并复制到备份文件中;对备份文件中的语句进行索引分析,得到数据库中没有设置索引或索引设置不合理的数据表。进一步地,本专利技术实施例的数据库代码的检查方法,还包括:在对备份文件中的语句进行索引分析前,使用预先设定的规则,对备份文件中的语句进行过滤。进一步地,所述预先设定的规则,包括不需要检查的数据表、表数据量的检查阈值、调用频率阈值或无需检查的语句中的至少一种。进一步地,本专利技术实施例的数据库代码的检查方法,还包括:对所述没有设置索引或索引设置不合理的数据表,按照预设的属性进行统计。进一步地,所述预设的属性包括表使用频率、表数据量或是否慢查询属性中的至少一种。本专利技术提供的数据库代码的检查装置和方法,基于现有的数据库日志和索引分析技术,通过拉取数据库日志,对数据库日志中的SQL语句进行索引分析,检测开发代码中的数据库是否设置了合理的表索引;进一步地,本专利技术中通过预先设定的规则对数据库日志中的SQL语句进行过滤,灵活控制了检测范围,减少了误判断的情况;进一步地,在需要时,本专利技术对索引分析的结果进行进一步统计,对项目开发人员进行预警,降低了故障风险。附图说明此处所说明的附图用来提供对本专利技术的进一步理解,构成本申请的一部分,本专利技术的示意性实施例及其说明用于解释本专利技术,并不构成对本专利技术的不当限定。在附图中:图1为本专利技术的数据库代码的检查装置的第一实施例的结构示意图;图2为本专利技术的数据库代码的检查装置的第二实施例的结构示意图;图3为本专利技术的数据库代码的检查装置的第三实施例的结构示意图;图4为本专利技术的数据库代码的检查方法的第一实施例的流程示意图;图5为本专利技术的数据库代码的检查方法的第二实施例的流程示意图;图6为本专利技术的数据库代码的检查方法的第三实施例的流程示意图。具体实施方式下面将结合附图及实施例对本专利技术的技术方案进行更详细的说明。如图1所示,根据本专利技术的数据库代码的检查装置的第一实施例,包括日志模块和分析模块,其中,日志模块,用于开启数据库的日志,拉取数据库的日志文件并复制到备份文件中;分析模块,用于对备份文件中的语句进行索引分析,得到数据库中没有设置索引或索引设置不合理的数据表。可选地,日志模块开启的数据库的日志为查询日志。数据库常见的日志类型包括:错误日志、二进制日志、查询日志、慢查询日志和更新日志;其中查询日志,用于记录建立的客户端连接和执行的语句;慢查询日志,用于记录执行时间超过预设的慢查询时间的所有查询或不使用索引的查询。在MySQL数据库中,用--log[=日志文件名]或-l[日志文件名]命令启动查询日志。如果没有给定日志文件名的值,默认日志文件名是host_name.log。MySQL数据库开启查询日志后,用户可以在日志文件中,查看MySQL数据库中所执行的SQL语句。用-log-slow-queries命令启动慢查询日志。可选地,日志模块通过定时执行脚本,拉取数据库的日志文件。例如,日志模块可以使用linux系统的定时执行脚本,定时拉取数据库的日志文件。可选地,日志模块使用文本传输协议(FTP)或简单文本传输协议(TFTP),将拉取的日志文件复制到备份文件中。可选地,当数据库为MYSQL时,分析模块使用EXPLAIN命令对过滤后的语句进行索引分析,得到数据库中没有设置索引或索引设置不合理的表。EXPLAIN的返回结果中包括多个字段,其中,possible_keys字段指出能在该表中使用哪些索引有助于查询,如果为空,说明没有可用的索引;key字段指出实际从possible_keys中选择使用的索引,如果为空,说明没有使用索引。当返回结果里包括Usingfilesort和Usingtemporary字段时,表示数据库根本不能使用索引,效率会受到重大影响,应尽可能对此进行优化,其中,Usingfilesort表示会对结果使用一个外部索引排序,而不是从表里按索引次序读到相关内容,可能在内存或者磁盘上进行排序;Usingtemporary表示在对查询结果排序时使用临时表。因此,当EXPLAIN的返回结果中出现possible_keys字段为空、key字段为空、包括Usingfilesort字段或包括Usingtemporary字段中的任意一种时,认为对应的数据表没有设置索引或索引设置不合理。如图2所示,根据本专利技术的数据库代码的检查装置的第二实施例,包括日志模块、过滤模块和分析模块,其中,日志模块,用于开启数据库的日志,拉取数据库的日志文件并复制到备份文件中;过滤模块,用于使用预先设定的规则,对备份文件中的语句进行过滤;分析模块,用于对备份文件中过滤后的语句进行索引分析,得到数据库中没有设置索引或索引设置不合理的数据表。可选地,过滤模块预先设定的规则,包括不需要检查的数据表、表数据量的检查阈值、调用频率阈值或无需检查的语句中的至少一种。例如,如果设置了不需要检查的数据表为a,则过滤模块将所有只调本文档来自技高网...
一种数据库代码的检查装置和方法

【技术保护点】
一种数据库代码的检查装置,其特征在于,包括日志模块和分析模块,其中,日志模块,用于开启数据库的日志,拉取数据库的日志文件并复制到备份文件中;分析模块,用于对备份文件中的语句进行索引分析,得到数据库中没有设置索引或索引设置不合理的数据表。

【技术特征摘要】
1.一种数据库代码的检查装置,其特征在于,包括日志模块和分析模块,其中,日志模块,用于开启数据库的日志,拉取数据库的日志文件并复制到备份文件中;分析模块,用于对备份文件中的语句进行索引分析,得到数据库中没有设置索引或索引设置不合理的数据表。2.根据权利要求1所述的数据库代码的检查装置,其特征在于,还包括过滤模块,其中,过滤模块,用于使用预先设定的规则,对备份文件中的语句进行过滤;所述分析模块,用于对所述备份文件中过滤后的语句进行索引分析,得到数据库中没有设置索引或索引设置不合理的数据表。3.根据权利要求2所述的数据库代码的检查装置,其特征在于,所述预先设定的规则包括:不需要检查的数据表、表数据量的检查阈值、调用频率阈值或无需检查的语句中的至少一种。4.根据权利要求1所述的数据库代码的检查装置,其特征在于,还包括统计模块,其中,所述分析模块,还用于将所述没有设置索引或索引设置不合理的数据表输出至统计模块;统计模块,用于对所述没有设置索引或索引设置不合理的数据表,按照预设的属性进行...

【专利技术属性】
技术研发人员:程文星
申请(专利权)人:努比亚技术有限公司
类型:发明
国别省市:广东,44

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

1