日期:2014-05-16 浏览次数:20563 次
程序全局区(PGA)是包含客户端连接服务器所派生的服务器进程的集合,每个服务器进程都拥有存放数据和控制信息的私有内存区域。客户端进程和服务器端进程一一对应,由服务器端进程完成用户的请求,并将数据返回给客户端进程。
?? 例如,当一个用户连接数据库并调用SQL语句时,这条SQL语句对应的游标就将在PGA中创建一个运行时区域,注意,这个区域是私有的,只针对调用SQL的这个用户进程。PGA就是所有服务器进程的逻辑集合。
?因此PGA和SGA有着质的不同。SGA用于在进程间共享信息,PGA则用于信息私有化。图15-17表示了SGA和PGA内存区域内容的不同。
SGA:数据缓存、共享池、大池、Java池...
PGA:堆栈空间、用户会话数据、游标状态...
PGA的大小直接影响了性能,尤其针对会导致排序的SQL查询。以下几种情况需要提供足够的PGA:
导致排序的操作如 ORDER BY、GROUP BY、 ROLLUP等操作
哈希连接
位图合并
位图创建
批量数据装载
?
在Oracle 10g/11g版本中,PGA的管理被自动化设置,成为自动的PGA内存管理。在该方式中,Oracle将动态调整PGA内存的大小为
SGA内存的20%,最小值是10MB。初始化参数PGA_AGGREGATE_TARGET显示了当前PGA的分配情况。
SQL> show parameters pga
NAME???????????????????????????????? TYPE??????? VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_target???????????????? big integer 90M
SQL>
?
?
在构建一个新的数据库实例时,PGA_AGGREGATE_TARGET 参数可以首先凭经验进行确定,例如,对应SGA大小20%。然后,
在系统载荷上升的情况下,使用Oracle PGA优化工具,调节 PGA_AGGREAGATE_TARGET参数。Oracle 提供了两个PGA建议
性能视图:V$PGA_TARGET_ADVICE和V$PGA_TARGET_ADVICE_HISTOGRAM。
例如下面的查询列出了在不同PGA设置时预计的命中率:
select round(pga_target_for_estimate/1024/1024) est_target_mb,estd_pga_cache_hit_percentage,estd_overalloc_count,pga_target_factor from v$pga_target_advice order by 1;
EST_TARGET_MB ESTD_PGA_CACHE_HIT_PERCENTAGE ESTD_OVERALLOC_COUNT
------------- ----------------------------- --------------------
PGA_TARGET_FACTOR
-----------------
?????????? 11??????????????????????????? 97??????????????????? 2
???????????? .125
?????????? 23??????????????????????????? 97??????????????????? 2
????????????? .25
?????????? 45?????????????????????????? 100??????????????????? 1
?????????????? .5
EST_TARGET_MB ESTD_PGA_CACHE_HIT_PERCENTAGE ESTD_OVERALLOC_COUNT
------------- ----------------------------- --------------------
PGA_TARGET_FACTOR
-----------------
?????????? 68?????????????????????????? 100??????????????????? 0
????????????? .75
?????????? 90?????????????????????????? 100??????????????????? 0
??????????????? 1
????????? 108?????????????????????????? 100??????????????????? 0
????????????? 1.2
EST_TARGET_MB ESTD_PGA_CACHE_HIT_PERCENTAGE ESTD_OVERALLOC_COUNT
------------- ----------------------------- --------------------
PGA_TARGET_FACTOR
-----------------
????????? 126?????????????????????????? 100??????????????????? 0
????????????? 1.4
????????? 144?????????????????????????? 100??????????????????? 0
????????????? 1.6
????????? 162?????????????????????????? 100??????????????????? 0
????????????? 1.8
EST_TARGET_MB ESTD_PGA_CACHE_HIT_PERCENTAGE ESTD_OVERALLOC_COUNT
------------- ----------------------------- --------------------
PGA_TARGET_FACTOR
-----------------
????????? 180?????????????????????????? 100??????????????????? 0
??????????????? 2
????????? 270?????????????????????????? 100??????????????????? 0
??????????????? 3
????????? 360?????????????????????????? 100??????????????????? 0
??????????????? 4
EST_TARGET_MB ESTD_PGA_CACHE_HIT_PERCENTAGE ESTD_OVERALLOC_COUNT
------------- ----------------------------- --------------------
PGA_TARGET_FACTOR
-----------------
????????? 540?????????????????????????? 100??????????????????? 0
??????????????? 6
????????? 720?????????????????????????? 100??????????????????? 0
??????????????? 8
14 rows selected.
SQL>
?
||||||||||||||||||||||||||||||||||||||
摘自-老白一个金牌DBA的故事
?
?? Process Global Area,也就是常说的Program Global Area,简称PGA,是数据库服务进程的私有空间。它包含全局变量数据结构和控制信息,比如一个游标的执行空间。当某个游标执行时,都需要在执行该游标的服务进程的PGA里分配一个运行空间。
??
?? 调整PGA能够提高数据库的性能。总的来说,PGA空间越大,能够得到越快的性能。拿排序来说,如果有足够的PGA排序区(sort area),那么