数据库性能预测的研究与应用

来源 :计算机时代 | 被引量 : 0次 | 上传用户:freeskykq
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要: 数据库性能预测具有可利用历史数据较少、受外界不确定性因素影响较大的特点。传统的构建数据库方法有采集数据周期长、普通人较难准确掌握、预测值波动性大等问题。为此探讨了一种应用数学公式,只需采集较少数据即可方便快速地预测数据库性能。使用该方法可以在数据库处于正常工作情况下,对今后一段时期内数据库性能做出较为快速准确的预测,有效预防未来可能出现的性能问题。
  关键词: 数据库; 性能; 预测; 公式
  中图分类号:TP392 文献标志码:A 文章编号:1006-8228(2015)06-01-03
  Abstract: Database performance prediction has the characteristics of less available historical data and great affect of the external uncertain factors. The traditional method of building a database has the problems which data collection cycle is long, ordinary people are difficult to grasp, predictive value is volatile ect. This paper introduces an applied mathematics formula, database performance can be predicted rapidly as long as few data is collected. Thus a more accurate prediction of the database performance during the next period of time is made, that effectively prevents the possible performance problems in the future.
  Key words: database; performance; prediction; formula
  0 引言
  随着信息技术的飞速发展,数据库已经被应用到社会的各个领域,数据库的性能是数据库运行好坏的一个重要技术指标。数据库系统是动态的,含有各种各样的事务类型,这使得对数据库作出准确的性能预测非常困难。许多IT专业人员(DBA、项目经理、系统集成或开发人员)在工作中都会碰到需要预测数据库性能的情况。
  本文以笔者单位正在使用的业务数据库系统为研究对象,应用数学预测公式在系统运行性能数据的分析基础上,对该业务系统数据库的性能趋势作出预测。根据预测结果,科学合理的添加系统资源,满足了系统稳定高效运行的需要,化解了数据库性能风险,避免了不必要的浪费。
  1 相关知识
  1.1 事务
  在预测性能时,我们需要一个基本工作单元来沟通和计算。我们把这种基本工作单元称作事务。在数据库领域对事务有各种各样的定义,为了叙事清楚,我们把事务定义为单个逻辑工作单元执行的一系列操作,要么完整地执行,要么完全不执行。事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。一个逻辑工作单元要成为事务,必须满足所谓的ACID(原子性、一致性、隔离性和持久性)属性。
  1.2 到达率
  事务不仅是一种静态的定义,它们还是动态的。事务到达一个计算系统,就像人到达办公大楼电梯。我们将到达率定义为:在给定的时间内到达的事务的数量。我们用到达率来表示一定时间内事务的繁忙程度,在一个系统中,到达率越高,事务的活动就越多。
  我们使用希腊字母λ表示到达率,其单位是某个时间内的工作数量,如每秒50个事务,写作50trx/s。
  1.3 服务时间
  当一个事务进入服务器后,CPU会立即开始处理这个事务,从开始处理这个事务到处理完这个事务所花费的时间,通常被称为服务时间并被标记为St。例如,如果一个事务占用150ms的CPU时间,其服务时间为St=150ms/trx。
  1.4 队列
  通常情况下,我们用繁忙度或者利用率来衡量服务器的忙碌程度。例如,如果一台服务器的繁忙时间占65%,那么其利用率为65%。当服务器有70%左右的时间处于繁忙状态时,它不能在事务到来后立即进行处理,这些事务将被放入到一个队列中一直保存到它被处理为止。
  队列[2]是一种非常简单的数据结构。它本质上是一个包含一个头部和一个尾部的链表。事务被压入队列(入队)和弹出队列(出队)。本文论及到的队列模型是简单的先入/先出( FIFO)队列。
  队列长度用来表示有多少积压的事务未被处理。当一个事务在队列中等待时,它等待Qt的时间。单位是每笔事务的时间。字母Q表示队列的长度,它的单位是简单的事务数量。
  通常情况下,当一个服务器的繁忙率达到约70%时,就已经不能立即处理事务了,即使服务器还有30%是空闲的,当服务器变得越来越繁忙时,事务就会开始排队,队列长度会增加,而性能开始下降。
  1.5 响应时间
  当一个事务被提交时,它在整个计算系统中流动并消耗CPU、IO、内存和网络资源。有时事务无需在队列中等待,可以立即得到处理,有时它必须先在队列中等待。通常情况下,事务流在整个系统中,需多次地排队和被处理,直到它完成并退出系统。
  在一个事务的生命周期内,如果我们将所有的服务时间和排队时间累加起来,就可以判断出事务在系统中花费的时间,这个时间通常被称为响应时间[6]。简单的说,响应时间就是服务时间加上排队时间:Rt=St+Qt。   在对数据库进行性能预测时,响应时间曲线是我们经常会用到的技术之一。
  响应时间曲线如图1所示,纵轴是响应时间即事务完成所需要的时间,横轴是事务到达率即每单位时间进入系统的事务数。从图1可以看出,当事务到达率达到一定值时,响应时间呈几何级上升(出现拐点),这时系统将极为缓慢甚至不能工作,因此预测拐点何时在什么条件下会出现是我们预测工作的重点。
  2 预测
  2.1 数据收集
  数据收集[5]是进行数据库性能预测的必备工作之一,收集到的原始数据还必须经过必要的转换才能成为对预测有用的数据。在进行数据收集时不能过于频繁,否则会对收集对象的性能产生负面影响。
  在需要收集的数据中最重要的有两项,CPU使用率和数据库的工作负载,这里我们假设操作系统为UNIX,数据库为Oracle。在Oracle数据库中并没有工作负载这个性能指标字段,我们可以用Oracle内部统计信息“用户调用”(user call)来表示工作负载(即到达率)。
  “user call”是一个随时间而增加的值,要得到工作负载数据,必须获取一个初始统计信息快照(S0)和结束统计信息快照(S1),将两者之差除以两次快照之间的时间(T)就可以得到其到达率(λ)。
  2.3 使用公式进行预测
  笔者单位某业务系统平时用于处理企业登记、变更和年检等业务,由于经济快速发展,企业数量不断增加,系统处理的业务量以每年40%的速度逐年递增,导致系统的负荷也不断加重。领导担心数据库系统会承受不住,因此需要对现有数据库系统做一次性能预测,并提供解决方案。
  首先运行前文所提到的数据收集脚本,收集到数据库在正常情况下事务的平均到达率是6.11trx/s,CPU平均利用率是35%,CPU的数量是12,将这些数字代入基本预测公式:
  假设CPU处理一个事物的服务时间St始终保持不变,得出当平均到达率为6.11trx/s时,每个事务的平均响应时间为0.69s,以此作为一个基线填入表2的第一行,然后每次将平均到达率增加20%代入公式,计算出平均响应时间如表2。
  图1是根据表2得到的响应时间曲线图[3],横轴是到达率,纵轴是预测的响应时间。根据表2可以得知,当利用率在70-80%时,响应时间开始显著增加,这时到达率大约是13,这正是图形上开始进入曲线肘部的时刻。
  我们根据图表预测的数据得到以下两点结论。
  ⑴ 当负载增加超过一倍时,系统的反应将变得缓慢。
  ⑵ 当负载增加接近两倍时,系统将变的几乎不可用。
  根据以上结论,再结合业务量每年增加40%的事实,领导可以得知到第三年时系统会变得缓慢,到第四年时系统将变的几乎不可用。
  2.4 应对措施效果预测
  为了防止系统变慢,可以通过更换系统或添加CPU来解决,前者效果好但花费较大,后者节省费用但效果未知。此时可以利用预测公式[3]对添加CPU后的效果做出预测,为应对措施的选择给出理论上的依据。
  该系统数据库服务器有16个插槽,已经使用了12个,还可以添加4个使CPU总数达到16,即M=16。
  我们将原系统St=0.69,以及原系统开始变慢时的到达率λ=13.442代入公式可得:
  U===0.579
  Rt===0.690
  我们发现当添加了4个CPU后,系统繁忙度从0.773下降到0.579,响应时间从0.723s下降到0.690s,系统没有变慢。
  我们再把原系统变的不可用时的到达率λ=18.330代入上述公式可得系统繁忙度从1.054下降到0.790,响应时间从几乎无响应下降到0.706s,系统几乎没有变慢。
  根据上述预测结果可以得知,该业务系统只需升级CPU就可以完全满足未来五年的业务发展需要。
  2.5 实际效果
  由于商事登记制度改革,新登记企业的数量呈现井喷式增长,原数据库系统提前一年达到了满负荷运行状态,系统繁忙度接近1,响应时间接近4秒。为了防止系统继续变慢,保障商事登记制度改革顺利推进,我们根据前期预测结果,为数据库添加了4个CPU。添加CPU后,再次对数据库系统进行跟踪测试,结果发现系统繁忙度下降到0.58,响应时间下降到0.6s,完全符合预测,顺利解决了数据库的瓶颈问题。
  3 结束语
  本文介绍了到达率、服务时间、响应时间等一些数据库性能预测的基本知识和概念[1],讨论了一些常用的预测公式并且就这些理论的具体运用进行了较详细的研究和论述。本文的研究结果在笔者单位的数据库系统上得到了成功应用,保障了数据库平稳运行,避免了盲目的升级替换,节约了宝贵的项目经费,实现了较好的经济和社会效益。
  由于在数据库实际预测工作中经常会遇到样本采集数量不足、采集时间不平均或采集方式不对等因素干扰,造成数据库性能预测不准,因此,下一步考虑引进Erlang C公式来进一步加强数据库性能预测的准确性和抗干扰性。
  参考文献:
  [1] 陈虹.模型预测控制[M].科学出版社,2013.
  [2] 席裕庚.预测控制(第2版)[M].国防工业出版社,2013.
  [3] 李海翔.数据库查询优化器的艺术[M].机械工业出版社,2014.
  [4] 李少远.全局工况系统预测控制及其应用[M].科学出版社,2008.
  [5] 加西亚-莫利纳著,杨冬青等译.数据库系统实现[M].机械工业出版
  社,2010.
  [6] 博克斯著,王成璋等译.时间序列分析:预测与控制[M].机械工业出版
  社,2011.
