pga相關引數

skzhuga發表於2019-02-14

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:

     _smm_max_size <= 100m,then _pga_max_size=200m

    _smm_max_size > 100m,then _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的空間,而其他的元件可以越界。

綜上, pga_aggregate_target並不是硬性限制 ,work area之外的記憶體,不被pga_aggregate_target和_pga_max_size所限制。所以經常會看到PGA的大小超過了pga_aggregate_target,這通常是因為PL/SQL中的變數和陣列中裝入了巨大的資料造成的。通常的例子是bulk collect。


在12c中引入了PGA_AGGREGATE_LIMIT引數,可用來硬性限制PGA大小。

In Oracle release 12.1:  the greater of the following:

* 2 GB

* 200% of PGA_AGGREGATE_TARGET

* (Value of PROCESSES initialization parameter setting) * 3 MB

It will not exceed 120% of the physical memory size minus the total SGA size.


In Oracle release 12.2:

* If MEMORY_TARGET is set, then PGA_AGGREGATE_LIMIT defaults to the MEMORY_MAX_TARGET value.

* If MEMORY_TARGET is not set, then PGA_AGGREGATE_LIMIT defaults to 200% of PGA_AGGREGATE_TARGET.

* If MEMORY_TARGET is not set, and PGA_AGGREGATE_TARGET is explicitly set to 0, then the value of PGA_AGGREGATE_LIMIT is set to 90% of the physical memory size minus the total SGA size.

In all cases, the default PGA_AGGREGATE_LIMIT is at least 2GB and at least 3MB times the PROCESSES parameter.


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

相關文章