標籤:oracle pga
理解PGA
PGA(program grlobal area or process global area)指服務進程的私人記憶體空間,包括服務進程全域變數,資料結構和控制資訊,如服務進程SQL查詢的遊標,PGA包括以下結構:
私人SQL地區:
儲存服務進程執行SQL所需要的私人資料和控制結構,包括固定地區和運列區域(runtimearea)。固定地區資料在SQL遊標關閉之前一直存在,運列區域在SQL執行時存在(如INSERT、DELETE及UPDATE執行完成後釋放運列區域,SELECT語句只有所有查詢結果集擷取完成或取消才釋放運列區域)。對於獨立模式連結,私人SQL地區在PGA中分配,而共用模式連結私人SQL地區在SGA中分配。
會話空間:
儲存使用者logon資訊等會話控制資訊。對於共用模式,會話資訊是共用的。
SQL工作區(SQL workarea):
對於複雜SQL,需要進行多表查詢,可能會需要額外地區如:
排序操作
HASH JION
位元影像連結
建立位元影像
多表HASH連結
……
在oracle server中PGA的空間是獨立於SGA的,PGA中的SQL工作區域對資料庫的效能有很大影響,配置合理的PGA對於調整系統效能有很大的協助。
PGA是獨立於SGA的記憶體空間,主要用來執行SQL、表串連、排序等操作,一般根據系統配置和應用軟體的不同,可以把實體記憶體的15%——30%用於PGA空間。
排序區操作需要分配記憶體空間,這部分記憶體空間稱為sort_area。在使用pga自動管理的系統中sort_area被自動管理,否則,由sort_areaZ_size參數分配限定每個會話的使用sort_area的最大值。
通過v$sort_segment可以查看暫存資料表空間排序段的使用空間。
SQL> selecttablespace_name, extent_size, total_extents, used_extents, free_extents,max_used_size 2 from v$sort_segment; TABLESPACE_NAME EXTENT_SIZE TOTAL_EXTENTSUSED_EXTENTS FREE_EXTENTS MAX_USED_SIZE------------------------------------------ ------------- ------------ ------------ -------------TEMP 128 58 0 58 9
查看某個資料庫使用者當前使用了多少臨時段空間,可以通過查看v$sort_usage和v$session實現:
SQL>select s.username, u.tablespace, u.contents, u.extents, u.blocks 2 from v$session s, v$sort_usage u 3 where s.saddr = u.session_addr; PGA PGA_AGGREGATE_TARGET
PGA PGA_AGGREGATE_TARGET
SQL>show parameters pga NAME TYPE VALUE----------------------------------------------- ------------------------------pga_aggregate_target big integer 800MPGA能夠使用的最大空間SQL>show parameters workarea_size NAME TYPE VALUE----------------------------------------------- ------------------------------workarea_size_policy string AUTO分配SQL工作區的規則, AUTO或MANNUALSQL>show parameters sort_area_size NAME TYPE VALUE----------------------------------------------- ------------------------------sort_area_size integer 65536定義每個會話SQL排序區的最大值SQL>show parameters hash_area_size NAME TYPE VALUE----------------------------------------------- ------------------------------hash_area_size integer 131072定義每個會話hash串連的記憶體空間最大值SQL>show parameters bitmap_merge_area_size NAME TYPE VALUE----------------------------------------------- ------------------------------bitmap_merge_area_size integer 1048576定義每個會話使用位元影像合并串連時的記憶體工作區域的最大值SQL>show parameters create_bitmap_area_size NAME TYPE VALUE----------------------------------------------- ------------------------------create_bitmap_area_size integer 8388608定義每個會話建立位元影像時可以使用的記憶體工作區域的最大值
如果workarea_size_policy設定為AUTO就不需要為*_area_size設定值,PGA自動管理為自動為各個工作區分配記憶體大小。Oracle10g之後,共用模式串連也可以設定workarea_size_policy自動管理。
通過v$sgastat可以得到一些調整PGA_AGGREGATGE_TARGET參數的參考資料
SQL>select * from v$pgastat; NAME VALUE UNIT-------------------------------------------------------------------------- ------------aggregate PGA targetparameter 838860800 bytesaggregate PGA autotarget 531348480 bytesglobal memory bound 104857600 bytestotal PGA inuse 248585216 bytestotal PGA allocated 319751168 bytesmaximum PGA allocated 481471488 bytestotal freeable PGAmemory 45678592 bytesprocess count 67max processes count 96PGA memory freed back toOS 3.1422E+11 bytestotal PGA used for autoworkareas 0 bytes NAME VALUE UNIT-------------------------------------------------------------------------- ------------maximum PGA used for autoworkareas 56870912 bytestotal PGA used for manualworkareas 0 bytesmaximum PGA used for manualworkareas 542720 bytesover allocation count 0bytes processed 3.6840E+11 bytesextra bytes read/written 0 bytescache hit percentage 100 percentrecompute count (total) 2761548 19 rows selected.
AggregatePGA auto target 可調整的pga空間,只有這部分空間可以被oracle自動調整功能使用,並用於各種SQL工作區域,這部分空間應該占PGA_AGGREGATE_TARGET中的最大比重,如果太小,可能會引起效能問題。
TotalPGA used for auto workarea
系統使用的可調整PGA空間,maxmum PGA used for auto workarea顯示系統啟動後使用可調整PGA的最大值
TotalPGA in used:
目前PGA空間的使用方式,這個值和v$process中的PGA_USED_MEM相同
Cachehit percentage: 這個值在oracle9i後出現,它顯示PGA的效能。如果值是100%說明PGA的空間是夠用的。
當PGA空間不足時,oracle需要使用外部輔助空間,結合one-pass或multi-pass模式來完成操作,此時系統的效能將受到影響,該值得計算公式為:
PGACACHE HIT RATIO=total byte processed * 100 / (total bytes processed + totalextra bytes read/written)
使用v$sql_workarea_histogram視圖可以查看系統中PGA的詳細使用方式,該視圖中列出了
通過v$sal_workarea_active視圖,可以查看當前活躍的PGA工作區
未完待續……
本文出自 “DBA的天空” 部落格,請務必保留此出處http://kevinora.blog.51cto.com/9406404/1765483
ORACLE PGA introduction