一种优化数据库的方法及装置与流程

文档序号:14911286发布日期:2018-07-10 23:29阅读:199来源:国知局

本发明涉及数据库优化技术,具体涉及一种优化数据库的方法及装置。



背景技术:

随着互联网快速发展及全球信息化的快速迈进,大量企业级系统与全球广域网(Web,World Wide Web)应用程序应运而生,而数据库作为企业信息的管理中心,需要完成对应用程序数据的提取、存储等操作地有效处理,企业级数据库的稳定运行与高效响应已成为业务运营保障的有效支撑,采用良好的数据库优化维护方法势在必行。现有技术中通常采用:内部组件服务的进程配置或外部服务数据直采的方法进行数据库优化。具体地:

内部组件服务的进程配置:由数据库系统自身提供优化系统配置方案,建立生产数据库同时,配备既定的内部组件、服务进程。各组件进程随数据库启动而加载,通过组件内部进程的监听与采集完成数据库优化指标的分析,内部组件服务的进程配置方式是基于浏览器/服务器模式的,可集中式管理多套数据库。缺点是大量服务进程需要与数据库争用系统资源,并需绑定数据库组件与特定中间件才能实现数据库的集中管理。

外部服务数据直采:由外部服务提供优化系统的配置方案,需要目标生产数据库建立程序用户和优化分析表,通过采集逻辑将数据库统计配置信息写入优化分析表,使用相关配置信息在生产库中查询系统性能指标。外部服务数据直采没有进程绑定,部署独立于生产数据库。缺点是每次生成优化分析都需要访问生产数据库,同时优化分析占用数据库系统空间,虽然客户端部署与生产分离,但反复相同查询需要多次耗费生产数据库资源。采用外部服务的优化系统基于客户端/服务器模式,且可视化工具需要图形界面显示,则需要配置在具备远程桌面的独立主机,完成优化分析结果访问。

但是,采用现有技术中的数据库优化方法存在以下缺陷:

1)资源耗费情况严重:内部组件服务的进程配置会加载大量的管理服务来启动,数据库需要装载组件和软件工具包以及产品特定中间件,受管的每台数据库服务器需要预装代理程序,不考虑系统资源繁忙程度进行定时或实时采集,大量内部服务进程与系统争用资源,造成数据库性能不稳定,影响了生产数据库作业的执行效率,当服务进程出现故障时,则多种系统指标如内存和CPU等出现峰值。外部服务数据直采需要占用数据空间,第三方优化维护工具需要对优化数据进行多次查询,相同数据采集查询会多次耗费系统资源。二者无法实现生产数据库系统资源与优化维护使用资源的分离。

2)系统架构臃肿、分析优化数据困难:内部组件服务的进程配置是需安装数据库产品特定的中间件以及组件包,系统架构较为臃肿,外部服务数据直采是基于客户端/服务器模式,需要远程登录主机访问客户端优化维护工具,不易于数据库维护人员日常优化维护提取相关分析数据。

3)实现方案不够合理、缺乏灵活性:现有数据库优化功能实现较为死板,无法根据企业数据库的实际优化需求灵活、动态调整优化分析的功能点。不具备优化功能点的柔性化定制与变更,维护人员不同时间、不同维护需求所关注的功能点不同,柔性功能点配置实现了功能点的可扩展、可伸缩、可插拔,从维护需求出发从不同优化角度有侧重地观察功能点,不必每次加载全部的优化功能点,管理员也可以对模块的访问权限进行管理,满足不同维护身份的多种维护需求。现有的优化方法在功能与权限配置实现方案较为单一,缺乏动态配置,灵活性较差。

4)缺少产品和部署统一管理:目前引入新型企业级数据库产品类型广泛,而现有优化维护方法多数只维护单一产品类型的数据库,或需要引入不同产品版本的优化维护工具,而现有企业现状是数据库维护人员需要管理多套数据库产品和集中化的优化维护,单一产品类型的优化维护无法满足不同种类产品优化的统一管理和灵活切换。

5)投资成本、业务支撑成本居高不下:功能静态化和捆绑打包服务,导致无法针对企业系统个性化定制功能,由于日常维护重点关注的是有代表性的、易定位故障问题的优化功能点,并不需要关注繁冗复杂的功能点集合,维护每一阶段关注的侧重点也略有不同,比如数据库近期高水位问题导致性能低下,则重点分析存在高水位问题的表所占用数据块的实际使用情况,而不需要每次都加载所有功能点。而由于产品功能静态化,需要进行整体购置或者只能在购置时进行一次性定制,后期定制需要附加成本。故造成成本浪费以及维护优化功能死板。



技术实现要素:

为解决现有存在的技术问题,本发明实施例期望提供一种优化数据库的方法及装置,能够减小数据库资源浪费。

本发明实施例的技术方案是这样实现的:

根据本发明实施例的一方面,提供一种优化数据库的方法,所述方法包括:

对数据库中待优化分析的功能点进行柔性配置,得到配置信息;

根据所述配置信息判断所述功能点当前的采集状态是否处于第一状态,所述第一状态用于表征对所述功能点的采集尚未完成;

确定当前的采集状态处于所述第一状态时,对所述功能点的任务类型进行分类,得到任务分类结果;

检测到所述数据库当前资源的占用情况为空闲时,对应选取与所述任务分类结果对应的优先级处理策略,以根据所述任务类型的任务队列优先级,执行对所述功能点的数据采集。

