一种数据库SQL索引动态优化方法技术

技术编号:18237811 阅读:62 留言:0更新日期:2018-06-17 01:04
本发明专利技术公开了一种数据库SQL索引动态优化方法,包括如下步骤:步骤S1:通过配置定时任务,定时收集SQL资源使用情况,建立资源基线;步骤S2:对采集后的SQL资源使用情况,分析执行计划与谓词条件的索引情况;步骤S3:对分析的数据进行跟踪,如果达到优化阀值则进行相应的索引的优化实施。本发明专利技术提供的数据库SQL索引动态优化方法,通过对SQL使用情况进行综合监测和分析,并根据谓词条件进行分析实现优化,大大提高SQL执行效率;在SQL发生性能问题初期即被系统干预优化,降低故障发生概率以及故障影响;SQL谓词索引分析全部为自动化完成,无需人为干预,降低人为依赖以及误操作。 1

A dynamic optimization method for database SQL index

This invention discloses a dynamic optimization method of database SQL index, which includes the following steps: step S1: by configuring the timing task, collecting the SQL resource usage, setting up the resource baseline; step S2: the use of the collected SQL resources, the analysis of the index of the execution plan and the predicate condition; step S3: the score If the optimal threshold is reached, the corresponding index can be optimized and implemented. The dynamic optimization method of database SQL index is provided by this invention. Through comprehensive monitoring and analysis of the use of SQL, and optimizing according to the predicate condition, the efficiency of SQL is greatly improved. In the early stage of the performance problem of SQL, the system is optimized by the system to reduce the occurrence probability and the failure effect of the barrier; SQL is predicated. Word indexing analysis is completed automatically, without human intervention, reducing human dependence and misoperation. One

