Oralce單機併發關鍵參數sessions&processes

網上關於oracle併發連接數的優化文章千篇一律,幾乎都是把最大processes從150改爲300,至於爲什麼改爲300,最大能支持多少都沒有說清楚。於是準備去官方文檔一探究竟。


首先是processes和sessions這兩個關鍵參數。

processes

Property Description
Parameter type Integer
Default value默認值 100
Modifiable No
Range of values取值範圍 6 to operating system dependent.最小6,最大取決於操作系統
Basic Yes
Real Application Clusters RAC集羣 Multiple instances can have different values. RAC集羣多實例可以支持不同的參數。

以上內容來自官方文檔 PROCESSES

根據Oracle定義的PROCESSES的默認值,這個值應該說是默認100,但是實際上到現在我看到的Oracle這個默認值都是150,所以這個默認值具體是怎麼依賴機器配置的未知。

PROCESSES指定了可以同時連接到Oracle的最大操作系統用戶進程數,包括後臺進程、鎖、作業隊列和並行執行的進程。而且SESSIONS和TRANSACTIONS參數的默認值都是從此參數派生的。所以,當調整PROCESSES時,也要相應的調整這兩個參數。

那麼,併發進程數的調整,首先應該看常規配置下單機能支撐多少進程,然後相應的對session和transactions進行修改。

再來看sessions:

sessions

Property Description
Parameter type Integer
Default value Derived: (1.5 * PROCESSES) + 22
Modifiable No
Range of values 1 to 2^16
Basic Yes

更多解釋見官方文檔 PROCESSES

根據文檔看下來,sessions的默認值的計算公式是:

默認sessions = (1.5 * processes) + 22

session的定義是客戶端與Oracle服務器的一次登錄請求,每次登錄請求會產生一個session。sessions有效的確定了數據庫的最大併發用戶數。應該始終將此參數顯式設置爲等於最大併發用戶數的估計值,加上後臺進程數,再加上遞歸會話的大約10%。

ENQUEUE_RESOURCES和TRANSACTIONS也受sessions影響,所以改變sessions後,還要改變這兩個參數。

pga_aggregate_target

這個參數是PGA內存的大小,跟併發數有關。當PROCESSES調大的時候,PGA相應的也要給大。

pga_aggregate_target=併發數量 * 4M

通過這個sql可以看每個連接進程消耗的pga大小:

select sum(pga_used_mem)/1024 total_used, sum(pga_used_mem)/count(1)/1024 used_avg, sum(pga_alloc_mem)/1024 total_alloc, sum(pga_alloc_mem)/count(1)/1024 alloc_avg from v$process;

Tips:修改processes參數之後,sessions參數和transactions參數在重啓後自動調整了。其影響順序是:processes > sessions > transactions . 調整前面的,後面的會自動調整,但是調整後面的,前面的不會調整。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章