[发明专利]一种数据库查询优化系统及方法在审
申请号: | 201710107320.0 | 申请日: | 2017-02-27 |
公开(公告)号: | CN106919678A | 公开(公告)日: | 2017-07-04 |
发明(设计)人: | 彭凯;李俊峰;马威 | 申请(专利权)人: | 武汉珞佳伟业科技有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京轻创知识产权代理有限公司11212 | 代理人: | 杨立,李蕾 |
地址: | 430000 湖北省武汉市东湖*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 数据库 查询 优化 系统 方法 | ||
技术领域
本发明涉及数据库查询技术领域,特别涉及一种数据库查询优化系统及方法。
背景技术
随着信息化和互联网技术的发展,企业信息系统越来越多地参与到企业的管理当中。高效的管理大批量数据对于大多数的计算机应用领域都是至关重要的。数据库管理系统是使得单个或多个用户可以方便有效地管理并操纵大量数据的系统软件,它作为数据处理和管理的标准工具,已经逐步成为现代信息系统的基础和核心。为了使信息系统能够在各领域中稳定、高效的运行,其中最重要方面之一就是保证数据库的访问性能。可在信息和数据量激增的当下,网络间数据传输繁忙,信息系统的数据库数据访问量也变的越来越大,数据库系统性能开始下降,严重时甚至影响到相关的应用系统。这些对信息系统的数据库访问性能造成了很大的压力,数据库的效率的要求也变得越来越高,普通的数据库技术己不能快速、高效的完成与服务器数据库的数据交互。
查询是数据库系统中最基本和常用的一种操作,查询是否具有较高的执行速度,已成为数据库用户和设计者极其关心的问题。为了提高数据库系统的性能,对查询进行优化是必不可少的,现今大型商业数据库管理系统的成功很大程度上要归功于查询优化技术的发展和应用。但现有的查询优化主要是采用人工调优,数据库管理系统向数据库管理员提供一些可调的资源参数,数据库管理员根据经验和当前负载特征,调整这些资源参数,以达到查询优化的目的;其需要消耗人力,且优化效果取决于数据库管理员的经验,不能获得有效保证。
发明内容
本发明所要解决的技术问题是提供一种动态自动调优的数据库查询优化系统及方法。
本发明解决上述技术问题的技术方案如下:
一种数据库查询优化系统,包括select语法优化模块、join语法优化模块、where子句优化模块和聚合函数优化模块;
所述select语法优化模块,其用于查询待优化sql语句是否包含select*语法;是,则根据所述待优化sql语句的查询需求,将所述select*语法中的*替换为查询目标字段,再驱动join语法优化模块工作;否,则直接驱动join语法优化模块工作;
所述join语法优化模块,其用于查询所述待优化sql语句是否包含join语法;是,则对所述join语法所连接的表的列建立索引,再驱动where子句优化模块工作;否,则直接驱动where子句优化模块工作;
所述where子句优化模块,其用于查询所述待优化sql语句是否包含where子句;是,则对所述where子句进行优化,再驱动聚合函数优化模块工作;否,则直接驱动聚合函数优化模块工作;
所述聚合函数优化模块,其用于查询所述待优化sql语句是否包含聚合函数;是,则在所述聚合函数所操作的列创建索引,再结束操作;否,则直接结束操作。
本发明的有益效果是:提供一个数据库查询优化系统,对查询时间长,查询效率低的sql语句进行重写,以及对此sql语句所涉及的需要筛选或排序的列建立索引,实现sql语句的动态自调优,保证优化效果,且优化后不影响查询结果,有效减少查询时间,提高查询效率。
在上述技术方案的基础上,本发明还可以做如下改进。
进一步,所述系统还包括查询模块;
所述查询模块,其用于查询数据库慢查询日志,根据各sql语句的查询时间和效率,获取所述待优化sql语句。
采用上述进一步方案的有益效果是:自动查询需要优化的sql语句,进一步实现sql语句的动态自调优。
进一步,所述join语法优化模块包括主键索引创建单元和外键索引创建单元;
所述主键索引创建单元,其用于查询所述join语法所连接的表的主键是否有索引;是,则直接驱动外键索引创建单元工作;否,则在所述主键上创建索引,再驱动外键索引创建单元工作;
所述外键索引创建单元,其用于查询所述join语法所连接的表的外键是否有索引;是,则直接驱动where子句优化模块工作;否,则在所述外键上创建索引,再驱动where子句优化模块工作。
采用上述进一步方案的有益效果是:在join语法所连接的表的主键和外键上分别创建索引,进一步提高查询效率。
进一步,所述where子句优化模块对所述where子句进行优化包括:如果所述where子句包含NOT操作符,则对所述NOT操作符进行重写,如果所述待优化sql语句的查询结果的数据量超过预设值,则在所述where子句所筛选的列创建索引,如果所述待优化sql语句包含order by子句,则在所述order by子句所指向的有序列上创建索引;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于武汉珞佳伟业科技有限公司,未经武汉珞佳伟业科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710107320.0/2.html,转载请声明来源钻瓜专利网。