CN105989137A - 一种结构化查询语言性能优化方法及系统 - Google Patents
一种结构化查询语言性能优化方法及系统 Download PDFInfo
- Publication number
- CN105989137A CN105989137A CN201510089605.7A CN201510089605A CN105989137A CN 105989137 A CN105989137 A CN 105989137A CN 201510089605 A CN201510089605 A CN 201510089605A CN 105989137 A CN105989137 A CN 105989137A
- Authority
- CN
- China
- Prior art keywords
- sql
- alarm
- optimizing suggestions
- parameter
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Alarm Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种结构化查询语言(SQL)性能优化方法,包括:预先配置SQL参数,所述方法还包括:调用SQL参数,根据SQL参数查询问题SQL,查询到问题SQL时对问题SQL进行告警;根据告警对问题SQL进行SQL优化建议;驻留SQL优化建议。本发明同时还公开了一种SQL性能优化系统。
Description
技术领域
本发明涉及数据库管理领域,尤其涉及一种结构化查询语言(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性能问题的解决时间,降低程序紧急发布不能充分测试带来的风险。而且,对问题SQL的日常优化方法可以自动优化所述问题SQL,降低了运维人员的成本;同时,对问题SQL的紧急优化方法加快了影响系统关键业务运行的问题SQL解决时间,降低了业务服务中断时间,有利于提高客户满意度。
附图说明
图1为本发明实施例1提供的SQL性能优化方法的流程示意图;
图2为图1中步骤120的细化处理流程示意图;
图3为图1中步骤130的细化处理流程示意图;
图4为图1中步骤140的细化处理流程示意图;
图5为本发明实施例2至6提供的SQL性能优化方法的流程示意图;
图6为本发明实施例7提供的SQL性能优化系统的结构示意图。
具体实施方式
本发明实施例中,由所述SQL性能优化系统查询到问题SQL后,对所述问题SQL进行日常告警或紧急告警,之后对所述问题SQL进行SQL优化建议并存储所述SQL优化建议。
下面结合附图及具体实施例对本发明再做进一步详细的说明。
实施例1
图1为本发明实施例1提供的SQL性能优化方法的实现流程示意图,图2至图4为图1中步骤120至140的细化处理流程示意图。如图1所示,所述方法包括:
步骤110:预先配置SQL参数;
在本步骤中,所述SQL参数包括:SQL告警参数和SQL优化建议参数;所述SQL参数可由SQL性能优化系统中参数配置模块的参数配置单元预先进行配置。
所述SQL告警参数被所述参数配置单元预先配置在SQL告警参数表(ALERT_PARAMETER)中;所述SQL告警参数主要包括:告警开始时间、告警结束时间、告警时间间隔、告警关键指标1、告警关键指标2、告警关键指标3、告警SQL数量限制、告警关键字1、告警关键字2、是否重复告警及重启告警时间间隔。其中,部分所述SQL告警参数被默认为缺省值,包括:告警开始时间、告警结束时间、告警时间间隔、告警关键指标1、告警SQL数量限制、告警关键字1、是否重复告警及重启告警时间间隔。这里,为了提高告警处理及时性,所述告警开始时间为早8:00点,所述告警结束时间为晚8:00点。为了及时发现问题,所述告警时间间隔默认为5分钟;所述告警关键指标1默认为CPU;所述告警SQL数量限制默认为20条;所述关键告警字1默认且只能为SQL标识(SQL_ID),也即SQL的唯一标识;所述是否重复告警默认为不重复告警;所述重启告警时间间隔默认为1个月,具体可以参照业务系统新需求上线和SQL告警参数表的数据发生变化的周期(如增加分区,历史数据清除等)及SQL的执行效率可能发生变化的周期来进行重新设置。
所述SQL优化建议参数被所述参数配置单元预先配置在SQL优化建议参数表(ADVICE_PARAMTER)中;所述SQL优化建议参数主要包括:优化开始时间、优化结束时间、优化建议最大条数及是否接受优化建议。其中,部分所述SQL优化建议参数被默认为缺省值,包括:优化开始时间、优化结束时间、优化建议最大条数及是否接受优化建议。这里,为了降低优化建议对系统性能的影响,所述优化开始时间为当天晚10:00点,所述优化结束时间为次日早7:00点;所述优化建议最大条数默认为20条,并且不能超过100条;所述是否接受优化建议默认为接受优化建议。
由此可知,所述参数配置单元可以配置问题SQL的告警关键指标、告警关键字、告警开始时间、告警结束时间、优化开始时间和优化结束时间等,有助于运维人员能够更好的控制系统资源对问题SQL的性能进行分析,同时针对系统运行情况有针对性的分析相关资源消耗多的SQL,达到了对问题SQL性能的可知和可控的目的。
步骤120:调用SQL参数,根据所述SQL参数查询问题SQL,查询到问题SQL时对问题SQL进行告警。
本步骤中,所述调用SQL参数包括:每次需要对运行的SQL的性能进行问题查询时,所述参数配置模块中的参数调用单元需要先调用所述SQL参数,以便所述SQL性能优化系统中的后续模块能根据所述SQL参数的信息,利用调度程序按照流程自动调用其它后续模块,从而可以实现对问题SQL性能的自动优化。
这里,所述根据SQL参数查询问题SQL包括两种方式:一种是根据所述SQL参数直接查询问题SQL;另一种是基于所述SQL参数采用其它渠道查询问题SQL;
具体的,所述SQL参数包括调用的、步骤110中所述SQL告警参数设置表中配置的所述SQL告警参数,以及调用的、步骤110中所述SQL优化建议参数表中配置的所述SQL优化建议参数;所述其它渠道包括:业务系统、主机、手工输入和远程输入;所述问题SQL为具有占用CPU资源高或物理读高等问题的SQL;所述进行告警可以由所述SQL性能优化系统中的性能告警模块对问题SQL进行告警。
所述性能告警模块根据两种查询方式:SQL参数或其它渠道;查询到问题SQL后,根据需要对所述问题SQL告警的紧急程度,将告警类型分为日常告警和紧急告警;其中,所述日常告警既可以根据所述SQL参数产生也可以通过所述其它渠道产生,所述紧急告警仅适用于通过所述其它渠道产生。因此,如图2所示,所述步骤120进一步包括三种执行方式,分别是:
方式121:根据SQL告警参数查询到问题SQL后,将第一日常告警数据保存至告警日志表。
具体地,所述性能告警模块在告警时间窗口内,即所述告警开始时间和告警结束时间之间,查询数据库视图并进行关联,按照所述SQL告警参数表中的所述SQL告警参数,即告警关键指标(如占用CPU资源高)和告警SQL数量,生成查询筛选条件,查出需要告警的首位SQL(TOP SQL)后,从所述TOP SQL查出符合占用CPU资源高或物理读高等告警关键指标的所述问题SQL。
随后,所述性能告警模块根据查询出的所述问题SQL,生成所述第一日常告警数据并保存至告警日志表(ALERT_LOG),以完成所述日常告警。这里,所述告警日志表包括字段:SQL_ID、程序名、运行机器、告警时间、告警指标类型、告警指标数值、是否紧急优化建议(默认为否,为日常优化)、是否立刻执行优化建议(默认为否)、是否已经执行优化建议。
方式122:基于所述SQL参数采用其它渠道查询到问题SQL后,将第二日常告警数据保存至告警日志表。
这里,所述其它渠道包括业务系统和主机;当所述业务系统和/或所述主机通过查询出所述问题SQL对应的SQL_ID,直接将所述第二日常告警数据保存至所述告警日志表,以完成所述日常告警。
方式123:基于所述SQL参数采用其它渠道查询到问题SQL后,将紧急告警数据保存至告警日志表。
这里,所述其它渠道包括:所述业务系统、主机、手工输入渠道和远程输入渠道。具体地,当所述其它渠道包括所述业务系统和所述主机时,所述性能告警模块通过查询出对应的SQL_ID,直接在告警日志表中保存数据,如果为紧急情况,则将是否立刻执行优化建议设为是。当所述其它渠道为运维人员通过手工输入所述问题SQL对应的SQL_ID或接口关键字,或者通过远程短信或邮件输入告警关键字时,所述运维人员可以直接将所述紧急告警数据保存至所述告警日志表,即可实现问题SQL性能的紧急告警。
可以看出,在步骤120中,上述日常告警可以定期在所述告警时间窗口内自动发现所述问题SQL,从而降低了运维人员的成本。同时,上述紧急告警加快了影响系统关键业务运行的问题SQL的解决时间,减低了业务服务中断时间,有利于提高客户满意度。
步骤130:根据所述告警对问题SQL进行SQL优化建议。
在步骤130中,所述SQL性能优化系统的优化建议模块根据所述第一优化建议日志数据中包含的步骤120中生成的告警信息,判断是否对所述问题SQL进行优化建议;当告警信息为步骤120中的所述日常告警所产生的信息时,所述优化建议模块需要根据具体情况判断是否对所述问题SQL进行优化建议;当告警信息为步骤120中的所述紧急告警所产生的信息时,不需要进行判断并立即对所述问题SQL进行优化建议。
具体地,如图3所示,所述步骤130进一步包括:
步骤131:扫描告警日志表,获取告警日志数据并保持至优化建议日志表。
首先,所述优化建议模块扫描所述告警日志表,获取告警日志数据并保持至优化建议日志表。具体地,在所述告警日志表中,所述优化建议模块根据筛选条件为所述告警日志表的字段“是否已经执行优化建议”为“否”的条件,获取尚没有执行优化建议的SQL,对SQL_ID相同的SQL的进行合并,然后将所述SQL_ID、程序名、运行机器,优化开始时间等所述告警日志数据保存至优化建议日志表(ADVICE_LOG)中并生成唯一的任务名字(TASK_NAME)。具体操作为:
INSERT INTO ADVICE_LOG(SQL_ID,程序名、运行机器,建议开始时间,优化任务名)SELECT SQL_ID,程序名、运行机器,SYSDATE,TO_CHAR(sysdate,’yymmdd’)||TASKSEQ.NAXTVAL FROM ALERT_LOG WHERE是否已经执行优化建议=“否”。
步骤132:扫描优化建议日志表,获取第一优化建议日志数据。
步骤133:当第一优化建议日志数据包括第一日常告警数据或第二日常告警数据时,判断是否对问题SQL进行优化建议。
具体地,当第一优化建议日志数据包括根据所述步骤120中的方式121中生成的所述第一日常告警数据和方式122中生成的所述第二日常告警数据时,说明所述告警为日常告警,需要首先根据所述SQL优化建议参数、所述第一日常告警数据和所述第二日常告警数据的信息判断是否对问题SQL进行优化建议。
步骤134:确定对问题SQL进行优化建议时,生成调优任务,执行调优任务并生成SQL优化执行计划后,将SQL优化执行计划保存至优化建议日志表,结束本处理流程。
具体地,所述调优任务是所述优化建议模块利用数据库系统提供的数据库管理系统SQL调优任务包(DBMS_SQLTUNE)实现的,从而使得所述问题SQL进入调优模式。
所述调优任务是根据所述问题SQL的SQL_ID而生成的;所述调优任务包括:调用DBMS_SQLTUNE,其调优参数为SQL_ID和TASK_NAME;对SQL_ID对应的问题SQL文本进行分析,例如分析SQL设计的表的统计信息,SQL的语法,SQL相关对象的统计信息,并分析是否有更优的写法等。通过分析,提出替代所述问题SQL的所述SQL优化执行计划及优化效果,从而提出性能更优的SQL执行路径;所述调优任务至此完成。
生成所述SQL优化执行计划后,所述优化建议模块将执行所述调优任务的结果保存到所述优化建议日志表中,包括:SQL_ID、程序名、运行机器、建议开始时间、建议结束时间、优化任务名、是否紧急优化(默认为否,为日常优化)、性能提升效果(用数值表示,正数表示提升)、优化建议类型(包括所述SQL优化执行计划,添加索引等);同时修改所述告警日志表中的是否已经执行优化建议为是。所述优化建议日志表中的关键信息可以通过所述SQL性能优化系统中的接口模块发送给运维人员。
步骤135:确定不对问题SQL进行优化建议时,将判断结果保存至优化建议日志表,结束本处理流程。
步骤136:当第一优化建议日志数据包括紧急告警数据时,生成调优任务,执行调优任务并生成SQL优化执行计划后,将SQL优化执行计划保存至优化建议日志表。
具体地,当第一优化建议日志数据包括根据所述步骤120中的方式123中生成的所述紧急告警数据时,说明所述告警为紧急告警,需要立即对所述问题SQL进行所述SQL优化建议,即,生成调优任务,执行调优任务并生成SQL优化执行计划后,将SQL优化执行计划保存至优化建议日志表。
这里,本步骤的具体实施过程参照所述步骤134的描述。
步骤140:驻留SQL优化建议。
具体地,如图4所示,所述步骤140进一步包括:
步骤141:扫描优化建议日志表,获取第二优化建议日志数据并保存至优化配置日志表。
本步骤可由所述SQL性能优化系统中的优化建议驻留模块扫描所述优化建议日志表,获取第二优化建议日志数据并保存至优化配置日志表。具体地,通过扫描所述优化建议日志表,所述优化建议驻留模块获取优化建议类型为优化配置的所述第二优化建议日志数据。
其中,筛选条件为所述优化建议日志表的字段“优化建议类型”为“优化配置”的SQL;随后,所述优化建议驻留模块将SQL_ID、任务名字保存至所述优化配置日志表(PROFILE_LOG)中,使用序列号和日期生成唯一的配置名字(PROFILE_NAME)。具体操作为:
INSERT INTO PROFILE_LOG(SQL_ID,任务名字、运行机器,建议开始时间,优化任务名字)SELECT SQL_ID,任务名字、SYSDATE,TO_CHAR(sysdate,’yymmdd’)||PROFILESEQ.NAXTVAL FROM ADVICE_LOG WHERE优化建议类型=“优化配置”。
步骤142:扫描优化配置日志表,获取优化配置日志数据。
本步骤可由所述优化建议驻留模块扫描所述优化配置日志表,获取优化配置日志数据。
步骤143:当优化配置日志数据包括SQL优化执行计划时,驻留SQL优化执行计划。
本步骤中,当所述优化配置日志数据包括所述SQL优化执行计划时,所述优化建议驻留模块接收所述SQL优化建议,调用所述DBMS_SQLTUNE,所述调优参数为所述SQL_ID、所述TASK_NAME和所述PROFILE_NAME。
随后,所述SQL优化执行计划会驻留到数据库数据字典的优化配置(PROFILE)中。这样,每次所述数据库系统调用所述问题SQL时,将首先查询所述数据库数据字典,如果具有对应于所述问题SQL的所述SQL优化执行计划,则根据驻留的所述SQL优化执行计划执行优化SQL语句。
之后,所述优化建议驻留模块将执行结果保存至所述优化配置日志表,所述优化配置日志表包括:SQL_ID、优化任务名字、PROFILE_NAME、是否紧急执行计划驻留、是否驻留在数据字典(缺省值为否)、手工优化配置提示文本、驻留时间。这里,所述优化建议驻留模块修改所述是否驻留在数据库数据字典为是,修改所述驻留时间为当前时间。
同时,所述优化配置日志表中的关键信息可以通过所述接口模块发送给所述运维人员。
由于所述优化建议驻留模块驻留了所述SQL优化执行计划,使得SQL运行效率得到提高,从而实现了不修改程序代码且不对表进行统计分析而快速对所述问题SQL进行优化。
步骤144:当优化配置日志数据包括手工优化配置时,驻留手工优化配置。
本步骤中,当所述优化配置日志数据不包括所述SQL优化执行计划时,所述优化建议驻留模块首先判断所述优化配置日志数据中是否有手工添加的手工优化配置。其中,筛选条件为所述优化配置日志表的字段“手工优化配置提示文本”不为空。这里,所述手工优化配置可以手工添加到所述优化配置日志表中或者通过接口模块关键字将需要优化的SQL_ID和提示文本添加到所述优化配置日志表中。
当所述优化配置日志数据中具有所述手工优化配置,所述优化建议驻留模块将驻留所述手工优化配置。具体地,所述优化建议驻留模块导入所述手工优化配置,并调用所述DBMS_SQLTUNE中的相关导入手工优化配置包。所述手工优化配置包的调优参数为所述SQL_ID、所述PROFILE_NAME和所述手工优化配置提示的文本。随后,将所述手工优化配置驻留到所述数据库数据字典的所述PROFILE中。这样,每次所述数据库系统调用所述问题SQL时,首先查询所述数据库数据字典,如果发现所述工优化配置,则按照驻留的所述工优化配置执行所述优化SQL语句。
随后,所述优化建议驻留模块将执行结果保存至所述优化配置日志表。具体操作可参照所述步骤143中的描述。
至此,SQL性能优化方法过程就完成了。
本实施例中,所述解决SQL性能问题的方法缩短了问题解决的时间,降低了程序紧急发布不能充分测试带来的风险。而且,本实施例对所述问题SQL的日常优化方法可以自动优化所述问题SQL,降低了运维人员的成本。同时,本实施例对所述问题SQL的紧急优化方法加快了影响系统关键业务运行的问题SQL解决时间,减低了业务服务中断时间,有利于提高客户满意度。另外,本实施例可以可知可控地优化所述问题SQL,从而有助于运维人员更好的控制系统资源以对所述问题SQL进行分析和优化。
实施例2
图5为本发明实施例2提供的SQL性能优化方法的程示意图,如图5所示,预先配置SQL参数,所述方法还包括:
步骤211:调用SQL参数。
步骤221:根据SQL告警参数查询到问题SQL后,将第一日常告警数据保存至告警日志表。
步骤231:扫描告警日志表,获取告警日志数据并保持至优化建议日志表;扫描优化建议日志表,获取第一优化建议日志数据。
步骤232:判断是否对问题SQL进行优化建议。
步骤233:确定对问题SQL进行优化建议时,生成调优任务,执行调优任务并生成SQL优化执行计划后,将SQL优化执行计划保存至优化建议日志表。
步骤243:扫描优化建议日志表,获取第二优化建议日志数据并保存至优化配置日志表;扫描优化配置日志表,获取优化配置日志数据。
步骤244:驻留SQL优化执行计划。
需要说明的是,本发明实施例2提供的是SQL性能的日常优化方法,具体流程可以参照上述实施例1的描述,这里不再赘述。
实施例3
图5为本发明实施例3提供的SQL性能优化方法的程示意图,如图5所示,预先配置SQL参数,所述方法还包括:
步骤211:调用SQL参数。
步骤222:基于所述SQL参数采用其它渠道查询到问题SQL后,将第二日常告警数据保存至告警日志表。
步骤231:扫描告警日志表,获取告警日志数据并保持至优化建议日志表;扫描优化建议日志表,获取第一优化建议日志数据。
步骤232:判断是否对问题SQL进行优化建议。
步骤233:确定对问题SQL进行优化建议时,生成调优任务,执行调优任务并生成SQL优化执行计划后,将SQL优化执行计划保存至优化建议日志表。
步骤243:扫描优化建议日志表,获取第二优化建议日志数据并保存至优化配置日志表;扫描优化配置日志表,获取优化配置日志数据。
步骤244:驻留SQL优化执行计划。
需要说明的是,本发明实施例3提供的是另一种SQL性能的日常优化方法,具体流程可以参照上述实施例1的描述,这里不再赘述。
实施例4
图5为本发明实施例4提供的SQL性能优化方法的程示意图,如图5所示,预先配置SQL参数,所述方法还包括:
步骤211:调用SQL参数。
步骤221:根据SQL告警参数查询到问题SQL后,将第一日常告警数据保存至告警日志表。
步骤231:扫描告警日志表,获取告警日志数据并保持至优化建议日志表;扫描优化建议日志表,获取第一优化建议日志数据。
步骤232:判断是否对问题SQL进行优化建议。
步骤234:确定不对问题SQL进行优化建议时,将判断结果保存至优化建议日志表。
步骤241:判断是否对问题SQL进行手工优化配置建议。
步骤242:确定对问题SQL进行手工优化配置建议后,手工添加手工优化配置。
步骤243:扫描优化建议日志表,获取第二优化建议日志数据并保存至优化配置日志表;扫描优化配置日志表,获取优化配置日志数据。
步骤245:驻留手工优化配置。
需要说明的是,本发明实施例4提供的是另一种SQL性能的日常优化方法,具体流程可以参照上述实施例1的描述,这里不再赘述。
实施例5
图5为本发明实施例5提供的SQL性能优化方法的程示意图,如图5所示,预先配置SQL参数,所述方法还包括:
步骤211:调用SQL参数。
步骤222:基于所述SQL参数采用其它渠道查询到问题SQL后,将第二日常告警数据保存至告警日志表。
步骤231:扫描告警日志表,获取告警日志数据并保持至优化建议日志表;扫描优化建议日志表,获取第一优化建议日志数据。
步骤232:判断是否对问题SQL进行优化建议。
步骤234:确定不对问题SQL进行优化建议时,将判断结果保存至优化建议日志表。
步骤241:判断是否对问题SQL进行手工优化配置建议。
步骤242:确定对问题SQL进行手工优化配置建议后,手工添加手工优化配置。
步骤243:扫描优化建议日志表,获取第二优化建议日志数据并保存至优化配置日志表;扫描优化配置日志表,获取优化配置日志数据。
步骤245:驻留手工优化配置。
需要说明的是,本发明实施例5提供的是另一种SQL性能的日常优化方法,具体流程可以参照上述实施例1的描述,这里不再赘述。
实施例6
图5为本发明实施例6提供的SQL性能优化方法的程示意图,如图5所示,所述方法包括:
步骤211:调用SQL参数。
步骤223:基于所述SQL参数采用其它渠道查询到问题SQL后,将紧急告警数据保存至告警日志表。
步骤231:扫描告警日志表,获取告警日志数据并保持至优化建议日志表;扫描优化建议日志表,获取第一优化建议日志数据。
步骤233:确定对问题SQL进行优化建议时,生成调优任务,执行调优任务并生成SQL优化执行计划后,将SQL优化执行计划保存至优化建议日志表。
步骤243:扫描优化建议日志表,获取第二优化建议日志数据并保存至优化配置日志表;扫描优化配置日志表,获取优化配置日志数据。
步骤244:驻留SQL优化执行计划。
需要说明的是,本发明实施例6提供的是一种SQL性能的紧急优化方法,具体流程可以参照上述实施例1的描述,这里不再赘述。
实施例7
图6为本发明实施例7提供的SQL性能优化系统的结构示意图,如图6所示,所述系统包括:
参数配置模块310,用于预先配置SQL参数,并调用所述SQL参数。
具体地,所述参数配置模块310进一步包括:
参数配置单元311,用于配置SQL告警参数和SQL优化建议参数。
参数调用单元312,用于调用所述SQL参数。
性能告警模块320,用于根据所述SQL参数查询问题SQL,查询到问题SQL时对所述问题SQL进行告警;
这里,所述根据SQL参数查询问题SQL包括两种方式:一种是根据所述SQL参数直接查询问题SQL;另一种是基于所述SQL参数通过其它渠道查询问题SQL;
具体地,所述性能告警模块320进一步包括:
日常告警单元321,用于根据所述SQL告警参数查询到所述问题SQL后,将第一日常告警数据保存至告警日志表;或基于所述SQL参数采用其它渠道查询到所述问题SQL后,将第二日常告警数据保存至所述告警日志表。
紧急告警单元322,用于基于所述SQL参数采用其它渠道查询到所述问题SQL后,将紧急告警数据保存至所述告警日志表。
优化建议模块330,用于根据所述告警对所述问题SQL进行SQL优化建议。
具体地,所述优化建议模块330进一步包括:
第一数据获取单元331,用于扫描所述告警日志表,获取告警日志数据并保持至优化建议日志表;及扫描所述优化建议日志表,获取第一优化建议日志数据。
日常优化建议单元332,用于当所述第一优化建议日志数据包括所述第一日常告警数据或所述第二日常告警数据时,判断是否对所述问题SQL进行优化建议;其中,确定对所述问题SQL进行所述优化建议时,生成调优任务,执行所述调优任务并生成SQL优化执行计划后,将所述SQL优化执行计划保存至所述优化建议日志表;确定不对所述问题SQL进行所述优化建议时,将判断结果保存至所述优化建议日志表。
紧急优化建议单元333,用于当所述第一优化建议日志数据包括所述紧急告警数据时,生成所述调优任务,执行所述调优任务并生成所述SQL优化执行计划后,将所述SQL优化执行计划保存至所述优化建议日志表。
优化建议驻留模块340,用于驻留所述SQL优化建议。
具体地,所述优化建议驻留模块340进一步包括:
第二数据获取单元341,用于扫描所述优化建议日志表,获取第二优化建议日志数据并保存至优化配置日志表;及扫描所述优化配置日志表,获取优化配置日志数据。
驻留单元342,用于判断所述优化配置日志数据是否包括所述SQL优化执行计划;其中,当所述优化配置日志数据包括所述SQL优化执行计划时,驻留所述SQL优化执行计划;当所述优化配置日志数据不包括所述SQL优化执行计划并包括手工优化配置时,驻留所述手工优化配置。
进一步地,所述系统还可以包括接口模块,用于将SQL性能优化过程中所生成的信息通过短信、邮件等方式通知运维人员。同时运维人员通过所述接口模块350输入短信关键字即可以远程实现对SQL的紧急优化。
需要说明的是,所述SQL性能优化系统的组成部分的具体功能可以参照上述实施例1至6的描述,这里不再赘述。
在实际应用中,所述参数配置模块310、性能告警模块320、优化建议模块330和优化建议驻留模块340均可由位于任意计算机设备中的CPU数字信号处理器(DSP,Digital Signal Processor)、微处理器(MPU)、或可编程逻辑阵列(FPGA,Field Programmable Gate Array)实现。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
Claims (10)
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进行所述优化建议时,将判断结果保存至所述优化建议日志表;或,
当所述第一优化建议日志数据包括所述紧急告警数据时,生成所述调优任务,执行所述调优任务并生成所述SQL优化执行计划后,将所述SQL优化执行计划保存至所述优化建议日志表。
5.根据权利要求4所述的方法,其特征在于,所述驻留所述SQL优化建议包括:
扫描所述优化建议日志表,获取第二优化建议日志数据并保存至优化配置日志表;
扫描所述优化配置日志表,获取优化配置日志数据;
当所述优化配置日志数据包括所述SQL优化执行计划时,驻留所述SQL优化执行计划;或当所述优化配置日志数据包括手工优化配置时,驻留所述手工优化配置。
6.一种SQL性能优化系统,其特征在于,所述系统包括:
参数配置模块,用于预先配置SQL参数,并调用所述SQL参数;
性能告警模块,用于根据所述SQL参数查询问题SQL,查询到所述问题SQL时对所述问题SQL进行告警;
优化建议模块,用于根据所述告警对所述问题SQL进行SQL优化建议;
优化建议驻留模块,用于驻留所述SQL优化建议。
7.根据权利要求6所述的系统,其特征在于,所述参数配置模块包括:
参数配置单元,用于配置SQL告警参数和SQL优化建议参数;
参数调用单元,用于调用所述SQL参数。
8.根据权利要求6或7所述的系统,其特征在于,所述性能告警模块包括:
日常告警单元,用于根据所述SQL告警参数查询到所述问题SQL后,将第一日常告警数据保存至告警日志表;或基于所述SQL参数采用其它渠道查询到所述问题SQL后,将第二日常告警数据保存至所述告警日志表;
紧急告警单元,用于基于所述SQL参数采用其它渠道查询到所述问题SQL后,将紧急告警数据保存至所述告警日志表。
9.根据权利要求8所述的系统,其特征在于,所述优化建议模块包括:
第一数据获取单元,用于扫描所述告警日志表,获取告警日志数据并保持至优化建议日志表;及扫描所述优化建议日志表,获取第一优化建议日志数据;
日常优化建议单元,用于当所述第一优化建议日志数据包括所述第一日常告警数据或所述第二日常告警数据时,判断是否对所述问题SQL进行优化建议;其中,确定对所述问题SQL进行所述优化建议时,生成调优任务,执行所述调优任务并生成SQL优化执行计划后,将所述SQL优化执行计划保存至所述优化建议日志表;确定不对所述问题SQL进行所述优化建议时,将判断结果保存至所述优化建议日志表;
紧急优化建议单元,用于当所述第一优化建议日志数据包括所述紧急告警数据时,生成所述调优任务,执行所述调优任务并生成所述SQL优化执行计划后,将所述SQL优化执行计划保存至所述优化建议日志表。
10.根据权利要求9所述的系统,其特征在于,所述优化建议驻留模块包括:
第二数据获取单元,用于扫描所述优化建议日志表,获取第二优化建议日志数据并保存至优化配置日志表;及扫描所述优化配置日志表,获取优化配置日志数据;
驻留单元,用于当所述优化配置日志数据包括所述SQL优化执行计划时,驻留所述SQL优化执行计划;或当所述优化配置日志数据包括手工优化配置时,驻留所述手工优化配置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510089605.7A CN105989137B (zh) | 2015-02-27 | 2015-02-27 | 一种结构化查询语言性能优化方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510089605.7A CN105989137B (zh) | 2015-02-27 | 2015-02-27 | 一种结构化查询语言性能优化方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105989137A true CN105989137A (zh) | 2016-10-05 |
CN105989137B CN105989137B (zh) | 2019-12-10 |
Family
ID=57039132
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510089605.7A Active CN105989137B (zh) | 2015-02-27 | 2015-02-27 | 一种结构化查询语言性能优化方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105989137B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107688589A (zh) * | 2017-02-20 | 2018-02-13 | 平安科技(深圳)有限公司 | 数据库系统优化的方法及装置 |
CN107748782A (zh) * | 2017-10-20 | 2018-03-02 | 北京小度信息科技有限公司 | 查询语句处理方法及装置 |
CN108388626A (zh) * | 2018-02-12 | 2018-08-10 | 平安科技(深圳)有限公司 | Sql自动优化方法、装置、计算机设备及存储介质 |
CN109710635A (zh) * | 2018-12-29 | 2019-05-03 | 联想(北京)有限公司 | 用于数据库的处理方法、处理系统以及服务器组 |
CN110262945A (zh) * | 2019-06-25 | 2019-09-20 | 苏宁消费金融有限公司 | 一种智能监控数据仓库调度系统的方法 |
CN110895529A (zh) * | 2018-08-23 | 2020-03-20 | 马上消费金融股份有限公司 | 结构化查询语言的处理方法及相关装置 |
CN112035513A (zh) * | 2020-09-02 | 2020-12-04 | 中国平安人寿保险股份有限公司 | Sql语句性能优化方法、装置、终端及存储介质 |
CN113448734A (zh) * | 2021-07-15 | 2021-09-28 | 中国银行股份有限公司 | Spark SQL交互式场景下SQL中断系统及方法 |
CN113590647A (zh) * | 2021-07-29 | 2021-11-02 | 中国联合网络通信集团有限公司 | Sql语句优化方法、装置、设备、存储介质及产品 |
CN113792071A (zh) * | 2021-09-18 | 2021-12-14 | 上海中通吉网络技术有限公司 | Sql智能生成并调优组件和方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101013442A (zh) * | 2007-02-07 | 2007-08-08 | 浙江大学 | 数据库性能的无代理统一监控方法 |
CN103399851A (zh) * | 2013-06-25 | 2013-11-20 | 携程计算机技术(上海)有限公司 | 一种结构化查询语言(sql)脚本的性能分析与预测方法与系统 |
CN103793526A (zh) * | 2014-02-24 | 2014-05-14 | 浪潮电子信息产业股份有限公司 | 一种监控sql语句性能的方法 |
US20140310260A1 (en) * | 2013-04-12 | 2014-10-16 | Oracle International Corporation | Using persistent data samples and query-time statistics for query optimization |
-
2015
- 2015-02-27 CN CN201510089605.7A patent/CN105989137B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101013442A (zh) * | 2007-02-07 | 2007-08-08 | 浙江大学 | 数据库性能的无代理统一监控方法 |
US20140310260A1 (en) * | 2013-04-12 | 2014-10-16 | Oracle International Corporation | Using persistent data samples and query-time statistics for query optimization |
CN103399851A (zh) * | 2013-06-25 | 2013-11-20 | 携程计算机技术(上海)有限公司 | 一种结构化查询语言(sql)脚本的性能分析与预测方法与系统 |
CN103793526A (zh) * | 2014-02-24 | 2014-05-14 | 浪潮电子信息产业股份有限公司 | 一种监控sql语句性能的方法 |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107688589A (zh) * | 2017-02-20 | 2018-02-13 | 平安科技(深圳)有限公司 | 数据库系统优化的方法及装置 |
CN107688589B (zh) * | 2017-02-20 | 2019-02-26 | 平安科技(深圳)有限公司 | 数据库系统优化的方法及装置 |
CN107748782A (zh) * | 2017-10-20 | 2018-03-02 | 北京小度信息科技有限公司 | 查询语句处理方法及装置 |
CN108388626A (zh) * | 2018-02-12 | 2018-08-10 | 平安科技(深圳)有限公司 | Sql自动优化方法、装置、计算机设备及存储介质 |
CN110895529A (zh) * | 2018-08-23 | 2020-03-20 | 马上消费金融股份有限公司 | 结构化查询语言的处理方法及相关装置 |
CN110895529B (zh) * | 2018-08-23 | 2021-03-30 | 马上消费金融股份有限公司 | 结构化查询语言的处理方法及相关装置 |
CN109710635A (zh) * | 2018-12-29 | 2019-05-03 | 联想(北京)有限公司 | 用于数据库的处理方法、处理系统以及服务器组 |
CN109710635B (zh) * | 2018-12-29 | 2021-03-19 | 联想(北京)有限公司 | 用于数据库的处理方法、处理系统以及服务器组 |
CN110262945A (zh) * | 2019-06-25 | 2019-09-20 | 苏宁消费金融有限公司 | 一种智能监控数据仓库调度系统的方法 |
CN112035513A (zh) * | 2020-09-02 | 2020-12-04 | 中国平安人寿保险股份有限公司 | Sql语句性能优化方法、装置、终端及存储介质 |
CN113448734A (zh) * | 2021-07-15 | 2021-09-28 | 中国银行股份有限公司 | Spark SQL交互式场景下SQL中断系统及方法 |
CN113448734B (zh) * | 2021-07-15 | 2024-02-23 | 中国银行股份有限公司 | Spark SQL交互式场景下SQL中断系统及方法 |
CN113590647A (zh) * | 2021-07-29 | 2021-11-02 | 中国联合网络通信集团有限公司 | Sql语句优化方法、装置、设备、存储介质及产品 |
CN113590647B (zh) * | 2021-07-29 | 2024-02-23 | 中国联合网络通信集团有限公司 | Sql语句优化方法、装置、设备、存储介质及产品 |
CN113792071A (zh) * | 2021-09-18 | 2021-12-14 | 上海中通吉网络技术有限公司 | Sql智能生成并调优组件和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105989137B (zh) | 2019-12-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105989137A (zh) | 一种结构化查询语言性能优化方法及系统 | |
CN107678907B (zh) | 数据库业务逻辑监控方法、系统、及存储介质 | |
CN106371984B (zh) | 一种数据监控方法、设备和系统 | |
CN110297701A (zh) | 数据处理作业调度方法、装置、计算机设备及存储介质 | |
US20170024433A1 (en) | Query plan post optimization analysis and reoptimization | |
KR101032819B1 (ko) | 제조 예측 서버 | |
CN101719237A (zh) | 基于全业务指标规则配置的数据质量监控方法 | |
CN110751358A (zh) | 一种机场地面服务人员的排班方法、电子设备及存储介质 | |
CN110503408B (zh) | 一种基于自定义配置的业务流程管理系统 | |
CN112365157A (zh) | 智能派工方法、装置、设备及存储介质 | |
US20090119618A1 (en) | User-specified configuration of prediction services | |
CN110837496A (zh) | 一种基于动态sql实现的数据质量管理方法及系统 | |
CN113762914A (zh) | 预警审计方法及相关设备 | |
US7844601B2 (en) | Quality of service feedback for technology-neutral data reporting | |
CN107423035B (zh) | 一种软件开发过程产品数据管理系统 | |
CN114596044A (zh) | 一种项目流程审批的工具及方法 | |
US20070033161A1 (en) | Apparatus and method for automatic refinement of business processes | |
CN113568931A (zh) | 一种数据访问请求的路由解析系统及方法 | |
CN106484601A (zh) | 客户端的用户数据分析方法及系统 | |
CN115718658A (zh) | 一种时效优化方法及装置 | |
CN114327906A (zh) | 批量任务的处理方法及其装置、计算机可读存储介质 | |
JP4810113B2 (ja) | データベースチューニング装置及びデータベースチューニング方法並びにプログラム | |
JP2021105866A (ja) | プログラム開発支援システム及びプログラム開発支援方法 | |
US7263175B2 (en) | Methods, systems, and computer program products for tracking breaks in physical plant during maintenance of a public switched telephone network | |
CN118487913A (zh) | 一种基于电信管理的主网控制系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |