分类: Oracle
2008-04-11 20:49:41
来源:赛迪网技术社区 作者:Cary Millsap |
对数据做出响应
有了详细的诊断数据及其要点,就要决定对所看到的东西如何做出响应。对资源描述做出响应的经验做法非常可靠且相当简单:首先减少花费时间最长的部分,方法是减少调用它的次数。
这种方法几乎总是正确的。理解减少给定组件的调用次数的方法,需要对不同等待事件名称的含义有所了解。例如,当被跟踪的Oracle会话等待"buffer busy waits"这个等待事件时,该会话会向跟踪文件发送会生成足够多的信息,并显示正在等待哪一个缓冲区以及为什么要等待。当一个会话等待SQL*Net message from client事件时,跟踪文件中生成的数据的位置会告诉你执行过的数据库调用哪个是多余的。
在Oracle9i第2版中,有350多个不同的等待事件。在Oracle数据库10g中,几乎有700个等待事件。但不必担心:你根本不必知道它们都是什么意思。你只需知道你的重要程序花费大部分时间所等待的那些事件是什么意思。
看看你能做些什么
有了合适的诊断数据,你就能迅速解决相应的问题,或者证明这些问题不值得解决。
下面给出诊断数据能够解决的一部分问题清单:
整个系统的问题以及个别用户(业务)操作的具体问题
查询错误,包括写得不好的SQL语句、有问题的索引以及数据密度问题
A应用程序错误,包括解析过度、不使用数组运算等等在内的应用程序
串行化错误,包括不必要的频繁发生或费时的锁定、锁存或存储缓冲区活动
网络错误,如选择的协议不当、网络设备有问题
磁盘输入/输出错误,如高速缓存大小不适当、负载不平衡以及配置不当
容量不足,如交换、分页和CPU占用过多
使用Oracle的扩展SQL跟踪数据以及提出"什么如此费时?"这种问题的方法能带来的最好结果是在开始诊断和解决问题之前你将不必再猜测性能问题会是什么。 |