贾素珍,刘竹林
(1.石家庄市高级技工学校,河北石家庄 050041;2.石家庄信息工程职业学院,河北石家庄 050035)
基于Kalman原理的数据库性能预测模型的研究
贾素珍1,刘竹林2
(1.石家庄市高级技工学校,河北石家庄 050041;2.石家庄信息工程职业学院,河北石家庄 050035)
在数据库系统运行中,由于受系统环境的制约,其性能会慢慢会下降,对于数据库管理员经常为了提高数据库性能而绞尽脑汁,最后达不到应有效果。本文提出应用Kalman原理提前对性能进行预测来减小数据库管理员的盲目性。首先把数据库查询划分为三个“静态SQL模型”,介绍了kalman(卡尔曼)滤波原理和优化器分析中利用kalman原理预测数据库性能的方法。
kalman算法;协方差;关系数据库;数据库性能预测
卡尔曼滤波是一个不断地预测、修正的递推过程,由于其在求解时不需要存储大量的观测数据,并且当得到新的观测数据时,可随时算得新的参数滤波值,便于实时地处理观测结果,因此卡尔曼滤波被越来越多地应用于动态定位数据处理中。卡尔曼滤波线性模型的最优估计是建立在给定函数模型和随机模型基础上的,如果实际的函数模型和随机模型存在误差,不仅得不到最优估计,而且可能造成滤波发散。目前,卡尔曼滤波理论作为一种最重要的最优估计理论,已经被广泛应用于通信工程、系统工程、工业过程控制、遥感等各个领域,成为当前国际上研究的一大热点。
随着计算机应用和人们对系统需求的复杂性,数据库的查询性能优化面临着如下几个方面的挑战:(1)计算机资源、计算机工作负载(包括数据源和SQL的执行);(2)优化器(统计数据分析,SQL配置文件分析,访问路径分析,SQL结构分析,SQL处理引擎,生成优化方案)的性能。(3)SQL语句复杂性不断增加,导致执行计划衰退。笔者基于Kalman理论,在数据库性能优化方面进行了研究,希望在数据库性能下降前利用Kalman理论能够有所预测和对策,以达到性能优化的作用。
为了把系统控制论应用到数据库性能优化中,考虑如下的两种数学方法作为数据统计分析工具。
高斯分布是描述影响数据库性能的有效的统计方法。计算公式如下:
由于数据库的查询优化性能数值的概率分布有时候不一定呈高斯分布,但是为了使用高斯白噪声(白噪声可以认为是被研究的计算机系统资源本身不足造成的性能值)来模拟(可以大大简化性能模型),使用中心极限定理把数据库的性能数值的概率分布描述成一个高斯分布,然后使用MATLAB软件包或者SCILAB软件包等实现。
Kalman原理的基本思想是:采用信号与噪声的状态空间模型,利用前一时刻的预测值(即根据以往数据给出的预测值)和现在时刻的测量值,结合各自的高斯白噪声来预测现在时刻的实际值。
其中:X(k|k-1)是k-1时刻的预测值,X(k-1|k-1)是k-1时刻的测量值。A和B是系统参数,已知量,对于多模型系统,它们是矩阵,对于单模型系统,A=B=1;U(k)是系统控制量。P(k|k-1)是X(k|k-1)对应的协方差;P(k-1|k-1)是X(k-1|k-1)对应的协方差;A′表示A的转置矩阵,Q和R是矩阵协方差;H是k时刻的动态干扰阵,X(k|k)是现在时刻k的预测值,Kg为Kalman增益;I是单位矩阵,对于单模型系统,I=1。
本文以oracle数据库的性能测量为例,Statspack是DBA和Oracle专家用来诊断数据库性能的强有力的工具。通过Statspack可以很容易的确定Oracle数据库的瓶颈所在,记录数据库性能状态。
Statspack正确安装以后,设置定时任务,开始收集数据。使用spatuo.sql来定义自动任务。其代码如下:
其中job任务定义收集数据的时间间隔:一天有24h,1/24 HH表示每小时一次。
调用spreport.sql可以生成分析报告,其调用代码为:
SQL>@spreport
(1)确定系统环境。在实践中发现,影响数据库性能的因素除上面的三点外,还跟数据库的逻辑设计和物理实现有一定关系,不能抛开系统的物理环境来单独研究数据库性能。
为了能够清楚描述关系数据库性能模型,假设系统环境如下:(1)数据库优化器没有任何问题,可以生成SQL最佳执行计划;(2)CPU频率较低,内存不足,因而导致SQL语句执行时间越来越长;(3)计算机的工作负载呈高斯分布。
这种情况下,由于SQL语句在不同时刻执行时间是不同的,所以需要预测在SQL复杂度比较高时的执行时间以便对SQL语句进行预处理来提高数据库性能。
(2)计算k时刻的测量值X(k|k)的递归算法。当系统进入k+1状态时,算法可以进行自回归的运算。
对于前面的系统假设,系统属于单模型系统,则A=1,I=1,U(k)=0。
为描述方便,令干扰协方差Q=0.00001,R=0.001*0.001,初始协方差P(0|0)=1。
(3)利用Kalman公式,结合MATLAB包来实现Kalman原理,然后和现有的三个“静态SQL模型”比较,可以找出系统可能的故障原因。
利用Kalman滤波原理估算数据库性能,并利用过去的经验数据对未来状态进行预测的方法是一种将系统控制理论和数据库理论结合的大胆尝试,它用于实现一个预纠错型的预测器,在预先设定条件下可以实现预测错误协方差。这种把kalman数据库性能模型用于解决DBMS的性能问题的思维方法将使数据库性能的研究和DBMS的研发应用得到更大提高。
但是在实际应用过程中,要考虑:(1)在考虑提高数据库性能的同时也要考虑性能和安全的平衡问题,增加安全往往降低性能,增加性能可能威胁系统安全;(2)必须同时调整客户机、网络、服务器这三个相互依存的组成部分,使其达到性能同步才能产生最佳的数据库性能。
[1]秦永元.卡尔曼滤波与组合导航原理[M].西安:西北工业大学出版社,2004.7.
[2]陆恺等.最优估计理论及其在导航中应用[M].上海:上海交通大学出版社,1990.
[3](美)RICHARD j.Niemiec,(王海涛鹿凡译)Oracle 9i performance tuning tips techniques[M].北京:清华大学出版社,2004.
[4]周概容.概率论与数理统计大讲堂[M].大连:大连理工大学出版社,2004-10.
[5]梁国业,廖健平.数学建模[M].北京:冶金工业出版社,2004.
Research of database performance forecast model based on kalman principle
JIA Su-zhen,LIU Zhu-lin
(1.ShijiazhuangSeniorTechnicalSchool,ShijiazhuangHebei050035,China;2.ShijiazhuangInformationEngineeringVocationalCollege,ShijiazhuangHebei050035,China)
In the database system is running,due to environmental constraints,its performance will gradually decline,In order to solve this problem,the database administrator often rack one’s brains,but it is difficult to achieve the desired.In this paper the application of Kalman principle is presented.The properties to reduce the blindness of the database administrator are predicted.The database query into three"static SQL model"is divided.Finally,the method of using of Kalman principle is introduced to predict database performance.
Kalman algorithm;Covariance;Relational database;Database performance prediction;
TP302.7
:A
1001-9383(2011)03-0098-03
2011-06-30
贾素珍(1964-),女,河北石家庄人,讲师,主要研究方向:自动控制,机电一体化.