oracle 數據庫連接池策略


   來自oracle 官方對於數據庫連接池的使用建議:

一、 連接風暴是指,在短時間內,連接數成百上千的增長:
1、 連接風暴可能導致數據庫服務器不穩定或者不可用
       Logon/Logoff是非常消耗資源的(創建新連接,分配資源,map SGA等)
2、產生連接風暴的根本原因是動態連接池策略,即連接池的最小值和最大值不等,且差值很大(幾千)
3、如果使用動態連接池策略,執行計划變差可能成為連接風暴的導火索,但大量的進程創建和logon活動可能掩蓋導火索,從而導致診斷過程更長


二、Oracle數據庫是process-based architecture:

      很多情況下,到數據庫的連接會使用dedicated server方式,這意味着,對於每一個連接,在數
據庫服務器端有一個進程給這個連接服務。過多的連接,意味着過多的進程,但是不意味着更高的TPS

 

三、CPU的使用效率才是關鍵:
    連接數過多會導致CPU cache的命中率下降,從而使得CPU使用效率下降。
    連接數過多時,latch的spin機制可能導致更多的空耗的CPU,從而使得CPU使用效率下降


四、建議&問答:

1、對於OLTP類型的系統,所有應用到數據庫服務器的最大連接數 = 最小連接數 = 數據庫服務器CPU core*數的1-10倍。

    a、CPU core,指的是物理的core數,而不是超線程之后的

    b、1-10倍只是一個參考值,具體適合的數值與具體的工作負載有關,需要測試才能確定。如果工作負載做的IO相對多一些,則可能更接近於10倍是適合的數值,如果工作負載做運算耗                  CPU 相對更多一些,則可能更接近於1倍是適合的數值


2、連接池最大值設的很高,但是平時active連接數很少,這樣有沒有問題?

   a、在連接池里的連接沒有都active的時候,沒有問題

   b、但是連接數設大,就存在所有連接都active的可能,就存在連接數過多導致問題的可能,也會
       有連接風暴的風險

   c、如果有一次寫日志操作很慢,或者有一條SQL的執行計划出了問題,都可能導致連接被占用的時
       間更長,從而導致連接風暴,大量的連接都變成active的,業務系統服務中斷

   d、如果知道active連接數總是很少,連接池設小就行了,不需要設大,也不推薦設大

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM