散列分组数据库碎片轮询整理方法与流程

文档序号:17160514发布日期:2019-03-20 00:38阅读:267来源:国知局
本发明属于数据库管理
技术领域
:,更具体地,涉及散列分组数据库碎片轮询整理方法。
背景技术
::随着信息系统建设飞速发展,系统数据承载处理能力和部门人力资源都面临巨大挑战。一方面给后端数据库带来的影响是服务器数量和db实例的数据量出现成倍增加,各种业务需求,快速交付实例,对数据库的日常管理带来了巨大挑战。另一方面,随着科技的进步,各种信息化系统数据采集更为密集,各业务系统数据量爆棚式增长,数据量在一定增幅或者变更后,数据碎片增多,数据页不连续;导致统计信息不准确,执行计划效率低下等问题。数据库自带的自动整理功能效率越来越低,甚至已经失效。许多数据库的使用客户或外协厂商技术能力参差不齐,大部分没有专业的dba人员,制定的规范不能有效的落实到每一次整理实施。因数据库表整理不完全,伴随着人工数据库整理操作,带来的故障及次生问题层出不穷。数据库整理及维护要求权限较高,数据库人工操作风险不可控。由于数据库数据日益增大,采用传统数据库碎片整理。存在以下问题:(一)传统自动碎片整理技术失效、在使用数据库自带的整理程序时,无法指定具体时间及控制整理进度,在24小时运行的表时自动整理功能几乎无法被触发,且不能人为干预。或者在启动自动整理后直接影响业务系统的运行。(二)人力资源紧张、数据库维护人员要面对上百套业务特性不同应用系统,上百万张的表,只能依靠“被动”的故障报修机制进行整理。但因数据库整理不完全,造成的业务系统“周期性”性能降低的问题不可避免的逐渐浮出水面。dba的日常工作变成了casebycase,无暇进行技术提升,造成技术迭代迟缓,工作效率低下的恶性循环。(三)碎片整理操作风险高、传统整理方法手动执行采取人工发送命令或者脚本的形式进行,长期在生产进行人工操作极易发生误操作风险。技术实现要素:针对现有技术的以上缺陷或改进需求,本发明提供散列分组数据库碎片轮询整理方法,其目的在于解决数据库整理及维护要求权限较高,人工数据库整理操作,带来的故障及次生问题。为实现上述目的,本发明提供散列分组数据库碎片轮询整理方法,包括:数据库表对象统计;通过数学模型计算得到指标体系是以npages的值进行排序;依据指标体系进行散列分组;对目标对象进行步骤模块化封装;单张表完整整理及检查点封装后为表模块;使用双轮询器控制流程进度。根据本发明实施例,所述数据库表对象统计包括:使用抽样统计信息查询的方法收集数据库所有表对象相关参数值;抽样模版采取百分之一的抽样标准进行;涉及数据库系统参数表包括:syscat.tables;syscat.indexes;涉及参数包括:syscat.tables.npages;syscat.tables.name;syscat.tables.type;syscat.tables.card;syscat.indexes.tabname;syscat.indexes.indname;依据以上参数进行采样参数数组;所述通过数学模型计算得到指标体系包括:依据拟合函数确认最为接近运行时间的相关的参数数组,进行时间预估排序;设采样拟合公式如下:{(x1i,x1i2,x2i,x2i2,x3,yi),i=1,2,3…n}x1为表数据量记录数,x12为表数据量记录数的平方数,x2为表大小,x22为表大小的平方数,x3为字段数;拟合采样数据得到:y与x1散点图、y与x12散点图、y与x2散点图、y与x22散点图、y与x3散点图,根据散点图,近似于二次非线性函数,设其数学模型估算表达式为:y=a+b1x1+b2x12+b3x2+b4x22+b5x3①根据最小二乘法原理,核心目标就是最小化实际数据yj与计算预测值yi的离差平方和θ,设:θ=∑(yi-yj)2②解得{(a,bi),i=1,2,3,4,5}以θ为变量的函数的极值点,运算得到系数矩阵;将系数矩阵带入①得拟合模型;通过演算得到拟合优度接近1,由此得出,指标体系以npages的值进行排序是最为接近相对执行时间排序。根据本发明实施例,所述依据指标体系进行散列分组包括:构建一个用于存放、查询、及定位散列范围的散列表,每一个记录包含以下数据项:表名、记录数、npages、执行时间,以npages为关键字进行散列表降序排列;依据应用系统间歇时间窗口设定散列值,将散列表进行执行时间排序后,依据散列值定位当前散列值所在位置;依据散列值的划分进行数据量级分类执行策略。根据本发明实施例,所述依据散列值的划分进行数据量级分类执行策略如下:低于散列值时间,且npages低于10w页以下进行分组,并发个数以cpu线程数为最大值,并发串行执行;大于散列值采用单独分组,使用表模块控制执行进度;执行时间低于“散列值”且npages大于10w进行散列分组。根据本发明实施例,所述对目标对象进行步骤模块化封装包括:将数据库碎片整理步骤模规范化后;加入检查点及终止判断条件装入轮询器完成分支流程的封装。根据本发明实施例,所述将数据库碎片整理步骤模规范化包括:进行表统计信息查询表抽样百分之一,依据最新的统计信息整理表;简称rsb;进行表碎片整理;简称rg进行目标表索引碎片整理;简称rgi进行目标表和索引的全量统计信息收集;简称rsa。根据本发明实施例,所述加入检查点及终止判断条件装入轮询器完成分支流程的封装的固化流程包括:步骤1:检查当前系统时间,判断是否进行下一步作业;如未到时间阈值则进行步骤2所述作业,如超过或者等于时间阈值,则记录检查点,等待下次窗口时间进行检查点所记录的步骤;步骤2:执行rsb作业,判断是否进行下一步作业;如未到时间阈值则进行步骤3所述作业,如超过或者等于时间阈值,则记录检查点,等待下次窗口时间进行检查点所记录的步骤;步骤3:执行rg作业,判断是否进行下一步作业,如未到时间阈值则进行步骤4所述作业,如超过或者等于时间阈值,则记录检查点,等待下次窗口时间进行检查点所记录的步骤;步骤4:执行rgi作业,判断是否进行下一步作业。如未到时间阈值则进行步骤5所述作业,如超过或者等于时间阈值,则记录检查点,等待下次窗口时间进行检查点所记录的步骤;步骤5:执行rsa作业;步骤6:结束;所述步骤1—步骤6为表模块运行流程。根据本发明实施例,所述双轮询器包括表模块进度轮询器,表模块分组轮询器;表模块进度轮询器自动读取模块步骤信息,依据每次分组执行时最后成功步骤,记录进度值,次日读取进度值继续进行后续模块内未完成的作业;当进度值到达最大数时,表模块进度轮询器进度值自动重置;表模块分组轮询器,依据每次分组执行时最后成功步骤,记录进度值,次日读取进度值继续进行后续模块内未完成的作业,当进度值到达最大数时,表模块分组轮询器进度值自动重置。总体而言,通过本发明所构思的以上技术方案与现有技术相比,由于提供了散列分组数据库碎片轮询整理方法,能够取得下列有益效果:(1)依据预设阈值进行数据库状态检查,保障了应用系统的稳定性与安全性,不会在数据库承压情况下进行高开销动作。(2)模块化封装保证了数据库碎片整理的步骤完整性。(3)数据库表采用散列函数进行分组,最大利用了设备的性能,提高了作业执行效率。(4)无需人工职守,全自动进行执行,极大的节约了人力资源成本。附图说明图1是y与x1散点图。图2是y与x12散点图。图3是y与x2散点图。图4是y与x22散点图。图5是y与x3散点图。图6是散列算法取值方法展示图。图7是表模块运行流程图。图8是表模块进度图。图9表模块分组图展示一。图10表模块分组图展示一。图11对数据库碎片整理的流程图。具体实施方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。散列分组数据库碎片轮询整理方法,分为四个阶段。第一阶段:数据库表对象统计与指标体系计算。数据库表对象统计使用抽样统计信息查询的方法收集数据库所有表对象相关参数值,为保证降生产环境干扰造成降到最低,抽样模版采取百分之一的抽样标准进行,抽样样板比率越低时间开销越短。涉及数据库系统参数表有:syscat.tablessyscat.indexes。涉及参数:syscat.tables.npagessyscat.tables.namesyscat.tables.typesyscat.tables.cardsyscat.indexes.tabnamesyscat.indexes.indname。依据以上参数进行采样参数数组。依据拟合函数确认最为接近运行时间的相关的参数数组,进行时间预估排序。设采样拟合公式如下:{(x1i,x1i2,x2i,x2i2,x3,yi),i=1,2,3…n}x1为表数据量记录数,x12为表数据量记录数的平方数,x2为表大小,x22为表大小的平方数,x3为字段数,预测值显示表字段数拟合优度一般,因此未进行平方数拟合。拟合采样数据:y与x1散点图如图1;y与x12散点图如图2;y与x2散点图如图3;y与x22散点图如图4;y与x3散点图如图5。根据散点图,近似于二次非线性函数,设其数学模型估算表达式为:y=a+b1x1+b2x12+b3x2+b4x22+b5x3①根据最小二乘法原理,核心目标就是最小化实际数据yj与计算预测值yi的离差平方和θ,设:θ=∑(yi-yj)2②解得{(a,bi),i=1,2,3,4,5}以θ为变量的函数的极值点,矩阵运算结果为:variablecoefficientsa29.73822363b1-1.344948548b20.003782627b33.013930995b4-0.008814949b5-0.108733778将系数矩阵带入①可得本例拟合模型:y=29.7382-1.3449x1+0.0038x12+3.0139x2-0.0088x22-0.1087x3其他演算值:拟合优度(rsquare)为:r2=0.99238拟合优度非常接近1,表明自变量x解释因变量y的变差程度接近100%,因变量y的拟合效果很好。因此,该拟合模型能够精准的表达“运行时间”(y)与“记录数”(x1)、“表大小”(x2)、“字段数”(x3)间的非线性关系。以表的大小、即进行统计信息收集后的syscat.tables.npages参数可以反映出相对执行时间。因此以npages的值进行排序是最为接近相对执行时间排序。第二阶段:进行散列分组。(1)构建散列表,构建一个用于存放、查询、及定位散列范围的散列表。每一个记录包含以下数据项:表名、记录数、npages、执行时间。以npages为关键字进行散列表降序排列。(2)依据应用系统间歇时间窗口设定散列值。将散列表进行执行时间排序后,依据散列值定位当前散列值所在位置。例如:当前系统间歇时间为60分钟,将散列表排序后,设定散列值为60进行定位。散列值定位在cusm、taxe之间。(3)依据散列值的划分进行数据量级分类执行策略。低于散列值时间,且npages低于10w页以下进行分组,并发个数以cpu线程数为最大值,并发串行执行。大于散列值采用单独分组,使用表模块控制执行进度。执行时间低于“散列值”且npages大于10w进行散列分组。例如:设cpu线程数为2个,散列值为x,运行时间为t1,t2,t3,...tn。系统设计冗余时间为30%。线程一计算公式t1+(tn-1)+(tn-2)<x*30%线程二计算公式t2+(tn-1)+(tn-2)<x*30%。散列算法取值方法展示如图6。该阶段使用应用运行间歇时间、进行散列取值,对基于时间排序的模块进行时间长度拼接。依据cpu进程数量开启并进程数。采用并发串行的方法进行执行。从而达到最大限度利用cpu性能以最快的速度完成作业执行。第三阶段:对目标对象进行步骤模块化封装。(1)将数据库碎片整理步骤模规范化:进行表统计信息查询表抽样百分之一,依据最新的统计信息整理表可以提高碎片整理速度,runstatstablebernoulli,简称rsb;进行表碎片整理,reorgtable,简称rg;进行目标表索引碎片整理,reorgindex,简称rgi;进行目标表和索引的全量统计信息收集,runstatstableandindexall,简称rsa;单张表完整整理及检查点封装后,简称表模块。(2)加入检查点及终止判断条件装入轮询器完成分支流程的封装,固化流程如下:步骤1:检查当前系统时间,判断是否进行下一步作业;如未到时间阈值则进行步骤2所述作业,如超过或者等于时间阈值,则记录检查点,等待下次窗口时间进行检查点所记录的步骤;步骤2:执行rsb作业,判断是否进行下一步作业;如未到时间阈值则进行步骤3所述作业,如超过或者等于时间阈值,则记录检查点,等待下次窗口时间进行检查点所记录的步骤;步骤3:执行rg作业,判断是否进行下一步作业,如未到时间阈值则进行步骤4所述作业,如超过或者等于时间阈值,则记录检查点,等待下次窗口时间进行检查点所记录的步骤;步骤4:执行rgi作业,判断是否进行下一步作业。如未到时间阈值则进行步骤5所述作业,如超过或者等于时间阈值,则记录检查点,等待下次窗口时间进行检查点所记录的步骤;步骤5:执行rsa作业;步骤6:结束;所述步骤1—步骤6为表模块运行流程,表模块运行流程图展示如图7。第四阶段:轮询器与流程进度控制。使用自适应的双轮询器实现对流程进度的合理把控,所述双轮询器包括表模块进度轮询器,表模块分组轮询器。表模块进度轮询器自动读取模块步骤信息,依据每次分组执行时最后成功步骤,记录进度值,次日读取进度值继续进行后续模块内未完成的作业,当进度值到达最大数时,表模块进度轮询器进度值自动重置,表模块进度展示如图8。表模块分组轮询器自动读取表分组信息,依据分组数量生成轮询器计数器,记录当前运行进度值,次日读取进度值继续进行后续分组的作业执行。当进度值到达最大数时,表模块分组轮询器进度值自动重置。表模块分组中,依据散列算法装入一个或者多个表模块,图9中示例为4个表模块分为一组。表模块分组轮询器中,依据分组数量,自动生成轮询标识。例如:如图10所示,当前分组数量为20,则轮询标识到达20时进行重置为1。实现轮询对模块组进行执行的目标。依据散列分组数据库碎片轮询整理方法的四个阶段,对数据库碎片整理的流程如图11所示。1.检查计数器,发送短信通知自动整理任务内容通知管理人员自动任务执行内容,执行时间。2.应用程序判断当前时间及例外时间列表时间检查是否在阈值之中,如果当前时间不适合进行数据库碎片整理动作则跳过执行。3.判断当前数据库相关阈值进程检查是否通过,检查数据库进程数量及数据库表锁等待情况,如当前执行的对象无锁等待的情况则进行数据库碎片整理。如当前数据库进程阈值则跳过执行。4.遍历整理作业分组,计算标识文件计数器及重置标识文件。准确的定位到需要执行的作业分组,并且按数据库服务器cpu数量进行多进程分配。5.选取执行的分组进行自动碎片整理,并且等待完成。6.获取作业执行结果,发送短信汇报执行情况。发送/接收方子系统可以根据自定义的协议进行点对点通信,也可以通过专门的地址解析服务器进行数据转发。本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1