上述方案中,所述检测到所述数据库当前资源的占用情况为空闲,包括:

获取所述数据库当前资源的运行数据;并根据所述运行数据,确定所述数据库当前资源中忙闲影响因子的运行数据和各忙闲影响因子的配置常量数据;

根据所述忙闲影响因子的运行数据和各忙闲影响因子的配置常量数据,确定所述数据库当前资源的繁忙阈值大于等于所述数据库当前资源的运行数据时,确定所述数据库当前资源的占用情况为空闲。

上述方案中,所述对应选取与所述任务分类结果对应的优先级处理策略,以根据所述任务类型的任务队列优先级,执行对所述功能点的数据采集,包括:

确定所述任务分类结果属于临时任务时,获取所述临时任务的第一优先级任务队列;

将所述功能点置于所述第一优先级任务队列的队尾,并按照所述第一优先级任务队列,执行对队首优先级最高的功能点的数据采集;

或者,确定所述任务分类结果属于预约任务时,根据所述功能点的预约时间获取所述预约任务的第二优先级任务队列;

将所述功能点置于所述第二优先级任务队列的队尾,并按照所述第二优先级任务队列,执行对队首优先级最高的功能点的数据采集;

或者,确定所述任务分类结果属于快照任务时,获取所述快照任务的第三优先级任务队列;

将所述功能点置于所述第三优先级任务队列的队尾,并按照所述第三优先级任务队列,执行对队首优先级最高的功能点的数据采集。

上述方案中,在所述对数据库中待优化分析的功能点进行柔性配置之前,所述方法还包括:

根据所述数据库当前资源的功能点分类信息和装置系统的权限,确定所述数据库的指标采集功能点访问权限;

根据所述访问权限对数据库中待优化分析的功能点进行柔性配置。

上述方案中,所述数据库当前资源的功能点分类信息包括:系统级性能指标信息、数据库参数配置信息、结构化查询语言SQL统计信息、数据空间分布信息以及数据库后台日志信息。

根据本发明实施例的另一方面,提供一种优化数据库的装置,其特征在于,所述装置包括:

优化功能点柔性配置层、性能分析统一接口层和优化指标采集控制层;其中,

所述优化功能点柔性配置层,用于对数据库中待优化分析的功能点进行柔性配置,得到配置信息;

所述性能分析统一接口层,用于根据所述优化功能点柔性配置层得到的所述配置信息,判断所述功能点当前的采集状态是否处于第一状态,所述第一状态用于表征对所述功能点的采集尚未完成;确定当前的采集状态处于所述第一状态时,对所述功能点的任务类型进行分类,得到任务分类结果;

所述优化指标采集控制层,用于检测到所述数据库当前资源的占用情况为空闲时,对应选取与所述任务分类结果对应的优先级处理策略,以根据所述任务类型的任务队列优先级,执行对所述功能点的数据采集。

上述方案中,所述优化指标采集控制层,具体还用于获取所述数据库当前资源的运行数据;并根据所述运行数据,确定所述数据库当前资源中忙闲影响因子的运行数据和各忙闲影响因子的配置常量数据;

根据所述忙闲影响因子的运行数据和各忙闲影响因子的配置常量数据,确定所述数据库当前资源的繁忙阈值大于等于所述数据库当前资源的运行数据时,确定所述数据库当前资源的占用情况为空闲。

上述方案中,所述优化指标采集控制层,具体用于确定所述任务分类结果属于临时任务时,获取所述临时任务的第一优先级任务队列;

将所述功能点置于所述第一优先级任务队列的队尾,并按照所述第一优先级任务队列,执行对队首优先级最高的功能点的数据采集;

或者,确定所述任务分类结果属于预约任务时,根据所述功能点的预约时间获取所述预约任务的第二优先级任务队列;

将所述功能点置于所述第二优先级任务队列的队尾,并按照所述第二优先级任务队列,执行对队首优先级最高的功能点的数据采集;

或者,确定所述任务分类结果属于快照任务时,获取所述快照任务的第三优先级任务队列;

将所述功能点置于所述第三优先级任务队列的队尾,并按照所述第三优先级任务队列,执行对队首优先级最高的功能点的数据采集。

上述方案中,所述优化功能点柔性配置层,还用于根据所述数据库当前资源的功能点分类信息和装置系统的权限,确定所述数据库的指标采集功能点访问权限;并根据所述访问权限对数据库中待优化分析的功能点进行柔性配置。

上述方案中,所述数据库当前资源的功能点分类信息包括:系统级性能指标信息、数据库参数配置信息、结构化查询语言SQL统计信息、数据空间分布信息以及数据库后台日志信息。

本发明实施例提供的一种优化数据库的方法及装置,通过对数据库中待优化分析的功能点进行柔性配置,得到配置信息;根据所述配置信息判断所述功能点当前的采集状态是否处于第一状态,所述第一状态用于表征对所述功能点的采集尚未完成;确定当前的采集状态处于所述第一状态时,对所述功能点的任务类型进行分类,得到任务分类结果;检测到所述数据库当前资源的占用情况为空闲时,对应选取与所述任务分类结果对应的优先级处理策略,以根据所述任务类型的任务队列优先级,执行对所述功能点的数据采集。如此,能够通过忙闲阈值的计算判定系统资源繁忙程度,将数据采集的任务进行分类与优先级划分,满足了优化指标采集任务的多重柔性定制以及系统资源自适应调度,性能接口统一管理,实现跨产品与版本的指标一次增量采集,多次使用,实现优化指标采集与数据库资源分离,部署与生产系统分离释放了生产系统资源,减轻了数据库系统压力。