其他文献
结构光三维扫描仪具有高速度、高精度、获取的点云密集等特点,得到了市场的广泛认可,广泛应用于精细化测量领域。基于时间相位展开算法和双目视觉原理,利用工业相机和光栅投影仪构建了一套结构光栅三维扫描测量实验装置,较为全面地阐述了设计方案和设计步骤,为从事三维结构光测量的研究者和应用开发者提供了一种参考方案。实验结果表明,该装置能够有效地支持结构光扫描,具有较高的测量精度。
【正】 新的研究显示,苏打饮料,特别是含轻度色素的饮料,以及罐装茶品都会严重破坏牙齿的珐琅层。实验证明,人们经常喝以上所提的这些饮料,会侵蚀牙齿的珐琅层,不但如此,这些
期刊
本设计以两片Renesas公司的R5F523T5ADFM单片机作为飞行控制核心和图像处理核心,通过UART串行总线通信方式进行双机通信。系统使用MPU9250中的三轴陀螺仪和三轴加速度计反馈
【正】 近年来,在国外超级市场上,高附加值品牌的特殊鸡蛋不断增多,消费量也在逐年增加。 这些特殊鸡蛋的上市品种有70多个,其中高碘蛋已成为国内外食品卫生部门的特许产品,
在研究器件建模和粒子群优化算法的基础上,提出了基于粒子群优化算法的器件模型表面势求解,从而建立整套模型参数。在粒子群优化算法的程序实现上,采用JAVA面向对象语言,封装
提出了一种超分辨率图像放大的新方法。根据低分辨率图像上的边缘信息,对初始的一个小图像块依据其对应的低分辨率图像上的边缘点进行分类,并根据此分类对图像块中某些像素点进行重新插值,得到放大的高分辨率图像块。由于对图像中的边缘点进行了特殊的处理,所提出的方法可以提高放大图像的边缘部分的清晰度,克服传统图像放大中图像过于平滑的缺点,对图像进行很好的放大。
以实现具有可视化的遥感产品生产定制功能为目标,提出了一种基于工作流的遥感产品生产可视化定制平台。给出了该平台的体系结构和系统组成,详细描述了平台工作流模型的建立、算法组件的构成、平台与算法的接口处理和可视化技术实现的具体方法。在.NET环境中实现了该平台。实际应用表明,该平台能够有效提高遥感产品的生产效率。
公交车辆运行经验数据体现了到站时间的一般性规律,前车数据反映了到站时间的实时性。提出一种基于前车与经验数据的公交车辆到站时间预测模型。在该模型中对站点间路段行驶时
【正】 韩国研究机构全球首次培育成功转基因荧光鸡,使转基因鸡蛋在食品、制药等领域的大规模应用更近了一步。 转基因荧光鸡的体内植入了水母的绿色荧光蛋白(GFP),在普通光
摘 要: 针对现阶段虚拟维修拆装过程不能模拟真实维修环境中多人协同拆装的问题,结合面向对象和过程建模的特点,使用MAS(Multi-Agent System)对维修拆装系统中的拆装平台进行仿真构建,给出一种适用于多人协同维修拆装训练的维修拆装模型;采用面向对象的着色Petri网对多拆装平台拆装过程的交互模型进行仿真描述,并在A320虚拟维护训练器上验证了本方案的可行性和正确性。  关键词: MAS