您的位置:首页 > 数据库 > Oracle

ORACLE 10G中SGA,PGA内存分配对系统性能的影响

2017-05-04 00:00 183 查看
最近在学习PGA时有一点心得,特此记下,以备查.

ORACLE官方文档对PGA解释如下“areas used by memory-intensive SQL operators such as sort, group-by, hash-join, bitmap merge, and bitmap create。”很明显PGA是用于SQL排序和哈希连接,位图创建所用的内存区域,当排序空间超过100M或者PGA的 5%时,ORACLE会选择在TEMP表空间继续进行排序,所以理论上说PGA越大,数据库性能应该越好,应该尽量增加该部分的空间大小,不过增加该部分空间可能会对SQL语句的执行计划产生影响,所以在修改PGA时要经过测试确认.

对SGA修改时,并不是越大越好,当SGA过大时会导致library cache,dictionary cache命中率下降,从而对系统性能产生负面影响,PGA主要是排序操作,所以相对SGA来说过大的PGA并不会带来多么严重的性能下降,只会降低HASH JOIN的成本,从而使优化器更多的选择使用HASH JOIN.

将PGA的管理交给ORACLE内存管理器是一个不错的选择,绝大多数据时候比手工设置各个值要好的多,只不过在ORACLE 9I共享服务器时无法使用PGA自动管理特性.

可以通过下面的SQL查询来大致确认PGA是否够用:

select name,value,unit from v$pgastat where name in('aggregate PGA target parameter','maximum PGA allocated');

当maximum PGA allocated相对于aggregate PGA target parameter过大时,则说明PGA偏小了,需要增加空间.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Oracle SQL Cache