【技术实现步骤摘要】
一种数据库SQL索引动态优化方法
本专利技术涉及一种数据库SQL处理方法,尤其涉及一种数据库SQL索引动态优化方法。
技术介绍
信息技术已成为电信行业至关重要的一种生产力,业务系统的质量直接影响到企业的生产情况。目前传统企业架构中数据库层是其中最为关键的一环,而数据库中高效的SQL执行效率将极大地提高系统的吞吐量。当前环境考虑到不合理的索引设计将产生额外的DML语句产生的索引维护消耗,业务上线前仅安排关键字段的索引设计。在系统运行过程中往往会因为业务需求的改变从而产生大量的变种SQL,如何在系统的运行过程中动态的完成索引优化将显得尤为重要。在此情况下,一般采取以下几种方案中的一种或者多种结合来或多或少的解决系统运行过程中的SQL索引优化问题。请参见图1,现有技术主要有如下两种处理流程:1)、使用IndexAnalyze类第三方软件第三方软件(IndexAnalyze),它提供一些索引使用的监控方案进而判断索引的设计是否合理。具体监控指标与方案根据厂商设计或多或少存在些许差异。当某类指标运行达到预设监控阀值时,结合配置严重置级别策略进行告警,保证问题响应及时性,需人工干预处理。2)、人工巡检处理通过人工定期进行SQL调用量、执行计划等使用情况的巡检,并根据使用情况进行人工干预处理,保证数据库的稳定以及高效。随着业务系统的不断发展,单位时间内的业务吞吐量有大规模的提升,这样也导致了数据库中SQL的调用量直线上升,也必然导致对SQL执行效率要求的提升。因此对数据库SQL进行动态索引优化尤为重要。现有技术存在以下缺点:1)、种类繁多,安全性差当前互联网上各类IndexAnalyze系统大同小异,但各厂商的监控指标严谨性、及时性、准确性仍然存在大量问题,以及对各种数据库平台的支持也不是非常友好。2)、仅起到监测作用IndexAnalyze仅起到相关索引使用情况的监测作用,当新上线的业务SQL产生性能问题时,业务已受到影响,不能避免故障的发生。3)、依赖经验通过人工核查对于数据库DBA的要求非常高。数据库DBA经验越丰富,则越能保证准确性。对于数据库的变更是非常谨慎的,一旦产生人为误操作将导致故障影响范围进一步扩大。以上技术,由于其实现的机制,都存在同样的一个问题,发生问题时,需要人工介入分析并操作,这一系列的操作,即需要大量的时间,也需要具有丰富经验的工程师手工完成处理,在一定程度上故障处理的时间极大的依赖于工程师的个人能力以及对环境的熟悉程度。
技术实现思路
本专利技术所要解决的技术问题是提供一种数据库SQL索引动态优化方法,能够周期性对数据库内部的SQL语句进行调用量、谓词条件、IO、CPU等相关资源进行采集分析;根据SQL语句消耗资源的分析结果,系统动态采取索引优化变更方案,避免故障的发生。本专利技术为解决上述技术问题而采用的技术方案是提供一种数据库SQL索引动态优化方法,包括如下步骤:步骤S1:通过配置定时任务,定时收集SQL资源使用情况,建立资源基线;步骤S2:对采集后的SQL资源使用情况,分析执行计划与谓词条件的索引情况;步骤S3:对分析的数据进行跟踪,如果达到优化阀值则进行相应的索引的优化实施。上述的数据库SQL索引动态优化方法,其中,所述步骤S1中的配置定时任务包括:任务的创建、取消、更新、删除、查询和后台调度操作;设置任务为一次执行或多次循环执行,并通过过滤核心资源,将关键信息加入列表,记录在信息采集库中。上述的数据库SQL索引动态优化方法,其中,所述步骤S1收集SQL资源的过程如下:步骤S11:收集SQL基础运行信息,调用、耗时资源,包括:调用量、执行时长、SQL版本、逻辑读和物理读;步骤S12:将SQL中的过滤条件进行拆分,对相关谓词字段进行分析,包括谓词量、谓词选择性、谓词结果集和谓词数据倾斜度;步骤S13:执行路径采集,收集SQL在数据扫描的过程中使用的数据访问方式,所述数据访问方式包括全表扫描、索引唯一扫描或索引范围扫描。上述的数据库SQL索引动态优化方法,其中,所述步骤S2包括分析SQL的访问路径和谓词字段选择性,所述步骤S3根据谓词字段的选择性自动化建立谓词索引完成对应索引的优化,以及根据谓词字段的数据访问方式以及选择性将无效索引去除。上述的数据库SQL索引动态优化方法,其中,所述谓词选择性f值计算如下:其中,c1,c2,cN代表该谓词条件的记录数,再次根据该记录数去重,获得非重复值,并使用非重复值除以总记录数获得该谓词条件的选择性;当f值达到30%时,则判断根据该谓词条件过滤的数据结果集较小,并为该谓词字段建立普通B树索引。上述的数据库SQL索引动态优化方法,其中,所述谓词数据倾斜度计算如下:d=distinct(Col)f=[d1{count(col)},d2{count(col)},dN{count(col)}]其中,d为该谓词字段的唯一性数据,通过分类计算d中数据的分布情况并进行排序即可得知数据分布是否均匀,是否存在异常倾斜的情况;当谓词数据倾斜度超过预设阈值时,根据其他谓词字段建立复合索引。本专利技术对比现有技术有如下的有益效果:本专利技术提供的数据库SQL索引动态优化方法,通过对SQL使用情况进行综合监测和分析,并根据谓词条件进行分析实现优化,大大提高SQL执行效率;在SQL发生性能问题初期即被系统干预优化,降低故障发生概率以及故障影响;SQL谓词索引分析全部为自动化完成,无需人为干预,降低人为依赖以及误操作。附图说明图1为现有数据库SQL索引动态优化流程图;图2为本专利技术数据库SQL索引动态优化流程图;图3为本专利技术数据库SQL索引动态优化系统架构示意图。具体实施方式下面结合附图和实施例对本专利技术作进一步的描述。图2为本专利技术数据库SQL索引动态优化流程图。请参见图2,本专利技术提供的数据库SQL索引动态优化方法,包括如下步骤:步骤S1:通过配置定时任务,定时收集SQL资源使用情况,建立资源基线;步骤S2:对采集后的SQL资源使用情况,分析执行计划与谓词条件的索引情况;步骤S3:对分析的数据进行跟踪,如果达到优化阀值则进行相应的索引的优化实施。图3为本专利技术数据库SQL索引动态优化系统架构示意图。请继续参见图3,本专利技术主要分为四层来实现,下面详细介绍各层实现及功能。1.初始化层:该层主要负责任务的管理,主要有任务的创建、取消、更新、删除、查询和后台调度等操作。定义监控任务,可定义一次执行或多次循环执行,通过过滤核心资源,将关键信息加入列表,记录在信息采集库中。2.信息采集层:将SQL使用资源进行收集以便于进行谓词索引分析,数据主要如以下3个方面:1、SQL采集资源,收集SQL基础运行信息,调用、耗时等相关资源。●调用量●执行时长●SQL版本●逻辑读●物理读2、SQL条件拆分,将SQL中的过滤条件进行拆分,对相关谓词字段进行分析。●谓词量●谓词选择性●谓词结果集●谓词数据倾斜3、执行路径采集,收集SQL在数据扫描的过程中使用的数据访问方式,如全表扫描、索引唯一扫描、索引范围扫描等。●全表扫描●索引唯一扫描●索引范围扫描3.数据分析层:通过分析SQL的访问路径、谓词字段选择性,以便生成对应的索引优化建议。3.1谓词选择性分析其中,c1,c2,cN代表该谓词条件的记录数,再次根据该记录数去重获得本文档来自技高网
...
一种数据库SQL索引动态优化方法

【技术保护点】
1.一种数据库SQL索引动态优化方法,其特征在于,包括如下步骤:

【技术特征摘要】
1.一种数据库SQL索引动态优化方法,其特征在于,包括如下步骤:步骤S1:通过配置定时任务,定时收集SQL资源使用情况,建立资源基线;步骤S2:对采集后的SQL资源使用情况,分析执行计划与谓词条件的索引情况;步骤S3:对分析的数据进行跟踪,如果达到优化阀值则进行相应的索引的优化实施。2.如权利要求1所述的数据库SQL索引动态优化方法,其特征在于,所述步骤S1中的配置定时任务包括:任务的创建、取消、更新、删除、查询和后台调度操作;设置任务为一次执行或多次循环执行,并通过过滤核心资源,将关键信息加入列表,记录在信息采集库中。3.如权利要求1所述的数据库SQL索引动态优化方法,其特征在于,所述步骤S1收集SQL资源的过程如下:步骤S11:收集SQL基础运行信息,调用、耗时资源,包括:调用量、执行时长、SQL版本、逻辑读和物理读;步骤S12:将SQL中的过滤条件进行拆分,对相关谓词字段进行分析,包括谓词量、谓词选择性、谓词结果集和谓词数据倾斜度;步骤S13:执行路径采集,收集SQL在数据扫描的过程中使用的数据访问方式,所...

【专利技术属性】
技术研发人员:程永新孙玉颖胡杰
申请(专利权)人:上海新炬网络技术有限公司
类型:发明
国别省市:上海,31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1