频道栏目
读书频道 > 数据库 > Oracle > Oracle性能预测
2.6 数据采集
2013-09-04 13:02:27     我来说两句
收藏   我要投稿

本文所属图书 > Oracle性能预测

本书共10章。第1章介绍了性能预测的基本概念和范畴,分析了预测提供的信息及其价值;第2章介绍了基本的性能预测概念,深入研究了如何组合及建模性能预测;第3章介绍了提高预测精度的一些有效手段,通过选择合适的...  立即去当当网订购

如果你要预测,你需要有一些输入数据。无论你采用哪种类型的模型(基准模型、模拟模型或数学模型),你都需要输入数据。即使是预测未来的生产系统(想想新的实现),你也需要一些性能数据。对于不熟悉Oracle的人,这可能有点难以招架。不过,我想你会发现,虽然有时各种可能性令人眼花缭乱,但这非常简单。请记住,要保持它的简单。

通常情况下,你收集了一堆原始数据,但其最初的形式不都是有用的。那么,你需要将原始数据转换成对实际做预测的人和预测模型的输入有用的格式。转换原始数据的过程被称为工作负载描述。我在工作负载描述上花了整整一章(第7章)的篇幅,用来对付Oracle环境的严酷现实。

如果你要收集自己的数据(而不是用一个专业的数据采集器),那么只收集你所需要的数据,收集次数要尽可能少,并尝试使用标准工具,例如sar和sqlplus。收集的数据越多,对系统的探测越频繁,就越有可能对系统产生负面影响。

专业的数据收集器会非常复杂。这是由于它们需要处理大量的数据采集、移动和管理任务,而同时要确保所有这些操作都不对系统造成负面影响。大多数自制收集器是非常专用的,有针对性的,因此并不需要那么复杂。例如,它们可能只收集少数Oracle系统级统计信息(而不是Oracle会话级数据)和一些操作系统统计信息。

当收集自己的数据时,要确保所有数据源同时启动和停止采集。因为你不希望你的操作系统数据只能代表你收集的部分Oracle数据。当一个部分重叠或交叉发生时,数据就会变得毫无价值。危险的是,仍然有进入预测模型的性能数据,但比错误更糟的是,它们会产生误导的预测。这就是为什么你要用脚本和自动化数据收集的原因。尽最大可能排除人工干预。这样才能得到干净和可信的数据。

例2-1  收集CPU和Oracle数据

丹曾被问及,在“资源耗尽”和响应时间变得无法忍受之前,数据库服务器可以处理多少工作。丹认为首要任务之一是收集Oracle的工作负载和CPU利用率数据。在本练习中,我们将跟着丹,看他如何收集数据并将它转换成本章后面要输入的基本预测公式的信息。

虽然当丹从Oracle和操作系统收集数据时,运行了两个独立的例程,但其执行是定时的,所以两者收集到的数据覆盖了相同的300秒(5分钟)的时间段。

丹必须做的第一个决定是,到达率到底是由什么构成的。贯穿这本书,你会了解许多与工作负载相关的统计信息,以及如何验证它们对预测精度的影响。丹决定使用Oracle内部统计信息“用户调用”(user call)来表示工作负载(即到达率)。

现在,丹必须收集Oracle工作负载数据。和大多数Oracle内部统计信息一样,其值随时间而增加。要确定一个特定的时间段内发生了什么,必须获取一个初始统计信息快照(S0)和结束统计信息快照(S1)。然后,只需从终值减去初始值就可以得到快照时间段内的活动(S1?S0)。要确定到达率,只要将期间的工作负载活动除以快照持续时间(T)即可。下面是公式:

 

以下是丹用来收集原始Oracle工作负载数据的代码片段。如前文所述,丹决定用Oracle统计信息中的用户调用(uc)来表示到达率。
     SQL> select name,value
       2   from v$sysstat
       3   where name = 'user calls';
    
     NAME           VALUE
     ------------ ----------
     user calls      5006032
    
     SQL> exec sys.dbms_lock.sleep(300);
    
     PL/SQL procedure successfully completed.
    
     SQL> select name,value
       2   from v$sysstat
       3   where name = 'user calls';
    
     NAME           VALUE
     ------------ ----------
     user calls      5007865

将收集的Oracle工作负载数据代入公式,丹得出的到达率为6.11 uc/s。

 

CPU子系统的信息收集,使用标准的UNIX sar -u命令。丹用下面的sar命令获取5分钟的CPU子系统的活动快照。平均CPU使用率,或繁忙程度,是CPU用户时间(显示为%usr)和CPU系统时间(显示为%sys)的总和。观察sar命令的输出,你可以看到用户的时间为27%,系统时间为8%,因此CPU的平均利用率为35%。丹写下了这个数字,因为稍后他会用到它。
     sar -u 300 1
     SunOS soul 5.8 Generic_108528-03
     10:51:00  %usr  %sys  %wio %idle
     10:56:00    27     8     0    65

现在,丹知道了CPU利用率(35%)和到达率(6.11 uc/s),他已经为使用基本的预测公式做好准备了。

如果你能访问Oracle生产机器,我建议你马上像我所描述的那样收集工作负载数据。在下一节中,我们将着手于公式,那么你可以将你收集的工作负载数据应用到公式中。

正如你所见,收集有用的工作负载数据并不需要过于复杂的过程。因此,在这个例子中,有许多我们做了和没有做的事情,这可能会导致一种不负责任的预测。但是你正在经历的过程是有价值的,你会开始发掘你的系统固有的意义。现在你已经配备了一些数据,并为了解基本的预测公式做好了准备。

您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:2.5 方法是必须的
下一篇:2.7 基础数学
相关文章
图文推荐
排行
热门
最新书评
特别推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站