一种数据库代码的检查装置和方法.pdf

上传人:a2 文档编号:1302014 上传时间:2018-04-14 格式:PDF 页数:9 大小:569.61KB
返回 下载 相关 举报
摘要
申请专利号:

CN201611218287.0

申请日:

2016.12.26

公开号:

CN106844497A

公开日:

2017.06.13

当前法律状态:

实审

有效性:

审中

法律详情:

实质审查的生效IPC(主分类):G06F 17/30申请日:20161226|||公开

IPC分类号:

G06F17/30; G06F11/36

主分类号:

G06F17/30

申请人:

努比亚技术有限公司

发明人:

程文星

地址:

518000 广东省深圳市南山区高新区北环大道9018号大族创新大厦A区6-8层、10-11层、B区6层、C区6-10层

优先权:

专利代理机构:

北京安信方达知识产权代理有限公司 11262

代理人:

韩辉峰;李丹

PDF下载: PDF下载
内容摘要

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

权利要求书

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

说明书

一种数据库代码的检查装置和方法

技术领域

本发明涉及网络数据库技术领域,尤指一种数据库代码的检查装置和方法。

背景技术

结构化查询语言(Structured Query Language,SQL)是一种数据库查询和程序设
计语言,用于存取数据以及查询、更新和管理关系型数据库系统,现有的关系型数据库包括
Oracle、DB2、SQL Server、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中选择使用的索引,如果为空,说明
没有使用索引。当返回结果里包括Using filesort和Using temporary字段时,表示数据库
根本不能使用索引,效率会受到重大影响,应尽可能对此进行优化,其中,Using filesort
表示会对结果使用一个外部索引排序,而不是从表里按索引次序读到相关内容,可能在内
存或者磁盘上进行排序;Using temporary表示在对查询结果排序时使用临时表。因此,当
EXPLAIN的返回结果中出现possible_keys字段为空、key字段为空、包括Using filesort字
段或包括Using temporary字段中的任意一种时,认为对应的数据表没有设置索引或索引
设置不合理。

如图2所示,根据本发明的数据库代码的检查装置的第二实施例,包括日志模块、
过滤模块和分析模块,其中,

日志模块,用于开启数据库的日志,拉取数据库的日志文件并复制到备份文件中;

过滤模块,用于使用预先设定的规则,对备份文件中的语句进行过滤;

分析模块,用于对备份文件中过滤后的语句进行索引分析,得到数据库中没有设
置索引或索引设置不合理的数据表。

可选地,过滤模块预先设定的规则,包括不需要检查的数据表、表数据量的检查阈
值、调用频率阈值或无需检查的语句中的至少一种。例如,如果设置了不需要检查的数据表
为a,则过滤模块将所有只调用数据表a的SQL语句,从备份文件中删除掉;如果设置了表数
据量的检查阈值为10000条,则过滤模块将表数据量小于10000条的数据表的SQL语句,从备
份文件中删除掉;如果设置了调用频率阈值为10次/分钟,则过滤模块将调用频率小于10
次/分钟的SQL语句,从备份文件中删除掉;如果设置了无需检查的语句为CREATE TABLE,则
过滤模块将包含CREATE TABLE命令的SQL语句,从备份文件中删除掉。

如图3所示,根据本发明的数据库代码的检查装置的第三实施例,还包括统计模
块,其中,

分析模块,还用于将没有设置索引或索引设置不合理的数据表输出至统计模块,

统计模块,用于对没有设置索引或索引设置不合理的数据表,按照预设的属性进
行统计。

可选地,上述预设的属性包括表使用频率、表数据量、是否慢查询等属性中的至少
一种。

可选地,统计模块将统计后的结果存储在后台管理系统中。

可选地,统计模块还将统计后的结果,定时通过邮件发送至各数据表对应的项目
开发负责人。各数据表对应的项目开发负责人,在收到邮件后,对统计结果进行排查,若无
需优化的,可在后台管理系统中设置该数据表为不需要检查的表,这样,后续过滤模块将过
滤该数据表的SQL语句,从而使得分析模块和统计模块不再对该数据表进行分析和统计。

本发明的数据库代码的检查装置,基于现有的数据库日志和索引分析技术,通过
拉取数据库日志,对数据库日志中的SQL语句进行索引分析,检测开发代码中的数据库是否
设置了合理的表索引;进一步地,通过预先设定的规则对数据库日志中的SQL语句进行过
滤,灵活控制了检测范围,减少了误判断的情况;进一步地,在需要时,本发明对索引分析的
结果进行进一步统计,对项目开发人员进行预警,降低了故障风险。

如图4所示,根据本发明的数据库代码的检查方法的第一实施例,包括如下步骤:

开启数据库的日志,拉取数据库的日志文件并复制到备份文件中;

对备份文件中的语句进行索引分析,得到数据库中没有设置索引或索引设置不合
理的数据表。

