什么情况下会用到AWR?

分享时间:2017-12-07 4742 热度℃
DBA对数据库运行状态及状况的监控了解、测试过程中发现数据库出现瓶颈但无法定位到具体原因时,可以借用AWR报告进行分析定位。

数据库出现性能问题,一般都在三个地方:IO、内存、CPU,这三个地方又是息息相关的。假设这个三个地方都没有物理上的故障,当IO负载增大时,肯定需要更多的内存来存放,同时也需要CPU花费更多的时间来过滤这些数据。相反,CPU时间花费多的话,有可能是解析SQL语句,也可能是过滤太多的数据,倒不一定是和IO或内存有关系。

CPU:解析SQL语句,尝试多个执行计划,最后生成一个数据库认为是比较好的执行计划,但不一定是最优的。因为关联表太多的时候,数据库并不会穷举所有的执行计划,这会消耗太多的时间,oracle怎么知道这条数据是你要的,另一个就不是你要的呢,这是需要cpu来过滤的。

内存:SQL语句和执行计划都需要在内存保留一段时间,还有取到的数据,根据LRU算法也会尽量在内存中保留,在执行SQL语句过程中,各种表之间的连接,排序等操作也要占用内存。

IO:如果需要的数据不在内存中,则需要到磁盘中去取,就会涉及到物理IO了,还有表之间的连接数据太多,以及排序等操作内存放不下的时候,需要用到临时表空间,也会消耗物理io了。

这里说明下,ORACLE分配的内存中PGA一般只占20%,对于专用服务器模式,每次执行SQL语句、表数据的运算等操作,都在PGA中进行的,也就是说只能用ORACL分配内存的20%左右,如果多个用户都执行多表关联,而且表数据又多,再加上关联不当的话,内存就成为瓶颈了,所以优化SQL很重要的一点就是,减少逻辑读和物理读。
本文标签:
返回顶部