關於PGA_AGGREGATE_TARGET的引數說明

BTxigua發表於2016-12-23

PGA
    UGA:session資訊,WORK AREA(hash area,sort area等)等等
    CGA:parse呼叫、executive呼叫、fetch呼叫等

pga_aggregate_target設定所有程式總的WORK AREA區大小,主要影響下面幾個相關引數的設定
    _smm_max_size: 序列程式的WORK AREA上限值,單位KB。預設值
    _pga_max_size: 每個程式WORK AREA上限值,單位byte。
    _smm_px_max_size: 並行模式下,所有並行程式共享的WORK AREA上限值,單位KB

_smm_max_size:
    pga_aggregate_target  <= 500 MB, then _smm_max_size = 20% * pga_aggregate_target
    pga_aggregate_target  [500MB , 1000 MB], then _smm_max_size = 100 MB
    pga_aggregate_target  >= 1000 MB, then _smm_max_size = 10% * pga_aggregate_target, 最大值 1024MB

_pga_max_size:
    _pga_max_size = 2 * _smm_max_size

_smm_px_max_size:
    _smm_px_max_size = 50% * pga_aggregate_target
    degree of parallelism (DOP) <= 5, 每個slave程式使用_smm_max_size限制
    degree of parallelism (DOP) > 5,  所有slave程式共享_smm_px_max_size

從上面的分析,我們可以得到下面的一些指導:
1、增大pga_aggregate_target設定,可以提高每個程式的work area大小,對於hash join、排序等操作有利
2、PGA達到10G後,單個程式的work area已經達到極限,不能再獲得更大的空間了
3、在CPU足夠的情況,設定並行度超過6,可以獲得更大的work area空間,比如建立索引就會更快
4、如果大量程式啟用高並行度,作業系統記憶體很容易被消耗光,因為PGA只是限定了work area的空間,而其他的元件可以越界。
Oracle自己也說:
The PGA_AGGREGATE_TARGET setting acts as a target, and not a limit.
PGA_AGGREGATE_TARGET only controls allocations of tunable memory.

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10867315/viewspace-2131276/,如需轉載,請註明出處,否則將追究法律責任。

相關文章