可选地,所开启的数据库的日志为查询日志。查询日志,用于记录建立的客户端连
接和执行的语句。在MySQL数据库中,用--log[=日志文件名]或-l[日志文件名]命令启动
查询日志,如果没有给定日志文件名的值,默认日志文件名是host_name.log。MySQL数据库
开启查询日志后,用户可以在日志文件中,查看MySQL数据库中所执行的SQL语句。

可选地,通过定时执行脚本,拉取数据库的日志文件。例如,可以使用linux系统的
定时执行脚本,定时拉取数据库的日志文件。

可选地,使用文本传输协议(FTP)或简单文本传输协议(TFTP),将拉取的日志文件
复制到备份文件中。

可选地,当数据库为MYSQL时,使用EXPLAIN命令对过滤后的语句进行索引分析,得
到数据库中没有设置索引或索引设置不合理的表。EXPLAIN的返回结果中包括多个字段,其
中,possible_keys字段指出能在该表中使用哪些索引有助于查询,如果为空,说明没有可
用的索引;key字段指出实际从possible_keys中选择使用的索引,如果为空,说明没有使用
索引。当返回结果里包括Using filesort和Using temporary字段时,表示数据库根本不能
使用索引,效率会受到重大影响,应尽可能对此进行优化,其中,Using filesort表示会对
结果使用一个外部索引排序,而不是从表里按索引次序读到相关内容,可能在内存或者磁
盘上进行排序;Using temporary表示在对查询结果排序时使用临时表。因此,当EXPLAIN的
返回结果中出现possible_keys字段为空、key字段为空、包括Using filesort字段或包括
Using temporary字段中的任意一种时,认为对应的数据表没有设置索引或索引设置不合
理。

如图5所示,根据本发明的数据库代码的检查方法的第二实施例,包括如下步骤:

开启数据库的日志,拉取数据库的日志文件并复制到备份文件中;

使用预先设定的规则,对备份文件中的语句进行过滤;

对备份文件中过滤后的语句进行索引分析,得到数据库中没有设置索引或索引设
置不合理的数据表。

可选地,预先设定的规则,包括不需要检查的数据表、表数据量的检查阈值、调用
频率阈值或无需检查的语句中的至少一种。例如,如果设置了不需要检查的数据表为a,则
将所有只调用数据表a的SQL语句,从备份文件中删除掉;如果设置了表数据量的检查阈值
为10000条,则将表数据量小于10000条的数据表的SQL语句,从备份文件中删除掉;如果设
置了调用频率阈值为10次/分钟,则将调用频率小于10次/分钟的SQL语句,从备份文件中删
除掉;如果设置了无需检查的语句为CREATE TABLE,则将包含CREATE TABLE命令的SQL语
句,从备份文件中删除掉。

如图6所示,根据本发明的数据库代码的检查方法的第三实施例,还包括:对没有
设置索引或索引设置不合理的数据表,按照预设的属性进行统计。

可选地,上述预设的属性包括表使用频率、表数据量或是否慢查询等属性中的至
少一种。

可选地,本发明的数据库代码的检查方法,将统计后的结果存储在后台管理系统
中。

可选地,本发明的数据库代码的检查方法,还将统计后的结果定时通过邮件,发送
至各数据表对应的项目开发负责人。各数据表对应的项目开发负责人,在收到邮件后,对统
计结果进行排查,若无需优化的,可在后台管理系统中设置该数据表为不需要检查的表,这
样,后续将不再对该数据表的SQL语句,进行分析和统计。

本发明的数据库代码的检查方法,基于现有的数据库日志和索引分析技术,通过
拉取数据库日志,对数据库日志中的SQL语句进行索引分析,检测开发代码中的数据库是否
设置了合理的表索引;进一步地,本发明通过预先设定的规则对数据库日志中的SQL语句进
行过滤,灵活控制了检测范围,减少了误判断的情况;进一步地,在需要时,本发明对索引分
析的结果进行进一步统计,在需要时,对项目开发人员进行预警,降低了故障风险。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排
他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而
且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有
的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该
要素的过程、方法、物品或者装置中还存在另外的相同要素。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方
法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下
前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做
出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质
(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服
务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发
明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技
术领域,均同理包括在本发明的专利保护范围内。

一种数据库代码的检查装置和方法.pdf_第1页
第1页 / 共9页
一种数据库代码的检查装置和方法.pdf_第2页
第2页 / 共9页
一种数据库代码的检查装置和方法.pdf_第3页
第3页 / 共9页
点击查看更多>>
资源描述

《一种数据库代码的检查装置和方法.pdf》由会员分享,可在线阅读,更多相关《一种数据库代码的检查装置和方法.pdf(9页珍藏版)》请在专利查询网上搜索。

本发明公开了一种数据库代码的检查装置和方法,包括日志模块,用于开启数据库的日志,拉取数据库的日志文件并复制到备份文件中;分析模块,用于对备份文件中的语句进行索引分析,得到数据库中没有设置索引或索引设置不合理的数据表。可选地,还包括过滤模块,用于使用预先设定的规则,对备份文件中的语句进行过滤。可选地,还包括统计模块,用于对没有设置索引或索引设置不合理的数据表,按照预设的属性进行统计。本发明通过对数据。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1