本发明专利技术公开了一种结构化查询语言(SQL)性能优化方法,包括:预先配置SQL参数,所述方法还包括:调用SQL参数,根据SQL参数查询问题SQL,查询到问题SQL时对问题SQL进行告警;根据告警对问题SQL进行SQL优化建议;驻留SQL优化建议。本发明专利技术同时还公开了一种SQL性能优化系统。
【技术实现步骤摘要】
本专利技术涉及数据库管理领域,尤其涉及一种结构化查询语言(SQL,Structured Query Language)性能优化方法及系统。
技术介绍
在数据库环境中,特别是关系型数据库中,会使用SQL语句。在数据库系统运行中,经常会出现SQL性能差的情况,从而导致如下诸多问题:首先,发现性能较差的问题SQL的方法尚待改进。现有技术中主要通过前台使用业务系统的人员反映运行速度慢、或者系统层面的中央处理器(CPU,Central Processing Unit)等指标进行告警的方法来发现性能较差的问题SQL。这种方式的缺陷是:由于只有当业务高峰时使用所述方法才能发现问题SQL,所以发现时通常问题SQL已经运行了一段时间,因此,贻误了降低系统被SQL的性能负面影响的时机。其次,发现问题SQL后如何处理也存在需要改进的地方。例如,发现问题SQL后,需要对其进行详细而耗时的人工分析测试。其中一种问题SQL由于执行计划错误而导致执行效率低,诸如执行计划应该采用索引而采用了全表扫描,应该采用哈希连接而采用了嵌套循环等。针对这类执行性能低的问题SQL,目前现有技术中解决此类问题的常用技术方案有两种:现有技术方案一:通过程序进行优化,主要为语法的优化,添加SQL使用特定执行计划(如使用某个索引)的提示(HINT),而程序的优化意味着需要重新开发程序,发布版本才能实现。现有技术方案二:重新分析表的统计信息,从而保证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优化执行计划后,将所述SQL优化执行计划保存至所述优化建议日志表。上述方案中,所述优化建议驻留模块包括:第二数据获取单元,用于扫描所述优化建议日志表,获取第二优化建议日志数据并保存至优化配置日志表;及扫描所述优化配置日志表,获取优化配置日志数据;驻留单元,用于当所述优化配置日志数据包括所述SQL优化执行计划时,驻留所述SQL优化执行计划;或当所述优化配置日志数据包括手工优化配置时,驻留所述手工优化配置。本专利技术实施例所提供的本文档来自技高网...
【技术保护点】
一种结构化查询语言SQL性能优化方法,其特征在于,预先配置SQL参数,所述方法还包括:调用所述SQL参数,根据所述SQL参数查询问题SQL,查询到所述问题SQL时对所述问题SQL进行告警;根据所述告警对所述问题SQL进行SQL优化建议;驻留所述SQL优化建议。
【技术特征摘要】
1.一种结构化查询语言SQL性能优化方法,其特征在于,预先配置SQL参数,所述方法还包括:调用所述SQL参数,根据所述SQL参数查询问题SQL,查询到所述问题SQL时对所述问题SQL进行告警;根据所述告警对所述问题SQL进行SQL优化建议;驻留所述SQL优化建议。2.根据权利要求1所述的方法,其特征在于,所述SQL参数包括:SQL告警参数和SQL优化建议参数。3.根据权利要求1或2所述的方法,其特征在于,所述根据所述SQL参数查询问题SQL,查询到问题SQL时对所述问题SQL进行告警包括:根据所述SQL告警参数查询到所述问题SQL后,将第一日常告警数据保存至告警日志表;或,基于所述SQL参数采用其它渠道查询到所述问题SQL后,将第二日常告警数据保存至所述告警日志表;或,基于所述SQL参数采用其它渠道查询到所述问题SQL后,将紧急告警数据保存至所述告警日志表。4.根据权利要求3所述的方法,其特征在于,所述根据所述告警对所述问题SQL进行SQL优化建议包括:扫描所述告警日志表,获取告警日志数据并保持至优化建议日志表;扫描所述优化建议日志表,获取第一优化建议日志数据;当所述第一优化建议日志数据包括所述第一日常告警数据或所述第二日常告警数据时,判断是否对所述问题SQL进行优化建议;其中,确定对所述问题SQL进行所述优化建议时,生成调优任务,执行所述调优任务并生成SQL优化执行计划后,将所述SQL优化执行计划保存至所述优化建议日志表;确定不对所述问题SQL进行所述优化建议时,将判断结果保存至所述优化建议日志表;
\t或,当所述第一优化建议日志数据包括所述紧急告警数据时,生成所述调优任务,执行所述调优任务并生成所述SQL优化执行计划后,将所述SQL优化执行计划保存至所述优化建议日志表。5.根据权利要求4所述的方法,其特征在于,所述驻留所述SQL优化建议包括:扫描所述优化建议日志表,获取第二优化建议日志数据并保存至优化配置日志表;扫描所述优化配置日志表,获取优化配置日志数据;当所述优化配置日志数据包括所述SQL优化执行计划时,驻留所述SQL优化执行计划;或当所述优化配置日志数据包括手工优化配置时,驻留所述手工优化配置。6.一种SQL性能优化系统,其特征在于,所述系统包括:参数配置模块,用...
【专利技术属性】
技术研发人员:芦薇,
申请(专利权)人:中国移动通信集团河北有限公司,
类型:发明
国别省市:河北;13
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。