一次TOP_SQL的性能调优经历.pdf
文本预览下载声明
1. 问题发现
1.1 一份AWR报告
今天,收到一份 100 个并发用户访问下压力测试的 AWR 报告,并发事务数平均每秒
只有 6 个不到。
在这个 26.53 分钟间隔的报告里,CPU TIME 在整个 TOP 事件中最突出
占了近 97.6%,在 8 个 CPU 系统中,数据库给 CPU 造成的压力为:
(5740/(26.53*60*8)*100%=45.07%,这么小的压力下,CPU 就能冲得这么高,说明
Linux公社(LinuxIDC.com) 是包括Ubuntu,Fedora,SUSE技术,最新IT资讯等Linux专业类网站。
系统中肯定是有问题的。下面转向 TOP SQL 去确认下造成资源争用最明显的 SQL 语
句。
1.2 TOP SQL
1.2.1 SQL ordered by Elapsed Time
1.2.2 SQL ordered by CPU Time
Linux公社(LinuxIDC.com) 是包括Ubuntu,Fedora,SUSE技术,最新IT资讯等Linux专业类网站。
1.2.3 SQL ordered by Gets
1.3 问题发现
对一个 OLTP 系统来说,每一个语句的执行,都是要将其消耗的资源降到最低,这跟
OLAP 系统是有差别的。对于后者来说,它需要的是短的时间返回结果,不管中间你会拿
多大的成本做代价。
从上面反映的问题来看,我们的性能,无疑就是葬送在了 SQL_ID 为 4841ajtgh43qy、
1hwqh7kvxn6yg、g295mubwupf52 和 anyty5rts5tzf 这四个语句上面,下面将对这
四个 SQL 语句一 一做出分析,并给出相应的调优建议。
Linux公社(LinuxIDC.com) 是包括Ubuntu,Fedora,SUSE技术,最新IT资讯等Linux专业类网站。
2. SQL_ID为 4841ajtgh43qy的语句
2.1 调整前
2.1.1 语句
SELECT *
FROM (SELECT TT.*, ROWNUM AS ROWNO
FROM (select to_char(c.cust_id), c.password
from CUST_CERTIFICATION c
where c.cust_id = :CUST_ID) TT
WHERE ROWNUM = 10) TABLE_AL
显示全部