对于数据库整体的性能问题,AWR的报告是一个非常有用的诊断工具。
一般来说,当检测到性能问题时,会收集覆盖了发生问题的时间段的AWR报告。但是最好只收集覆盖1个小时时间段的AWR报告-如果时间过长,那么AWR报告就不能很好的反映出问题所在。还应该收集一份没有性能问题的时间段的AWR报告,作为一个参照物来对比有问题的时间段的AWR报告。这两个AWR报告的时间段应该是一致的,比如都是半个小时的,或者都是一个小时的。
在处理性能问题时,最关注的是数据库正在等待什么。当进程因为某些原因不能进行操作时,它需要等待。花费时间最多的等待事件是我们最需要关注的,因为降低它,我们能够获得最大的好处。
top event
AWR报告中的"Top 10 Timed Events"部分就提供了这样的信息,可以只关注主要的问题。
Top 10 Events部分包含了一些跟Events(事件)相关的信息。它记录了这期间遇到的等待的总次数,等待所花费的总时间,每次等待的平均时间;这一部分是按照每个Event占总体call time的百分比来进行排序的。
根据Top 10 Events部分的信息的不同,接下来需要检查AWR报告的其他部分,来验证发现的问题或者做定量分析。
等待事件需要根据报告期的持续时间和当时数据库中的并发用户数进行评估。如:10分钟内1000万次的等待事件比10个小时内的1000万等待更有问题;10个用户引起的1000万次的等待事件比 10,000个用户引起的相同的等待要更有问题。
就像上面的例子,将近60%的时间是在等待IO相关的事件。
事件"db file sequential read"一般是由不能做多块读的操作引起的单块读(如读索引),属于逻辑读。
事件"db file parallel read"一般是由并行I/O请求的操作引起的多块读,属于物理读。
其他30%的时间是花在使用或等待CPU time上。过高的CPU使用经常是性能不佳的SQL引起的(或者这些SQL有可能用更少的资源完成同样的操作);对于这样的SQL,过多的IO操作也是一个症状。
在以上基础上,将调查是否这个等待事件是有问题的。若有问题,解决它;若是正常的,检查下个等待事件。
最安全的配资平台提示:文章来自网络,不代表本站观点。