CN106407246B - Sql执行计划管理的方法及装置 - Google Patents
Sql执行计划管理的方法及装置 Download PDFInfo
- Publication number
- CN106407246B CN106407246B CN201610589012.1A CN201610589012A CN106407246B CN 106407246 B CN106407246 B CN 106407246B CN 201610589012 A CN201610589012 A CN 201610589012A CN 106407246 B CN106407246 B CN 106407246B
- Authority
- CN
- China
- Prior art keywords
- execution plan
- execution
- sql
- preset
- cleaning
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24542—Plan optimisation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Operations Research (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种SQL执行计划管理的方法及装置,所述SQL执行计划管理的方法包括:SQL执行计划控制系统按预定的筛选规则筛选预设类型的SQL语句;当筛选出预设类型的SQL语句后,分析筛选出的各SQL语句是否无对应的执行计划在预定的执行计划管理表中供选择和执行;若有筛选出的SQL语句无对应的执行计划在预定的执行计划管理表中供选择和执行,则将筛选出的SQL语句对应的当前执行计划加载到所述执行计划管理表中供选择和执行。本发明能够维持当前执行计划不变,或者向更好的情况改变,并在大多环境下可利用可以提高SQL语句性能的新优化器功能或访问路径,运用较灵活。
Description
技术领域
本发明涉及数据库技术领域,尤其涉及一种SQL执行计划管理的方法及装置。
背景技术
目前,Oracle数据库应用程序的性能很大程度上依赖于结构化查询语言(Structured Query Language,SQL)的执行计划,Oracle优化器能产生出预期的执行计划,但是SQL语句的执行计划可能由于多种原因而发生变化,例如发生Oracle数据库收集统计信息或者改变优化器参数版本等情况时,SQL语句的执行计划可能会发生变化。由于无法保证执行计划始终向更好的情况改变,因此在许多场景下业界出于稳定性考虑会选择Oracle的hint等来固化执行计划。但是,选择Oracle的hint等来固化执行计划,可能会导致许多环境永远无法利用可以提高SQL语句性能的新优化器功能或访问路径。因此,如何在环境变化时能够维持当前执行计划不变,或者向更好的情况改变,已经成为一种亟待解决的技术问题。
发明内容
本发明所要解决的技术问题是提供一种SQL执行计划管理的方法及装置。
本发明解决上述技术问题的技术方案如下:一种SQL执行计划管理的方法,所述SQL执行计划管理的方法包括:
S1,SQL执行计划控制系统按预定的筛选规则筛选预设类型的SQL语句;
S2,当筛选出预设类型的SQL语句后,分析筛选出的各SQL语句是否无对应的执行计划在预定的执行计划管理表中供选择和执行;
S3,若有筛选出的SQL语句无对应的执行计划在预定的执行计划管理表中供选择和执行,则将筛选出的SQL语句对应的当前执行计划加载到所述执行计划管理表中供选择和执行。
优选地,所述步骤S1包括:
S11,提取SQL语句的预设类型的执行参数,根据预存的执行参数的类型与阈值的关联关系确定各预设类型的执行参数对应的阈值;
S12,分析各SQL语句对应的预设类型的执行参数是否大于等于对应的阈值;
S13,若SQL语句有对应的预设类型的执行参数大于等于对应的阈值,则确定有对应的预设类型的执行参数大于等于对应的阈值的SQL语句为所述预设类型的SQL语句。
优选地,所述步骤S3之后还包括:S4,按预设的清理规则清理所述执行计划管理表中的执行计划。
优选地,所述步骤S4包括:
获取所述执行计划管理表中的第一非固定状态的执行计划;
判断所述第一非固定状态的执行计划是否超过预定执行期限未曾执行;或者
判断所述第一非固定状态的执行计划是否为不能被数据库重现的执行计划;或者
判断所述第一非固定状态的执行计划是否经过执行计划验证流程后未被验证通过;
若是,则对所述第一非固定状态的执行计划进行第一次清理。
优选地,所述步骤S4进一步包括:
在进行第一次清理后,分析第一次清理后的执行计划管理表中的执行计划的总数量是否大于预设数量;
若是,则获取第一次清理后的执行计划管理表中的第二非固定状态的执行计划;
判断所述第二非固定状态的执行计划是否从未被选择和执行;或者
判断所述第二非固定状态的执行计划第一次加载至所述执行计划管理表中的时间是否在预设时间之前;
若是,则对所述第二非固定状态的执行计划进行第二次清理;
若第二次清理后的执行计划管理表中的执行计划的总数量大于所述预设数量,则根据加载时间对第二次清理后剩余的所述第二非固定状态的执行计划进行清理。
本发明解决上述技术问题的技术方案还如下:一种SQL执行计划管理的装置,所述SQL执行计划管理的装置包括:
筛选模块,用于按预定的筛选规则筛选预设类型的SQL语句;
分析模块,用于当筛选出预设类型的SQL语句后,分析筛选出的各SQL语句是否无对应的执行计划在预定的执行计划管理表中供选择和执行;
加载模块,用于若有筛选出的SQL语句无对应的执行计划在预定的执行计划管理表中供选择和执行,则将筛选出的SQL语句对应的当前执行计划加载到所述执行计划管理表中供选择和执行。
优选地,所述筛选模块包括:
提取单元,用于提取SQL语句的预设类型的执行参数,根据预存的执行参数的类型与阈值的关联关系确定各预设类型的执行参数对应的阈值;
第一分析单元,用于分析各SQL语句对应的预设类型的执行参数是否大于等于对应的阈值;
确定单元,用于若SQL语句有对应的预设类型的执行参数大于等于对应的阈值,则确定有对应的预设类型的执行参数大于等于对应的阈值的SQL语句为所述预设类型的SQL语句。
优选地,还包括:清理模块,用于按预设的清理规则清理所述执行计划管理表中的执行计划。
优选地,所述清理模块包括:
第一获取单元,用于获取所述执行计划管理表中的第一非固定状态的执行计划;
第一判断单元,用于判断所述第一非固定状态的执行计划是否超过预定执行期限未曾执行;或者判断所述第一非固定状态的执行计划是否为不能被数据库重现的执行计划;或者判断所述第一非固定状态的执行计划是否经过执行计划验证流程后未被验证通过;
第一清理单元,用于若是,则对所述第一非固定状态的执行计划进行第一次清理。
优选地,所述清理模块进一步包括:
第二分析单元,用于在进行第一次清理后,分析第一次清理后的执行计划管理表中的执行计划的总数量是否大于预设数量;
第二获取单元,用于若是,则获取第一次清理后的执行计划管理表中的第二非固定状态的执行计划;
第二判断单元,用于判断所述第二非固定状态的执行计划是否从未被选择和执行;或者判断所述第二非固定状态的执行计划第一次加载至所述执行计划管理表中的时间是否在预设时间之前;
第二清理单元,用于若是,则对所述第二非固定状态的执行计划进行第二次清理;若第二次清理后的执行计划管理表中的执行计划的总数量大于所述预设数量,则根据加载时间对第二次清理后剩余的所述第二非固定状态的执行计划进行清理。
本发明的有益效果是:本发明由SQL执行计划控制系统将预设类型的SQL语句筛选出来,然后分析筛选出来的各SQL语句对应的执行计划是否在执行计划管理表中供选择和执行,由于筛选出来的SQL语句对应的执行计划是适合于绝大多数数据的最优执行计划,因此如果有筛选出来的SQL语句对应的执行计划不在执行计划管理表中,为了维持当前执行计划不变,将筛选出来的SQL语句对应的执行计划加载至执行计划管理表中,使得即使环境发生变化,也能够维持当前执行计划不变,或者向更好的情况改变,并在大多环境下可利用可以提高SQL语句性能的新优化器功能或访问路径,运用较灵活。
附图说明
图1为本发明SQL执行计划管理的方法第一实施例的流程示意图;
图2为图1所示步骤S1的流程示意图;
图3为本发明SQL执行计划管理的方法第二实施例的流程示意图;
图4为本发明SQL执行计划管理的装置一实施例的结构示意图。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
如图1所示,图1为本发明SQL执行计划管理的方法一实施例的流程示意图,该SQL执行计划管理的方法包括以下步骤:
步骤S1,SQL执行计划控制系统按预定的筛选规则筛选预设类型的SQL语句;
本实施例中,SQL执行计划控制系统运行在一服务器中,该服务器例如可以是数据库服务器。SQL执行计划控制系统对执行计划中的SQL语句进行筛选,以选出预设类型的SQL语句,该预设类型的SQL语句可以为一条或者多条,预设类型的SQL语句例如可以为多次执行的SQL语句,或者是一次执行所需时间较长的SQL语句等。
本实施例中,按预定的筛选规则筛选SQL语句,可以是将执行次数达到预设次数的SQL语句筛选出,或者是将SQL语句执行时CPU时间占比达到预设数值的SQL语句筛选出,或者是将SQL语句的逻辑读的次数达到预设次数的SQL语句筛选出来,等等。
本实施例中,SQL执行计划控制系统可以实时对执行计划中的SQL语句进行筛选,以尽快将执行计划中的SQL语句筛选出,或者SQL执行计划控制系统定时对执行计划中的SQL语句进行筛选,以减轻系统负担。
步骤S2,当筛选出预设类型的SQL语句后,分析筛选出的各SQL语句是否无对应的执行计划在预定的执行计划管理表中供选择和执行;
本实施例中,当筛选出预设类型的SQL语句后,查找筛选出的各SQL语句对应的执行计划,并获取执行计划管理(SQL Plan Management,SPM)表,以分析筛选出的SQL语句对应的执行计划是否不在该执行计划管理表中。其中,执行计划管理表中包含的执行计划供SQL执行计划控制系统选择并执行。
具体地,可以将筛选出的SQL语句对应的执行计划逐一与执行计划管理表中的执行计划进行比对,如果筛选出的SQL语句对应的执行计划与执行计划管理表中的执行计划相同,则筛选出的SQL语句对应的执行计划在该执行计划管理表中,如果两者不相同,则筛选出的SQL语句对应的执行计划不在该执行计划管理表中。
步骤S3,若有筛选出的SQL语句无对应的执行计划在预定的执行计划管理表中供选择和执行,则将筛选出的SQL语句对应的当前执行计划加载到所述SPM执行计划表中供选择和执行。
本实施例中,由于筛选出来的SQL语句对应的执行次数达到预设次数的SQL语句,或者筛选出来的SQL语句执行时CPU时间占比达到预设数值,或者筛选出来的SQL语句SQL语句的逻辑读的次数达到预设次数,因此,可以认为筛选出来的SQL语句对应的执行计划是适合于绝大多数数据的最优执行计划,因此,将这些筛选出的SQL语句对应的执行计划加载到执行计划管理表中供选择和执行。
与现有技术相比,本实施例由SQL执行计划控制系统将预设类型的SQL语句筛选出来,然后分析筛选出来的各SQL语句对应的执行计划是否在执行计划管理表中供选择和执行,由于筛选出来的SQL语句对应的执行计划是适合于绝大多数数据的最优执行计划,因此如果有筛选出来的SQL语句对应的执行计划不在执行计划管理表中,为了维持当前执行计划不变,将筛选出来的SQL语句对应的执行计划加载至执行计划管理表中,使得即使环境发生变化,也能够维持当前执行计划不变,或者向更好的情况改变,并在大多环境下可利用可以提高SQL语句性能的新优化器功能或访问路径,运用较灵活。
在一优选的实施例中,如图2所示,在上述图1的实施例的基础上,上述步骤S1包括:
步骤S11,提取SQL语句的预设类型的执行参数,根据预存的执行参数的类型与阈值的关联关系确定各预设类型的执行参数对应的阈值;
步骤S12,分析各SQL语句对应的预设类型的执行参数是否大于等于对应的阈值;
步骤S13,若SQL语句有对应的预设类型的执行参数大于等于对应的阈值,则确定有对应的预设类型的执行参数大于等于对应的阈值的SQL语句为所述预设类型的SQL语句。
本实施例中,对SQL语句中的预设类型的执行参数进行提取,预设类型的执行参数可以是SQL语句的执行次数、CPU时间占比及逻辑读的次数。预先存储执行参数的类型与阈值的关联关系,例如SQL语句的执行次数对应的阈值为第一阈值、CPU时间占比对应的阈值为第二阈值、逻辑读的次数对应的阈值为第三阈值。
分析各个SQL语句对应的预设类型的执行参数是否大于等于对应的阈值例如,分析各个SQL语句对应的SQL执行次数是否大于等于第一阈值、分析各个SQL语句对应的CPU时间占比是否大于等于第二阈值、分析各个SQL语句对应的逻辑读的次数是否大于等于第三阈值,若一个SQL语句有对应的预设类型的执行参数大于等于对应的阈值,例如,某个SQL语句对应的SQL执行次数大于等于第一阈值、该SQL语句对应的CPU时间占比大于等于第二阈值,和/或,该SQL语句对应的逻辑读的次数大于等于第三阈值,则确定该SQL语句为预设类型的SQL语句,将该预设类型的SQL语句筛选出来。
在一优选的实施例中,如图3所示,在上述图1的实施例的基础上,该SQL执行计划管理的方法在步骤S3之后还包括:
步骤S4,按预设的清理规则清理所述执行计划管理表中的执行计划。
本实施例中,为了减轻系统的负担,需要对执行计划管理表中的执行计划进行清理,一般来说,是对非固定状态的执行计划进行清理。按照预设的清理规则清理执行计划,例如可以将久未执行的非固定状态的执行计划进行清理,或者对不能重现的非固定状态的执行计划进行清理等等。
本实施例中,可以实时地对执行计划表中的非固定状态的执行计划进行清理,以使得系统在任意时刻均处于较优的运行状态,或者定时地对执行计划表中的非固定状态的执行计划进行清理,以对需要进行清理的执行计划集中处理。
在一优选的实施例中,在上述图3的实施例的基础上,上述步骤S4包括:
获取所述执行计划管理表中的第一非固定状态的执行计划;
判断所述第一非固定状态的执行计划是否超过预定执行期限未曾执行;或者
判断所述第一非固定状态的执行计划是否为不能被数据库重现的执行计划;或者
判断所述第一非固定状态的执行计划是否经过执行计划验证流程后未被验证通过;
若是,则对所述第一非固定状态的执行计划进行第一次清理。
本实施例中,在对执行计划管理表中的执行计划进行清理前,首先获取执行计划管理表中的所有第一非固定状态的执行计划,然后判断每一第一非固定状态的执行计划是否超过预定执行期限未曾执行(例如,超过365天未曾执行),或者,判断每一第一非固定状态的执行计划是否为不能被数据库重现的执行计划,或者,判断每一第一非固定状态的执行计划是否经过执行计划验证流程后未被验证通过,如果上述三种情况中的一种情况判断的结果为“是”,即某一第一非固定状态的执行计划超过预定执行期限未曾执行、为不能被数据库重现的执行计划或者经过执行计划验证流程后未被验证通过,则对满足条件的第一非固定状态的执行计划进行清理。
在一优选的实施例中,在上述的实施例的基础上,上述步骤S4进一步包括:
在进行第一次清理后,分析第一次清理后的执行计划管理表中的执行计划的总数量是否大于预设数量;
若是,则获取第一次清理后的执行计划管理表中的第二非固定状态的执行计划;
判断所述第二非固定状态的执行计划是否从未被选择和执行;或者
判断所述第二非固定状态的执行计划第一次加载至所述执行计划管理表中的时间是否在预设时间之前;
若是,则对所述第二非固定状态的执行计划进行第二次清理;
若第二次清理后的执行计划管理表中的执行计划的总数量大于所述预设数量,则根据加载时间对第二次清理后剩余的所述第二非固定状态的执行计划进行清理。
本实施例中,在进行第一次清理后,分析经过第一次清理后的执行计划管理表中的执行计划的总数量是否大于预设数量,例如是否大于20000,如果大于预设数量,则需要进一步对执行计划管理表中的执行计划进行清理,以进一步减轻系统负担,优化系统的运行。
本实施例同样对非固定状态的执行计划进行清理,即获取第一次清理后后的执行计划管理表中的所有第二非固定状态的执行计划,然后判断每一第二非固定状态的执行计划是否从未被选择和执行(即最近一次执行时间是空),或者判断每一第二非固定状态的执行计划第一次加载至执行计划管理表中的时间是否在预设时间之前(例如在60天之前),如果上述两种情况中的一种情况判断的结果为“是”,即某一第二非固定状态的执行计划从未被选择和执行或者第一次加载至执行计划管理表中的时间是否在预设时间之前,则对满足条件的第二非固定状态的执行计划进行清理。
如图4所示,图4为本发明SQL执行计划管理的装置一实施例的结构示意图,该SQL执行计划管理的装置包括:
筛选模块101,用于按预定的筛选规则筛选预设类型的SQL语句;
本实施例中,SQL执行计划管理的装置中运行一SQL执行计划控制系统,SQL执行计划管理的装置可集成于一服务器中,该服务器例如可以是数据库服务器。SQL执行计划控制系统对执行计划中的SQL语句进行筛选,以选出预设类型的SQL语句,该预设类型的SQL语句可以为一条或者多条,预设类型的SQL语句例如可以为多次执行的SQL语句,或者是一次执行所需时间较长的SQL语句等。
本实施例中,按预定的筛选规则筛选SQL语句,可以是将执行次数达到预设次数的SQL语句筛选出,或者是将SQL语句执行时CPU时间占比达到预设数值的SQL语句筛选出,或者是将SQL语句的逻辑读的次数达到预设次数的SQL语句筛选出来,等等。
本实施例中,SQL执行计划控制系统可以实时对执行计划中的SQL语句进行筛选,以尽快将执行计划中的SQL语句筛选出,或者SQL执行计划控制系统定时对执行计划中的SQL语句进行筛选,以减轻系统负担。
分析模块102,用于当筛选出预设类型的SQL语句后,分析筛选出的各SQL语句是否无对应的执行计划在预定的执行计划管理表中供选择和执行;
本实施例中,当筛选出预设类型的SQL语句后,查找筛选出的各SQL语句对应的执行计划,并获取执行计划管理(SQL Plan Management,SPM)表,以分析筛选出的SQL语句对应的执行计划是否不在该执行计划管理表中。其中,执行计划管理表中包含的执行计划供SQL执行计划控制系统选择并执行。
具体地,可以将筛选出的SQL语句对应的执行计划逐一与执行计划管理表中的执行计划进行比对,如果筛选出的SQL语句对应的执行计划与执行计划管理表中的执行计划相同,则筛选出的SQL语句对应的执行计划在该执行计划管理表中,如果两者不相同,则筛选出的SQL语句对应的执行计划不在该执行计划管理表中。
加载模块103,用于若有筛选出的SQL语句无对应的执行计划在预定的执行计划管理表中供选择和执行,则将筛选出的SQL语句对应的当前执行计划加载到所述执行计划管理表中供选择和执行。
本实施例中,由于筛选出来的SQL语句对应的执行次数达到预设次数的SQL语句,或者筛选出来的SQL语句执行时CPU时间占比达到预设数值,或者筛选出来的SQL语句SQL语句的逻辑读的次数达到预设次数,因此,可以认为筛选出来的SQL语句对应的执行计划是适合于绝大多数数据的最优执行计划,因此,将这些筛选出的SQL语句对应的执行计划加载到执行计划管理表中供选择和执行。
在一优选的实施例中,在上述图4的实施例的基础上,上述筛选模块101包括:
提取单元,用于提取SQL语句的预设类型的执行参数,根据预存的执行参数的类型与阈值的关联关系确定各预设类型的执行参数对应的阈值;
第一分析单元,用于分析各SQL语句对应的预设类型的执行参数是否大于等于对应的阈值;
确定单元,用于若SQL语句有对应的预设类型的执行参数大于等于对应的阈值,则确定有对应的预设类型的执行参数大于等于对应的阈值的SQL语句为所述预设类型的SQL语句。
本实施例中,对SQL语句中的预设类型的执行参数进行提取,预设类型的执行参数可以是SQL语句的执行次数、CPU时间占比及逻辑读的次数。预先存储执行参数的类型与阈值的关联关系,例如SQL语句的执行次数对应的阈值为第一阈值、CPU时间占比对应的阈值为第二阈值、逻辑读的次数对应的阈值为第三阈值。
分析各个SQL语句对应的预设类型的执行参数是否大于等于对应的阈值例如,分析各个SQL语句对应的SQL执行次数是否大于等于第一阈值、分析各个SQL语句对应的CPU时间占比是否大于等于第二阈值、分析各个SQL语句对应的逻辑读的次数是否大于等于第三阈值,若一个SQL语句有对应的预设类型的执行参数大于等于对应的阈值,例如,某个SQL语句对应的SQL执行次数大于等于第一阈值、该SQL语句对应的CPU时间占比大于等于第二阈值,和/或,该SQL语句对应的逻辑读的次数大于等于第三阈值,则确定该SQL语句为预设类型的SQL语句,将该预设类型的SQL语句筛选出来。
在一优选的实施例中,在上述图4的实施例的基础上,SQL执行计划管理的装置还包括:
清理模块,用于按预设的清理规则清理所述执行计划管理表中的执行计划。
本实施例中,为了减轻系统的负担,需要对执行计划管理表中的执行计划进行清理,一般来说,是对非固定状态的执行计划进行清理。按照预设的清理规则清理执行计划,例如可以将久未执行的非固定状态的执行计划进行清理,或者对不能重现的非固定状态的执行计划进行清理等等。
本实施例中,可以实时地对执行计划表中的非固定状态的执行计划进行清理,以使得系统在任意时刻均处于较优的运行状态,或者定时地对执行计划表中的非固定状态的执行计划进行清理,以对需要进行清理的执行计划集中处理。
在一优选的实施例中,在上述实施例的基础上,清理模块包括:
第一获取单元,用于获取所述执行计划管理表中的第一非固定状态的执行计划;
第一判断单元,用于判断所述第一非固定状态的执行计划是否超过预定执行期限未曾执行;或者判断所述第一非固定状态的执行计划是否为不能被数据库重现的执行计划;或者判断所述第一非固定状态的执行计划是否经过执行计划验证流程后未被验证通过;
第一清理单元,用于若是,则对所述第一非固定状态的执行计划进行第一次清理。
本实施例中,在对执行计划管理表中的执行计划进行清理前,首先获取执行计划管理表中的所有第一非固定状态的执行计划,然后判断每一第一非固定状态的执行计划是否超过预定执行期限未曾执行(例如,超过365天未曾执行),或者,判断每一第一非固定状态的执行计划是否为不能被数据库重现的执行计划,或者,判断每一第一非固定状态的执行计划是否经过执行计划验证流程后未被验证通过,如果上述三种情况中的一种情况判断的结果为“是”,即某一第一非固定状态的执行计划超过预定执行期限未曾执行、为不能被数据库重现的执行计划或者经过执行计划验证流程后未被验证通过,则对满足条件的第一非固定状态的执行计划进行清理。
在一优选的实施例中,在上述实施例的基础上,所述清理模块进一步包括:
第二分析单元,用于在进行第一次清理后,分析第一次清理后的执行计划管理表中的执行计划的总数量是否大于预设数量;
第二获取单元,用于若是,则获取第一次清理后的执行计划管理表中的第二非固定状态的执行计划;
第二判断单元,用于判断所述第二非固定状态的执行计划是否从未被选择和执行;或者判断所述第二非固定状态的执行计划第一次加载至所述执行计划管理表中的时间是否在预设时间之前;
第二清理单元,用于若是,则对所述第二非固定状态的执行计划进行第二次清理;若第二次清理后的执行计划管理表中的执行计划的总数量大于所述预设数量,则根据加载时间对第二次清理后剩余的所述第二非固定状态的执行计划进行清理。
本实施例中,在进行第一次清理后,分析经过第一次清理后的执行计划管理表中的执行计划的总数量是否大于预设数量,例如是否大于20000,如果大于预设数量,则需要进一步对执行计划管理表中的执行计划进行清理,以进一步减轻系统负担,优化系统的运行。
本实施例同样对非固定状态的执行计划进行清理,即获取第一次清理后后的执行计划管理表中的所有第二非固定状态的执行计划,然后判断每一第二非固定状态的执行计划是否从未被选择和执行(即最近一次执行时间是空),或者判断每一第二非固定状态的执行计划第一次加载至执行计划管理表中的时间是否在预设时间之前(例如在60天之前),如果上述两种情况中的一种情况判断的结果为“是”,即某一第二非固定状态的执行计划从未被选择和执行或者第一次加载至执行计划管理表中的时间是否在预设时间之前,则对满足条件的第二非固定状态的执行计划进行清理。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种SQL执行计划管理的方法,其特征在于,所述SQL执行计划管理的方法包括:
S1,SQL执行计划控制系统按预定的筛选规则筛选预设类型的SQL语句;
S2,当筛选出预设类型的SQL语句后,分析筛选出的各SQL语句是否无对应的执行计划在预定的执行计划管理表中供选择和执行;
S3,若有筛选出的SQL语句无对应的执行计划在预定的执行计划管理表中供选择和执行,则将筛选出的SQL语句对应的当前执行计划加载到所述执行计划管理表中供选择和执行;
S4,按预设的清理规则清理所述执行计划管理表中的执行计划;
步骤S4包括:
获取所述执行计划管理表中的第一非固定状态的执行计划;
判断所述第一非固定状态的执行计划是否超过预定执行期限未曾执行;或者
判断所述第一非固定状态的执行计划是否为不能被数据库重现的执行计划;或者
判断所述第一非固定状态的执行计划是否经过执行计划验证流程后未被验证通过;
若是,则对所述第一非固定状态的执行计划进行第一次清理。
2.根据权利要求1所述SQL执行计划管理的方法,其特征在于,所述步骤S1包括:
S11,提取SQL语句的预设类型的执行参数,根据预存的执行参数的类型与阈值的关联关系确定各预设类型的执行参数对应的阈值;
S12,分析各SQL语句对应的预设类型的执行参数是否大于等于对应的阈值;
S13,若SQL语句有对应的预设类型的执行参数大于等于对应的阈值,则确定有对应的预设类型的执行参数大于等于对应的阈值的SQL语句为所述预设类型的SQL语句。
3.根据权利要求1所述SQL执行计划管理的方法,其特征在于,所述步骤S4进一步包括:
在进行第一次清理后,分析第一次清理后的执行计划管理表中的执行计划的总数量是否大于预设数量;
若是,则获取第一次清理后的执行计划管理表中的第二非固定状态的执行计划;
判断所述第二非固定状态的执行计划是否从未被选择和执行;或者
判断所述第二非固定状态的执行计划第一次加载至所述执行计划管理表中的时间是否在预设时间之前;
若是,则对所述第二非固定状态的执行计划进行第二次清理;
若第二次清理后的执行计划管理表中的执行计划的总数量大于所述预设数量,则根据加载时间对第二次清理后剩余的所述第二非固定状态的执行计划进行清理。
4.一种SQL执行计划管理的装置,其特征在于,所述SQL执行计划管理的装置包括:
筛选模块,用于按预定的筛选规则筛选预设类型的SQL语句;
分析模块,用于当筛选出预设类型的SQL语句后,分析筛选出的各SQL语句是否无对应的执行计划在预定的执行计划管理表中供选择和执行;
加载模块,用于若有筛选出的SQL语句无对应的执行计划在预定的执行计划管理表中供选择和执行,则将筛选出的SQL语句对应的当前执行计划加载到所述执行计划管理表中供选择和执行;
清理模块,用于按预设的清理规则清理所述执行计划管理表中的执行计划;
所述清理模块包括:
第一获取单元,用于获取所述执行计划管理表中的第一非固定状态的执行计划;
第一判断单元,用于判断所述第一非固定状态的执行计划是否超过预定执行期限未曾执行;或者判断所述第一非固定状态的执行计划是否为不能被数据库重现的执行计划;或者判断所述第一非固定状态的执行计划是否经过执行计划验证流程后未被验证通过;
第一清理单元,用于若是,则对所述第一非固定状态的执行计划进行第一次清理。
5.根据权利要求4所述SQL执行计划管理的装置,其特征在于,所述筛选模块包括:
提取单元,用于提取SQL语句的预设类型的执行参数,根据预存的执行参数的类型与阈值的关联关系确定各预设类型的执行参数对应的阈值;
第一分析单元,用于分析各SQL语句对应的预设类型的执行参数是否大于等于对应的阈值;
确定单元,用于若SQL语句有对应的预设类型的执行参数大于等于对应的阈值,则确定有对应的预设类型的执行参数大于等于对应的阈值的SQL语句为所述预设类型的SQL语句。
6.根据权利要求4所述SQL执行计划管理的装置,其特征在于,所述清理模块进一步包括:
第二分析单元,用于在进行第一次清理后,分析第一次清理后的执行计划管理表中的执行计划的总数量是否大于预设数量;
第二获取单元,用于若是,则获取第一次清理后的执行计划管理表中的第二非固定状态的执行计划;
第二判断单元,用于判断所述第二非固定状态的执行计划是否从未被选择和执行;或者判断所述第二非固定状态的执行计划第一次加载至所述执行计划管理表中的时间是否在预设时间之前;
第二清理单元,用于若是,则对所述第二非固定状态的执行计划进行第二次清理;若第二次清理后的执行计划管理表中的执行计划的总数量大于所述预设数量,则根据加载时间对第二次清理后剩余的所述第二非固定状态的执行计划进行清理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610589012.1A CN106407246B (zh) | 2016-07-22 | 2016-07-22 | Sql执行计划管理的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610589012.1A CN106407246B (zh) | 2016-07-22 | 2016-07-22 | Sql执行计划管理的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106407246A CN106407246A (zh) | 2017-02-15 |
CN106407246B true CN106407246B (zh) | 2020-12-04 |
Family
ID=58004150
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610589012.1A Active CN106407246B (zh) | 2016-07-22 | 2016-07-22 | Sql执行计划管理的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106407246B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107679056B (zh) * | 2017-06-25 | 2021-03-02 | 平安科技(深圳)有限公司 | 生成sql语句的方法、电子装置及可读存储介质 |
CN108763536B (zh) * | 2018-05-31 | 2020-04-14 | 阿里巴巴集团控股有限公司 | 数据库访问方法及装置 |
CN109542868A (zh) * | 2018-09-28 | 2019-03-29 | 中国平安人寿保险股份有限公司 | 定位异常sql语句的方法、装置、电子设备及存储介质 |
CN111797112B (zh) * | 2020-06-05 | 2022-04-01 | 武汉大学 | 一种PostgreSQL预备语句执行优化方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102393842A (zh) * | 2011-06-28 | 2012-03-28 | 用友软件股份有限公司 | 指令处理装置和指令处理方法 |
CN102436494A (zh) * | 2011-11-11 | 2012-05-02 | 中国工商银行股份有限公司 | 基于实践检验的执行计划优化的装置及方法 |
CN102541884A (zh) * | 2010-12-10 | 2012-07-04 | 中国移动通信集团贵州有限公司 | 数据库优化方法和装置 |
CN103984726A (zh) * | 2014-05-16 | 2014-08-13 | 上海新炬网络技术有限公司 | 一种数据库执行计划的局部修正方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9031933B2 (en) * | 2013-04-03 | 2015-05-12 | International Business Machines Corporation | Method and apparatus for optimizing the evaluation of semantic web queries |
-
2016
- 2016-07-22 CN CN201610589012.1A patent/CN106407246B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102541884A (zh) * | 2010-12-10 | 2012-07-04 | 中国移动通信集团贵州有限公司 | 数据库优化方法和装置 |
CN102393842A (zh) * | 2011-06-28 | 2012-03-28 | 用友软件股份有限公司 | 指令处理装置和指令处理方法 |
CN102436494A (zh) * | 2011-11-11 | 2012-05-02 | 中国工商银行股份有限公司 | 基于实践检验的执行计划优化的装置及方法 |
CN103984726A (zh) * | 2014-05-16 | 2014-08-13 | 上海新炬网络技术有限公司 | 一种数据库执行计划的局部修正方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106407246A (zh) | 2017-02-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6723989B2 (ja) | データ駆動型検査用フレームワーク | |
US8607198B2 (en) | Cross-concern code coverage assessment | |
US8140911B2 (en) | Dynamic software tracing | |
CN106407246B (zh) | Sql执行计划管理的方法及装置 | |
CN109918296B (zh) | 软件自动化测试方法及装置 | |
CN110390198B (zh) | 一种对小程序的风险巡检方法、装置及电子设备 | |
US20120150825A1 (en) | Cleansing a Database System to Improve Data Quality | |
US8006138B2 (en) | Software quality assessment based on semantic similarities | |
CN101183332A (zh) | 一种根据程序内容自动生成测试数据集的方法和装置 | |
CN111338692A (zh) | 基于漏洞代码的漏洞分类方法、装置及电子设备 | |
CN114461534A (zh) | 软件性能测试方法、系统、电子设备及可读存储介质 | |
US8543552B2 (en) | Detecting statistical variation from unclassified process log | |
US8850407B2 (en) | Test script generation | |
CN109063040B (zh) | 客户端程序数据采集方法及系统 | |
CN111061998A (zh) | 一种用于计量经济学分析模型及计量分析方法 | |
CN111913937B (zh) | 数据库运维方法和装置 | |
CN113220551A (zh) | 指标趋势预测及预警方法、装置、电子设备及存储介质 | |
CN109389972B (zh) | 语义云功能的质量测试方法、装置、存储介质和设备 | |
CN111435327B (zh) | 一种日志记录的处理方法、装置及系统 | |
CN110895529B (zh) | 结构化查询语言的处理方法及相关装置 | |
CN114329116B (zh) | 基于人工智能的智慧园区资源匹配度分析方法及系统 | |
CN113360362B (zh) | 一种动态sql效率检查方法及插件 | |
CN106055625B (zh) | 一种执行业务的方法及装置 | |
KR102217092B1 (ko) | 애플리케이션의 품질 정보 제공 방법 및 장치 | |
CN109284354B (zh) | 脚本搜索方法、装置、计算机设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |