一种基于自学习方式的关系型数据库查询性能优化方法技术领域
本发明属于企业信息化技术领域,特别是涉及一种基于自学习方式的关
系型数据库查询性能优化方法。
背景技术
数据库的性能一直是程序员比较关心的一个方面。目前,针对数据库性
能的优化方法也是层出不穷,但基本上是总结一些优化规律,程序员写程序
的时候使用优化规律编辑数据库语句,这样可以相对提高数据库性能。但这
对于程序员的水平有很大要求,对于数据库性能的优化也需要不停地调试尝
试思考,比较费时费力。另外,对于SQL语句来讲,查询语句是最常用的一
种语句,而查询语句经常是多层嵌套,多条件查询,执行起来需要查询多个
表并进行计算分析排序等操作,非常费时。
发明内容
为了解决上述问题,本发明的目的在于提供一种基于自学习方式的关系
型数据库查询性能优化方法。
为了达到上述目的,本发明提供的基于自学习方式的关系型数据库查询
性能优化方法包括按顺序执行的下列步骤:
步骤一,规则匹配的S01阶段:首先在系统中录入初始的优化规则、优
化方向和优化步骤而进行系统初始部署,之后系统读取到一条查询语句后,
进行语句分析,并查看现有优化规则是否适用,如果适用,直接优化,如果
不适用,则进入下一阶段;
步骤二,优化预判的S02阶段:分析该语句及可优化方向,进行优化预
判,并优化该语句;
步骤三,结果预测的S03阶段:对上述优化语句进行结果预测而得到预
测结果;
步骤四,执行反馈的S04阶段:执行上述优化语句,并反馈结果;
步骤五,结果分析的S05阶段:将上述执行结果与步骤三得到的预测结
果进行对比,如果对比结果是该语句达到预测结果,则学习此规则,即将此
条语句的优化条件和优化方式记录在优化库中,方便下次遇到相同规则语句
时进行优化;如果未达到预测结果,则舍弃此规则,即不记录在优化库中,
只记录执行日志;
步骤六,记录日志的S06阶段:将本次学习过程中的数据记录日志,以
供下次语句查询使用。
在步骤一中,所述的语句分析是将查询语句进行分析,提炼出关键词、
表名、列名、字段值、运算符等,由此将该语句拆解成词条;所述的优化规
则包括优化条件和优化结果,优化条件为若某种类型词条满足某种条件,则
触发记录有优化方式的优化结果;所述的优化方向是将语句拆解出来的词条
分为几个大的部分;所述的优化步骤为将某些零散的步骤,通过分析优化方
向,提取出可优化步骤并进行排序。
在步骤二中,所述的优化预判的方法是:针对没有优化规则适用的语句,
根据上述语句分析的结果,结合现有的优化方向、优化步骤,以及提取之前
类似的优化结果日志,判断该语句能否优化,哪部分能够优化,得出最可能
的一种优化方式,并利用该优化方式将语句进行优化。
在步骤三中,所述的结果预测的方法是:根据之前已完成的日志和优化
方向对上述优化语句进行结果预测而得到预测结果。
在步骤四中,所述的执行反馈的的方法是:将上述优化语句发送给数据
库执行,并取回执行结果。
在步骤五中,所述的对比结果分为3档,1档为符合预期结果,则学习
此规则,2档为基本符合预期结果,则学习此规则,并将此规则优先级调低,
3档为不符合预期结果,则不学习此规则。
在步骤六中,所述的学习过程中的数据包括分析过程、分析结果、优化
条件、优化过程、优化结果、执行结果在内的数据。
本发明提供的基于自学习方式的关系型数据库查询性能优化方法的效
果:
本发明提供的优化方法在通过一段时间学习后,可以逐步提高数据库查
询语句的执行效率,使信息系统性能增加。如果能够每个查询语句节省0.1
秒,一天假设有10万条查询语句可优化,则可节省166分钟的运算时间,而
对于前台的业务人员,工作效率也随之提升。
附图说明
图1为本发明提供的基于自学习方式的关系型数据库查询性能优化方法
流程图。
具体实施方式
下面结合附图和具体实施例对本发明提供的基于自学习方式的关系型
数据库查询性能优化方法进行详细说明。
如图1所示,本发明提供的基于自学习方式的关系型数据库查询性能优
化方法包括按顺序执行的下列步骤:
步骤一,规则匹配的S01阶段:首先在系统中录入初始的优化规则、优
化方向和优化步骤而进行系统初始部署,之后系统读取到一条查询语句后,
进行语句分析,并查看现有优化规则是否适用,如果适用,直接优化,如果
不适用,则进入下一阶段;
所述的语句分析是将查询语句进行分析,提炼出关键词、表名、列名、
字段值、运算符等,由此将该语句拆解成词条。
所述的优化规则包括优化条件和优化结果,优化条件为若某种类型词条
满足某种条件,则触发记录有优化方式的优化结果;
所述的优化方向是将语句拆解出来的词条分为几个大的部分。比如:若
属于简单语句,则优化方向可以为几个简单语句合并后查询;若属于“SELECT
*”方式,则可将*替换为所有的列名,可避免查询数据字典来寻找表的所有
列名等等。同方向可以有多个规则,比如“SELECT*”优化,不同的表有
不同的列名,这是需要逐渐学习的过程。
所述的优化步骤为将某些零散的步骤,比如排序步骤、替换步骤、计算
步骤等,通过分析优化方向,提取出可优化步骤并进行排序。
步骤二,优化预判的S02阶段:分析该语句及可优化方向,进行优化预
判,并优化该语句;
在本步骤中,针对没有优化规则适用的语句,根据上述语句分析的结果,
结合现有的优化方向、优化步骤,以及提取之前类似的优化结果日志,判断
该语句能否优化,哪部分能够优化,得出最可能的一种优化方式,并利用该
优化方式将语句进行优化;
步骤三,结果预测的S03阶段:对上述优化语句进行结果预测而得到预
测结果;
根据之前已完成的日志和优化方向对上述优化语句进行结果预测而得
到预测结果,作为后续判断使用;
步骤四,执行反馈的S04阶段:执行上述优化语句,并反馈结果;
将上述优化语句发送给数据库执行,并取回执行结果;
步骤五,结果分析的S05阶段:将上述执行结果与步骤三得到的预测结
果进行对比,如果对比结果是该语句达到预测结果,则学习此规则,即将此
条语句的优化条件和优化方式记录在优化库中,方便下次遇到相同规则语句
时进行优化;如果未达到预测结果,则舍弃此规则,即不记录在优化库中,
只记录执行日志;
对比结果分为3档,1档为符合预期结果,则学习此规则,2档为基本符
合预期结果,则学习此规则,并将此规则优先级调低,3档为不符合预期结
果,则不学习此规则。
步骤六,记录日志的S06阶段:将本次学习过程中的数据记录日志,以
供下次语句查询使用。
在本步骤中,所述的学习过程中的数据包括分析过程、分析结果、优化
条件、优化过程、优化结果、执行结果在内的数据。另外,日志会定期在半
夜等非业务高峰期进行归档分类,一方面可以删除重复类似的日志数据,避
免因为日志文件过大导致服务器性能下降,另一方面可以将日志分类归档合
并,方便查询。
此外,在系统初始部署的时候,录入的优化规则比较少,而在渐渐的学
习过程中,优化规则会越来越多,此时有可能会有一条语句同时满足几条对
应优化规则的优化条件,则此时会根据每次学习过程记录的日志及优化规则
的优先级进行可能性分析,使用可能性最高的一项规则进行语句优化。执行
完语句后记录日志,可供下一次优化分析及可能性分析参考。优化过程是一
个迭代过程,每次优化后会再次进行分析,判断是否还有其他方向可优化。
同一优化方向只进行可能性最高的一次优化,其余优化方式将不进行再次优
化。
在执行本发明提供的基于自学习方式的关系型数据库查询性能优化方
法的初始阶段,可能会因为优化规则较少,语句需要优化预判的较多,导致
系统性能反而略微下降,但是只是优化服务器所在的本地资源消耗增大,对
于数据库服务器来说,资源消耗并没有增加,而且随着学习的优化规则越来
越多,效率的提升也越来越明显。
所述的优化方法可支持将学习的优化规则导出,可以导入新的优化系
统,可以人为将优化规则再次进行逻辑优化。可以导入新的优化方向和优化
步骤,以便系统学习到更多的优化方法。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限
于此,任何熟悉本技术领域的技术人员在本发明展示的技术范围内,未进行
创新所进行的同等替换或更改,都应涵盖在本发明的保护范围之内。
本发明提供的基于自学习方式的关系型数据库查询性能优化方法可以
实现系统通过自学习掌握数据库查询语句优化规则,逐步提高数据库的查询
效率。可以实现自动数据库性能优化并学习规则,节约程序员的时间和精力。