附图说明

图1为本发明实施例一种优化数据库的方法实现流程图;

图2为本发明实施例中优化功能点柔性配置层的结构示意图;

图3为本发明实施例中指标采集控制的实现流程示意图;

图4为本发明实施例中作业调度动态优先级算法的实现流程示意图;

图5为本发明实施例中优化数据库的装置结构示意图。

具体实施方式

下面结合附图对本发明的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。

图1为本发明实施例一种优化数据库的方法实现流程图;如图1所示,该方法包括:

步骤101,对数据库中待优化分析的功能点进行柔性配置,得到配置信息。

这里,所述方法主要应用于优化数据库的装置。在所述装置中,可以将所述数据库中的优化功能点生成功能配置表、用户功能权限表、用户功能配置表等;并且还可以由一级用户获取到所述数据库中优化所关注的全部功能点,并且所述一级用户还可以对普通用户的功能点访问与权限配置进行分配,待权限配置分配完成后,所述普通用户即可根据分配的权限对数据库中的待优化分析的功能点进行柔性配置,并得到配置信息。这里,所述一级用户是指权限极品最高的数据库维护人员;所述普通用户则是指与所述一级用户相比,级别较低的数据库维护人员。如此,能够满足对数据库的维护需求多样性,让繁冗复杂的优化功能点边界清晰。另外,所述一级用户还可以执行对所述数据库中的新功能点进行增加、部署、删除、隐藏与恢复等操作,并且还能够导出优化分析功能点的数据备份。具体地对数据库中待优化分析的功能点进行柔性配置如图2所示。

图2为本发明实施例中优化功能点柔性配置层的结构示意图;如图2所示:

所述优化功能点柔性配置层包括:访问定制模块201、后台权限分配模块202和功能点配置模块203;其中,所述访问定制模块201用于根据用户对数据库中待优化分析的功能点的配置信息,完成对待优化分析的功能点的批量操作。例如,对数据库中的功能点进行访问和修改等操作,并导出有效的待优化分析功能点的数据备份。所述后台权限分配模块202用于通过一级用户完成对所有用户功能点的访问与权限配置的分配。所述功能点配置模块203用于向一级用户提供数据库优化所关注的全部功能点,并由所述一级用户执行对数据库中的新功能点进行增加、部署、删除以及隐藏与恢复等操作。

步骤102,根据所述配置信息判断所述功能点当前的采集状态是否处于第一状态,所述第一状态用于表征对所述功能点的采集尚未完成;

这里,数据库的维护人员,即普通用户根据个人的数据库访问权限,对数据库中的优化分析功能点进行配置后,若当前所述功能点的采集状态处于己完成状态,则所述数据库维护人员可以在所述数据库中对己完成的功能点进行查询并展示操作;若当前所述功能点的采集状态处于未完成状态,则说明所述功能点当前的采集状态处于第一状态,则需要进行步骤103。

步骤103,确定当前的采集状态处于所述第一状态时,对所述功能点的任务类型进行分类,得到任务分类结果;

这里,当确定所述功能点的当前采集状态处于第一状态,即未完成状态时,判断需要进行指标采集的功能点是否属于临时任务,若确定所述功能点属于临时任务时,则根据所述数据库当前资源的占用情况对临时任务中的第一优先级任务队列对所述功能点进和据采集;若确定所述功能点不属于临时任务,则判断所述功能点是否属于预约任务,当确定所述功能点属于预约任务时,则根据所述功能点的预约时间进入预约任务的第二优先级任务队列的队尾,并按照所述第二优先级任务队列对所述功能点进行数据采集。具体如图3所示。

图3为本发明实施例中指标采集控制的实现流程示意图;如图3所示,数据库维护人员根据个人的数据库访问权限,对数据库中的待优化分析的功能点进行配置,并得到配置信息,若所述待优化分析的功能点的数据采集已经完成,则可以根据查询项在所述数据库中展示优化功能点,若所述功能点的数据未采集完成,则继续判断所述功能点是否为预约任务,若为所述预约任务,则根据所述功能点的预约时间进入预约任务的优先级队列,若所述功能点没有预约,则判断所述功能点为临时任务,则立即执行对所述功能点的数据采集,同时完成数据落地。

步骤104,检测到所述数据库当前资源的占用情况为空闲时,对应选取与所述任务分类结果对应的优先级处理策略,以根据所述任务类型的任务队列优先级,执行对所述功能点的数据采集。

在本发明实施例中,所述检测到所述数据库当前资源的占用情况为空闲,包括:

获取所述数据库当前资源的运行数据;并根据所述运行数据,确定所述数据库当前资源中忙闲影响因子的运行数据和各忙闲影响因子的配置常量数据;根据所述忙闲影响因子的运行数据和各忙闲影响因子的配置常量数据,确定所述数据库当前资源的繁忙阈值大于等于所述数据库当前资源的运行数据时,确定所述数据库当前资源的占用情况为空闲。

具体地,定义所述数据库中的忙闲影响因子θ是指衡量数据库系统资源繁忙程度的影响因子,包括CPU的使用率,I/O使用率,内存使用率m,即θ={c,f,m}。

在本发明实施例中,每个影响因子权重可以根据企业不同的生产运行情况进行调整,本方法默认为Uc=0.4,Uf=0.3,Um=0.3,通常影响数据库繁忙程度的影响因素中CPU占权重相对最大,例如I/O很忙,CPU由于忙于调度任务必然会很忙,CPU忙碌时,I/O存在相对空闲的可能,由于数据库内存划分是一次性分配,用户连接(LOCAL=NO)进程/线程占用的浮动空间相对较小。

定义影响因子配置常量κ,是指根据企业生产系统运行状态,为忙闲影响因子θ配置的单因子使用率,Cκ,Fκ,Mκ分别为CPU、I/O、内存使用率的影响因子配置常量。

例如,对单因子使用率的告警设定值分别为Cκ=95%,Fκ=98%,Mκ=95%,则说明数据库系统已经到了严重繁忙的临界值,要想为生产系统预留一定空间,则需要将采用κ-10%作为默认的影响因子配置常量,Cκ=85%,Fκ=88%,Mκ=85%。这里,允许企业根据生产系统实际情况设定影响因子配置常量。

定义繁闲阈值是指系统繁忙的临界状态,是衡量系统资源使用率的综合指标。具休地,根据忙闲影响因子θ与影响因子配置常量κ计算繁闲阈值的公式如下:

在本发明实施例中,采取繁忙投票判定方法,根据系统指标实际投票结果R有得票情况为2:1或3:0时,则判定为系统资源繁忙,根据作业自动调度优先级算法,此时不执行数据采集,否则认为系统有空闲资源执行指标采集任务。

这里,忙闲影响因子θ与影响因子配置常量κ均取默认值时。公式如下:

例如,系统繁忙投票判定算法中,输入:Uc=0.4,Uio=0.3,Um=0.3,Cκ,Fκ,Mκ为三个影响因子配置常量,繁忙阈值VC为CPU繁忙票数,Vf为I/O繁忙票数,Vm为内存繁忙投票,R为投票结果。设每隔时间τ(秒),生产作业的CPU使用率为PC,I/O使用率为Pf,内存使用率为Pm;

进行初始化后的公式为:VC=0,Vf=0,Vm=0,R=false;

输出R的步骤如下:

通过上述公式计算得出数据库系统当前状态CPU使用率Pc=89%,磁盘使用率Pf=85%,内存使用率Pm=86%,则且且产生了两票繁忙的投票结果,即当前系统资源繁忙,暂不适合数据采集,此后每隔时间τ(秒)会再次触发此判断,直至有资源不再繁忙完成采集任务。本发明实施例通过该算法判定数据库系统资源使用情况对功能点进行动态地自适应采集,优选时段和资源系统资源空闲时段收集性能指标数据,避免与生产系统产生资源争用,且保证资源利用的最大化。

在本发明实施例中,所述对应选取与所述任务分类结果对应的优先级处理策略,以根据所述任务类型的任务队列优先级,执行对所述功能点的数据采集,包括:

确定所述任务分类结果属于临时任务时,获取所述临时任务的第一优先级任务队列;

将所述功能点置于所述第一优先级任务队列的队尾,并按照所述第一优先级任务队列,执行对队首优先级最高的功能点的数据采集;

或者,确定所述任务分类结果属于预约任务时,根据所述功能点的预约时间获取所述预约任务的第二优先级任务队列;

将所述功能点置于所述第二优先级任务队列的队尾,并按照所述第二优先级任务队列,执行对队首优先级最高的功能点的数据采集;

或者,确定所述任务分类结果属于快照任务时,获取所述快照任务的第三优先级任务队列;

将所述功能点置于所述第三优先级任务队列的队尾,并按照所述第三优先级任务队列,执行对队首优先级最高的功能点的数据采集。

这里,所述快照任务中的快照用s表示,是指在固定时间τ间隔内所截取的优化数据指标的采集增量。每个快照具有唯一标识的snap_id按照生成时间顺序自增1。

所述临时任务中的第一优先级任务队列设有(立即执行)临时任务集合M={m1,m2,…,mn},且到达时间为i1<i2<…<in,此时临时优先级为M1>M2>…>Mn,且若mi∈M则

所述预约任务中的第二优先级任务队列设有预约任务集合T={t1,t2,…,tn},且到达时间为e1<e2<…<en,此时预约优先级为T1>T2>…>Tn,且T1的任务进入临时任务M的队尾,且若ti∈T则

所述快照任务中的第三优先级任务队列设有快照集合S={s1,s2,…,sn},且有快照唯一标识的snap_id为sid1<sid2<…<sidn,则有快照优先级为N1<N2<…<Nn。具体地,自动调度优先级算法中,设指标采集任务集合K={k1,k2,…,kn},且K的唯一标识snap_id有kid1<kid2<…<kidn,则快照优先级为N1<N2<…<Nn,临时优先级M1>M2>…>Mn,预约优先级为T1>T2>…>Tn。

具体算法实现过程如图4所示。

图4为本发明实施例中作业调度动态优先级算法的实现流程示意图;如图4所示:

设有任务X即将进入队列执行,则有:

(1)判断所述任务X是否是立即应答任务,若是则执行步骤(2),否则执行步骤(3);

(2)根据所述数据库当前资源的繁忙投票判定算法,确定当前数据库中的资源是否处于繁忙状态,若系统资源繁忙,则间隔时间δ执行步骤(2),否则执行步骤(4);

(3)判断所述任务X是否为预约任务,若是则执行步骤(5),否则执行步骤(6);

(4)将所述任务置于临时任务优先级队列的队尾,并按照所述临时任务优先级队列,执行对级别最低的功能点的数据采集;即M=M+1,执行临时任务M1;

(5)判断预约执行优先级T与T1…Tn的优先级关系,若T≥Ti则执行步骤(7),若T<Ti执行步骤(8);

(6)根据所述数据库当前资源的繁忙投票判定算法,确定当前数据库中的资源是否处于繁忙状态,若系统资源繁忙,则间隔时间δ执行步骤(6),否则执行步骤(9);

(7)根据所述数据库当前资源的繁忙投票判定算法,确定当前数据库中的资源是否处于繁忙状态,若系统资源繁忙,则间隔时间δ执行步骤(7),否则执行步骤(10);

(8)根据所述数据库当前资源的繁忙投票判定算法,确定当前数据库中的资源是否处于繁忙状态,若系统资源繁忙,间隔时间δ执行步骤(8),否则执行步骤(11);

(9)将所述任务置于快照任务优先级队列的队尾,并按照所述快照任务优先级队列,执行对级别最低的功能点的数据采集。即N=N+1,执行预约任务N1;

(10)执行任务Tix;

(11)执行任务Tx;

在本发明实施例中,新生成的数据采集任务X需要判定是否为立即应答任务,若是则获取临时任务优先级队列MX,并且进入临时任务队列的队尾生成临时任务Qm+1,临时任务队列遵循临时优先级执行队列任务。预约执行任务根据任务预约时间获取预约任务优先级队列TX,且排入预约任务优先级队列的队尾生成预约任务Qt+1,预约任务优先级队列遵循预约优先级执行队列任务,且预约任务优先级队列的任务低于临时任务优先级队列的任务优先级。快照任务是用户未标记任务类型,是由系统根据系统资源使用情况而自动调度的任务,快照任务根据快照标识snap_id获取优先级NX,且排入快照子队列生成快照任务Qn+1。临时任务优先级队列的任务优先级最高,预约任务优先级队列的任务优先级次之,快照任务优先级队列的任务优先级最低。

自动调度算法根据系统优化维护需求,考虑了重要及任务时间安排分优先级处理,同时结合下文提出的繁忙投票判定算法,根据系统资源繁忙程度,将数据采集的任务进行分类优先级划分,满足了优化指标采集任务的柔性定制与系统资源自适应任务调度。

在本发明实施例中,在所述对数据库中待优化分析的功能点进行柔性配置之前,所述方法还包括:

根据所述数据库当前资源的功能点分类信息和装置系统的权限,确定所述数据库的指标采集功能点访问权限;根据所述访问权限对数据库中待优化分析的功能点进行柔性配置。

具体地,本地化部署采集数据的原子shell脚本,全面覆盖数据库优化分析的各类功能点,本发明采用了基于不同数据库产品做统一接口封装,该功能点分类方法适用于不同产品、版本做统一的数据库性能维护管理。分为五类接口包含硬件性能指标信息、数据库系统参数配置信息、SQL统计信息、数据空间信息以及数据库后台日志,涵盖了数据库系统设计参数的优化,SQL程序优化,数据库系统内存优化,数据库系统I/O争用优化以及主机操作系统优化。数据库性能指标包含四类接口与一个后台日志分析接口,其中后台日志分析是解析ALERTSID.LOG。本发明实施例以Oracle为例,进行性能指标分类,其他数据库可以参照本方法执行,各优化指标均通过shell脚本实现原子接口部署,具体分类如下:

1)系统级性能指标接口——包括CPU使用率、内存使用率、PAGING SPACE、I/O使用率、KB-Read/Write、DB TIME、DB CPU;

2)数据库系统参数配置接口——DB_BLOCK_SIZE数据块大小、系统全局区SGA、程序全局区PGA、共享池大小SHARED_POOL_SIZE、最大并行进程PARLLEL_MAX_SERVERS、数据库缓冲区大小DB_CACHE_SIZE等若干参数存于参数配置与快照的基表中;

3)SQL统计信息收集接口——SQL文本、等待事件WAIT_EVENTS、等待时间WAIT_TIME、会话信息SESSION、逻辑读BUFFER GETS、物理读PHYSICAL GETS、执行计划SQL PLAN、硬解析HARD PARSE、软解析SOFT PARSE、使用CPU时间CPU_TIME、总执行时间ELAPSED_TIME、执行次数EXECUTIONS、SQL执行流水、大事务执行统计、SQL占用回滚段统计、索引使用统计等若干参数存于SQL统计信息与快照的基表中;

4)数据空间分布接口——表、表空间、数据文件、视图、存储过程、触发器等。表级指标包含:表的大小BYTES、表记录数NUM_ROWS、最后分析时间LAST_ANALYZED、表的默认并行度DEGREE、高水位;表空间数据块大小BLOCKS、表空间增长率、表空间包含的数据文件;有关数据文件的目录、数据文件使用情况;视图与存储过程定义等存在于数据表、表空间、数据文件的相关基表中;

根据上述分类,每个类别的数据库性能指标可以延伸,例如在SQL统计信息中捕获REDO SIZE(每秒)指标变化情况,可以用来估量update、insert、delete的频率,大的REDO SIZE可能是由于LGWR后台进程写日志或归档造成了I/O压力,这里不一一列举。每个类别包含的具体指标均可从数据库系统基表和视图中获取。本发明会将所有视图和基表根据系统繁忙程度自适应采集所有指标数据,保证数据分析来源一次收集后与生产系统分离,生成统一访问接口实现本地优化分析,而生产数据系统资源与优化分析资源的分离,减轻了生产系统由大量优化数据的分析造成的压力,同时根据资源状态自适应调度,实现资源利用最大化。

图5为本发明实施例中优化数据库的装置结构示意图;如图5所示,所述装置包括:

优化功能点柔性配置层501、性能分析统一接口层502和优化指标采集控制层503;其中,

所述优化功能点柔性配置层501,用于对数据库中待优化分析的功能点进行柔性配置,得到配置信息;

所述性能分析统一接口层502,用于根据所述优化功能点柔性配置层501得到的所述配置信息,判断所述功能点当前的采集状态是否处于第一状态,所述第一状态用于表征对所述功能点的采集尚未完成;确定当前的采集状态处于所述第一状态时,根据所述数据库当前资源的占用情况对所述功能点的任务类型进行分类,得到任务分类结果;

所述优化指标采集控制层503,用于检测到所述数据库当前资源的占用情况为空闲时,对应选取与所述任务分类结果对应的优先级处理策略,以根据所述任务类型的任务队列优先级,执行对所述功能点的数据采集。

这里,所述优化指标采集控制层503由任务调度逻辑模块统一指挥,完成了根据生产系统繁忙程度自适应调度数据采集任务,并基于繁忙投票判定算法、自动调度指标采集的优先级算法,同时实现了自动调度、预约执行、立即应答三种指标数据采集模式。性能分析统一接口层502,由web程序逻辑管理功能点的统一定制,并根据数据库每个优化功能点所需的指标数据,从采集的数据指标中获取优化统计结果推送给上一层优化功能点模块。定制功能点在本层完成上传部署。所述优化功能点柔性配置层501,由系统优化配置模块组织数据库优化所关注的全部功能点,维护人员可以根据既定权限定制关注的优化功能点,也可以配置优化功能点。具体地,一级用户可以在所述性能分析统一接口层502获取到所述数据库中优化所关注的全部功能点,并且所述一级用户还可以对普通用户的功能点访问与权限配置进行分配,待权限配置分配完成后,所述普通用户即可根据分配的权限在所述优化功能点柔性配置层501对数据库中的待优化分析的功能点进行柔性配置,并得到配置信息。这里,所述一级用户是指权限极品最高的数据库维护人员;所述普通用户则是指与所述一级用户相比,级别较低的数据库维护人员。如此,能够满足对数据库的维护需求多样性,让繁冗复杂的优化功能点边界清晰。另外,所述一级用户还可以执行对所述数据库中的新功能点进行增加、部署、删除、隐藏与恢复等操作,并且还能够导出优化分析功能点的数据备份。具体地对数据库中待优化分析的功能点进行柔性配置如方法实施例中的图2所示。

数据库的维护人员,即普通用户根据个人的数据库访问权限,在所述优化功能点柔性配置层501对数据库中的优化分析功能点进行配置后,若当前所述功能点的采集状态处于己完成状态,则所述数据库维护人员可以在所述数据库中对己完成的功能点进行查询并展示操作;若当前所述功能点的采集状态处于未完成状态,则说明所述功能点当前的采集状态处于第一状态,则需要所述优化指标采集控制层503判断所述功能点是否属于临时任务,若所述优化指标采集控制层503确定所述功能点属于临时任务时,则根据所述数据库当前资源的占用情况对临时任务中的第一优先级任务队列对所述功能点进和据采集;若确定所述功能点不属于临时任务,则判断所述功能点是否属于预约任务,当确定所述功能点属于预约任务时,则根据所述功能点的预约时间进入预约任务的第二优先级任务队列的队尾,并按照所述第二优先级任务队列对所述功能点进行数据采集。

在本发明实施例中,所述优化指标采集控制层503具体用于获取所述数据库当前资源的运行数据;并根据所述运行数据,确定所述数据库当前资源中忙闲影响因子的运行数据和各忙闲影响因子的配置常量数据;根据所述忙闲影响因子的运行数据和各忙闲影响因子的配置常量数据,确定所述数据库当前资源的繁忙阈值大于等于所述数据库当前资源的运行数据时,确定所述数据库当前资源的占用情况为空闲。

具体地,定义所述数据库中的忙闲影响因子θ是指衡量数据库系统资源繁忙程度的影响因子,包括CPU的使用率,I/O使用率,内存使用率m,即θ={c,f,m}。

在本发明实施例中,每个影响因子权重可以根据企业不同的生产运行情况进行调整,本方法默认为Uc=0.4,Uf=0.3,Um=0.3,通常影响数据库繁忙程度的影响因素中CPU占权重相对最大,例如I/O很忙,CPU由于忙于调度任务必然会很忙,CPU忙碌时,I/O存在相对空闲的可能,由于数据库内存划分是一次性分配,用户连接(LOCAL=NO)进程/线程占用的浮动空间相对较小。

定义影响因子配置常量κ,是指根据企业生产系统运行状态,为忙闲影响因子θ配置的单因子使用率,Cκ,Fκ,Mκ分别为CPU、I/O、内存使用率的影响因子配置常量。

