- 最后登录
- 2015-2-11
- 在线时间
- 38 小时
- 威望
- 0
- 金钱
- 242
- 注册时间
- 2013-3-19
- 阅读权限
- 10
- 帖子
- 35
- 精华
- 0
- 积分
- 0
- UID
- 987
|
5#
发表于 2013-3-27 23:17:10
本帖最后由 黑豆 于 2013-4-3 09:06 编辑
刘老师,您好。有一份db time在一个小时内达到2000分钟的AWR报告,附件上传,并有根据您提供的脚本跑了其中一个耗时的sql。请您根据AWR报告帮忙分析一下查找问题的思路
目前我的思路是这样的,如有理解不对的请指出:
1. 由于top 5事件中前两个是latch: library cache和latch: shared pool两个latch的等待事件,那么系统的sql应该存在大量的硬解析和软解析,或者sql没有绑定变量,或者sql的绑定变量不合适导致没起作用。
2. 再查看Soft Parse 达到97.90%,每秒的Hard parses只有0.25,这样来看似乎并不会对系统引起latch争用的问题。
3. 继续看Execute to Parse %,在一百次的解析中不用重新解析的次数是60.42,有点高
4. 再查看Time Model Statistics中耗时最高的为sql execute elapsed time,达到61,770.33s,为db time的53.9%,那么就可以肯定了确实是sql引起的系统负载过高。
5. 然后查看SQL ordered by Elapsed Time块中的第二行,Elap per Exec (s) 每次执行耗时669.16s的sql text,但是目前这个sql的版本很多,附件为其中一个版本的sql通过脚本运行后的性能分析html结果。
6. 如果在系统前台页面上的数据检索,使用者都会或多或少的筛选几个选项来选择出自己想要的最小的数据范围,对于这种的要求肯定避免不了在后台通过拼接sql来达到要求,所以导致sql版本比较多。 |
|