初始建庫SGA該設多大、PGA該設多大的建議,sgapga
1.背景情況
很多新業務系統上線,大部分DBA也不懂業務,就悶著頭建庫,SGA值設多大,PGA設多大,隨便指定一個值就得了,運行一段時間後,也許就因為這個值是隨便指定的,例如SGA+PGA大於總實體記憶體,SGA值或PGA值太小等等,造成DOWN機或效能低下的情況,屢見不鮮。
其實,SGA初始設定多大,PGA初始設定多大,在OLTP系統上該怎麼設,在OLAP系統上又該怎麼設,ORACLE是有說法的。
2.ORACLE執行個體總佔用記憶體規劃2.1下面是ORACLE官方的建議
Assume that an Oracle database instance is configured to run on a system with 4 GB of physical memory. Part of that memory should be left for the operating system and other non-Oracle applications running on the same hardware system. You might decide to dedicate only 80% (3.2 GB) of the available memory to the Oracle database instance. |
2.2含義理解:
如果運行ORACLE資料庫的機器上,在不考慮運行其它特殊程式的情況下,以及假設只運行一個執行個體的情況下,可以將總實體記憶體的80%分配給資料庫執行個體使用,例如總實體記憶體為4GB,那就可以為資料庫配置3.2GB記憶體(SGA+PGA)
3.SGA和PGA初始值到底該設定成多大3.1下面是ORACLE官方的建議
■For OLTP systems, the PGA memory typically accounts for a small fraction of the total memory available (for example, 20%), leaving 80% for the SGA. ■For DSS systems running large, memory-intensive queries, PGA memory can typically use up to 70% of the available memory. Oracle recommends initially dedicating 50% of the available memory to the PGA, and 50% to the SGA. Therefore, the initial value of the PGA_AGGREGATE_TARGET parameter for a DSS system can be calculated as: |
3.2含義理解
(1)對於OLTP系統,SGA占資料庫使用總記憶體的80%,PGA占資料庫使用記憶體的20%(例如總實體記憶體4GB,PGA則需要佔用約655MB)
(2)對於OLAP(DSS)系統,對於密集大查詢的系統,PGA可以佔到資料庫使用總記憶體的70%(例如總實體記憶體4GB,PGA則需要佔用約2.2GB(2.24GB),建議最初設定資料庫使用總記憶體的50%
3.3建議計算公式
(1)OLTP系統:
SGA_TARGET = (total_mem * 0.8) * 0.8
PGA_AGGREGATE_TARGET=(total_mem * 0.8) * 0.2
(2)OLAP(DSS)系統:
SGA_TARGET= (total_mem * 0.8) * 0.5
PGA_AGGREGATE_TARGET =(total_mem * 0.8) * 0.5
4.上線後調整值參考
上面的一切初始建議值,都是在上線前的最佳配置建議值,在上線運行一段時間後,系統運行特性真面目就慢慢的體現出來了,這時,就應該根據運行實際需求及時的調整SGA_TARGET與PGA_AGGREGATE_TARGET的值了。
SGA_TARGET的實際需求建議值,可以參考V$SGA_TARGET_ADVICE
PGA_AGGREGATE_TARGET的實際需求建議值,可以參考V$PGA_TARGET_ADVICE視圖
本文作者:黎俊傑(網名:踩點),從事”系統架構、作業系統、存放裝置、資料庫、中介軟體、應用程式“六個層面系統性的效能最佳化工作
歡迎加入 系統效能最佳化專業群,共同探討效能最佳化技術。群號:258187244