例如,对单因子使用率的告警设定值分别为Cκ=95%,Fκ=98%,Mκ=95%,则说明数据库系统已经到了严重繁忙的临界值,要想为生产系统预留一定空间,则需要将采用κ-10%作为默认的影响因子配置常量,Cκ=85%,Fκ=88%,Mκ=85%。这里,允许企业根据生产系统实际情况设定影响因子配置常量。

定义繁闲阈值是指系统繁忙的临界状态,是衡量系统资源使用率的综合指标。具休地,根据忙闲影响因子θ与影响因子配置常量κ计算繁闲阈值的公式如下:

在本发明实施例中,采取繁忙投票判定方法,根据系统指标实际投票结果R有得票情况为2:1或3:0时,则判定为系统资源繁忙,根据作业自动调度优先级算法,此时不执行数据采集,否则认为系统有空闲资源执行指标采集任务。

这里,忙闲影响因子θ与影响因子配置常量κ均取默认值时。公式如下:

例如,系统繁忙投票判定算法中,输入:Uc=0.4,Uio=0.3,Um=0.3,Cκ,Fκ,Mκ为三个影响因子配置常量,繁忙阈值VC为CPU繁忙票数,Vf为I/O繁忙票数,Vm为内存繁忙投票,R为投票结果。设每隔时间τ(秒),生产作业的CPU使用率为PC,I/O使用率为Pf,内存使用率为Pm;

进行初始化后的公式为:VC=0,Vf=0,Vm=0,R=false;

输出R的步骤如下:

通过上述公式计算得出数据库系统当前状态CPU使用率Pc=89%,磁盘使用率Pf=85%,内存使用率Pm=86%,则且且产生了两票繁忙的投票结果,即当前系统资源繁忙,暂不适合数据采集,此后每隔时间τ(秒)会再次触发此判断,直至有资源不再繁忙完成采集任务。本发明实施例通过该算法判定数据库系统资源使用情况对功能点进行动态地自适应采集,优选时段和资源系统资源空闲时段收集性能指标数据,避免与生产系统产生资源争用,且保证资源利用的最大化。

在本发明实施例中,所述优化指标采集控制层503具体用于确定所述任务分类结果属于临时任务时,获取所述临时任务的第一优先级任务队列;

将所述功能点置于所述第一优先级任务队列的队尾,并按照所述第一优先级任务队列,执行对队首优先级最高的功能点的数据采集;

或者,确定所述任务分类结果属于预约任务时,根据所述功能点的预约时间获取所述预约任务的第二优先级任务队列;

将所述功能点置于所述第二优先级任务队列的队尾,并按照所述第二优先级任务队列,执行对队首优先级最高的功能点的数据采集;

或者,确定所述任务分类结果属于快照任务时,获取所述快照任务的第三优先级任务队列;

将所述功能点置于所述第三优先级任务队列的队尾,并按照所述第三优先级任务队列,执行对队首优先级最高的功能点的数据采集。

这里,所述快照任务中的快照用s表示,是指在固定时间τ间隔内所截取的优化数据指标的采集增量。每个快照具有唯一标识的snap_id按照生成时间顺序自增1。

所述临时任务中的第一优先级任务队列设有(立即执行)临时任务集合M={m1,m2,…,mn},且到达时间为i1<i2<…<in,此时临时优先级为M1>M2>…>Mn,且若mi∈M则

所述预约任务中的第二优先级任务队列设有预约任务集合T={t1,t2,…,tn},且到达时间为e1<e2<…<en,此时预约优先级为T1>T2>…>Tn,且T1的任务进入临时任务M的队尾,且若ti∈T则

所述快照任务中的第三优先级任务队列设有快照集合S={s1,s2,…,sn},且有快照唯一标识的snap_id为sid1<sid2<…<sidn,则有快照优先级为N1<N2<…<Nn。具体地,自动调度优先级算法中,设指标采集任务集合K={k1,k2,…,kn},且K的唯一标识snap_id有kid1<kid2<…<kidn,则快照优先级为N1<N2<…<Nn,临时优先级M1>M2>…>Mn,预约优先级为T1>T2>…>Tn。

具体算法实现过程如图4所示。

图4为本发明实施例中作业调度动态优先级算法的实现流程示意图;如图4所示:

设有任务X即将进入队列执行,则有:

(1)判断所述任务X是否是立即应答任务,若是则执行步骤(2),否则执行步骤(3);

(2)根据所述数据库当前资源的繁忙投票判定算法,确定当前数据库中的资源是否处于繁忙状态,若系统资源繁忙,则间隔时间δ执行步骤(2),否则执行步骤(4);

(3)判断所述任务X是否为预约任务,若是则执行步骤(5),否则执行步骤(6);

(4)将所述任务置于临时任务优先级队列的队尾,并按照所述临时任务优先级队列,执行对级别最低的功能点的数据采集;即M=M+1,执行临时任务M1;

(5)判断预约执行优先级T与T1…Tn的优先级关系,若T≥Ti则执行步骤(7),若T<Ti执行步骤(8);

(6)根据所述数据库当前资源的繁忙投票判定算法,确定当前数据库中的资源是否处于繁忙状态,若系统资源繁忙,则间隔时间δ执行步骤(6),否则执行步骤(9);

(7)根据所述数据库当前资源的繁忙投票判定算法,确定当前数据库中的资源是否处于繁忙状态,若系统资源繁忙,则间隔时间δ执行步骤(7),否则执行步骤(10);

(8)根据所述数据库当前资源的繁忙投票判定算法,确定当前数据库中的资源是否处于繁忙状态,若系统资源繁忙,间隔时间δ执行步骤(8),否则执行步骤(11);

(9)将所述任务置于快照任务优先级队列的队尾,并按照所述快照任务优先级队列,执行对级别最低的功能点的数据采集。即N=N+1,执行预约任务N1;

(10)执行任务Tix;

(11)执行任务Tx;

在本发明实施例中,新生成的数据采集任务X需要判定是否为立即应答任务,若是则获取临时任务优先级队列MX,并且进入临时任务队列的队尾生成临时任务Qm+1,临时任务队列遵循临时优先级执行队列任务。预约执行任务根据任务预约时间获取预约任务优先级队列TX,且排入预约任务优先级队列的队尾生成预约任务Qt+1,预约任务优先级队列遵循预约优先级执行队列任务,且预约任务优先级队列的任务低于临时任务优先级队列的任务优先级。快照任务是用户未标记任务类型,是由系统根据系统资源使用情况而自动调度的任务,快照任务根据快照标识snap_id获取优先级NX,且排入快照子队列生成快照任务Qn+1。临时任务优先级队列的任务优先级最高,预约任务优先级队列的任务优先级次之,快照任务优先级队列的任务优先级最低。

自动调度算法根据系统优化维护需求,考虑了重要及任务时间安排分优先级处理,同时结合下文提出的繁忙投票判定算法,根据系统资源繁忙程度,将数据采集的任务进行分类优先级划分,满足了优化指标采集任务的柔性定制与系统资源自适应任务调度。

在本发明实施例中,所述优化功能点柔性配置层501,还用于根据所述数据库当前资源的功能点分类信息和装置系统的权限,确定所述数据库的指标采集功能点访问权限;并根据所述访问权限对数据库中待优化分析的功能点进行柔性配置。

具体地,本地化部署采集数据的原子shell脚本,全面覆盖数据库优化分析的各类功能点,本发明采用了基于不同数据库产品做统一接口封装,该功能点分类方法适用于不同产品、版本做统一的数据库性能维护管理。分为五类接口包含硬件性能指标信息、数据库系统参数配置信息、SQL统计信息、数据空间信息以及数据库后台日志,涵盖了数据库系统设计参数的优化,SQL程序优化,数据库系统内存优化,数据库系统I/O争用优化以及主机操作系统优化。数据库性能指标包含四类接口与一个后台日志分析接口,其中后台日志分析是解析ALERTSID.LOG。本发明实施例以Oracle为例,进行性能指标分类,其他数据库可以参照本方法执行,各优化指标均通过shell脚本实现原子接口部署,具体分类如下:

1)系统级性能指标接口——包括CPU使用率、内存使用率、PAGING SPACE、I/O使用率、KB-Read/Write、DB TIME、DB CPU;

2)数据库系统参数配置接口——DB_BLOCK_SIZE数据块大小、系统全局区SGA、程序全局区PGA、共享池大小SHARED_POOL_SIZE、最大并行进程PARLLEL_MAX_SERVERS、数据库缓冲区大小DB_CACHE_SIZE等若干参数存于参数配置与快照的基表中;

3)SQL统计信息收集接口——SQL文本、等待事件WAIT_EVENTS、等待时间WAIT_TIME、会话信息SESSION、逻辑读BUFFER GETS、物理读PHYSICAL GETS、执行计划SQL PLAN、硬解析HARD PARSE、软解析SOFT PARSE、使用CPU时间CPU_TIME、总执行时间ELAPSED_TIME、执行次数EXECUTIONS、SQL执行流水、大事务执行统计、SQL占用回滚段统计、索引使用统计等若干参数存于SQL统计信息与快照的基表中;

4)数据空间分布接口——表、表空间、数据文件、视图、存储过程、触发器等。表级指标包含:表的大小BYTES、表记录数NUM_ROWS、最后分析时间LAST_ANALYZED、表的默认并行度DEGREE、高水位;表空间数据块大小BLOCKS、表空间增长率、表空间包含的数据文件;有关数据文件的目录、数据文件使用情况;视图与存储过程定义等存在于数据表、表空间、数据文件的相关基表中;

根据上述分类,每个类别的数据库性能指标可以延伸,例如在SQL统计信息中捕获REDO SIZE(每秒)指标变化情况,可以用来估量update、insert、delete的频率,大的REDO SIZE可能是由于LGWR后台进程写日志或归档造成了I/O压力,这里不一一列举。每个类别包含的具体指标均可从数据库系统基表和视图中获取。本发明会将所有视图和基表根据系统繁忙程度自适应采集所有指标数据,保证数据分析来源一次收集后与生产系统分离,生成统一访问接口实现本地优化分析,而生产数据系统资源与优化分析资源的分离,减轻了生产系统由大量优化数据的分析造成的压力,同时根据资源状态自适应调度,实现资源利用最大化。

本发明实施例提供的技术方案与现有技术相比,柔性定制功能点,并且支持多套、跨平台数据库管理的、可操作性强的、节省支撑成本的数据库优方方法,实现了优化维护功能的动态调配,实现了数据库优化维护与生产环境分离的现实需求,节省了生产系统硬件资源与企业运营成本。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、系统的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1