C3P0,Proxool,BoneCP,Druid等連接池的斷開自動重聯功能


數據庫連接池的斷開自動重聯、失敗恢復功能顯得很重要,不知道目前主流的數據庫連接池:C3P0,Proxool,BoneCP,Druid等支持如何?

我知道的:

Proxool:

1
2
3
4
5
6
7
8
9
10
<!--proxool 解決與數據庫斷開重連問題(houseKeepingTestSql爲oracle的語法,其他數據庫類似) -->
<property name="houseKeepingTestSql">
<value>select 1 from dual</value>
</property>
<property name="testBeforeUse">
<value>true</value>
</property>
<property name="testAfterUse">
  <value>true</value>
</property>

C3P0:

breakAfterAcquireFailure: false
        true表示pool向數據庫請求連接失敗後標記整個pool爲block並close,就算後端數據庫恢復正常也不進行重連,客戶端對pool的請求都拒絕掉。false表示不會標記 pool爲block,新的請求都會嘗試去數據庫請求connection。默認爲false。因此,如果想讓數據庫和網絡故障恢復之後,pool能繼續請求正常資源必須把此項配置設爲false 
testConnectionOnCheckout: false
         true表示在每次從pool內checkout連接的時候測試其有效性,這是個同步操作,因此應用端的每次數據庫調用,都會先通過測試sql測試其有效性,如果連接無效,會關閉此連接並剔除出pool,並嘗試從pool內取其他連接,默認爲false,此特性要慎用,會造成至少多一倍的數據庫調用。 
testConnectionOnCheckin: false
       true表示每次把連接checkin到pool裏的時候測試其有效性,因爲是個事後操作,所以是異步的,應用端不需要等待測試結果,但同樣會造成至少多一倍的數據庫調用。 
idleConnectionTestPeriod: 60
       C3P0會有一個Task檢測pool內的連接是否正常,此參數就是Task運行的頻率。默認值爲0,表示不進行檢測。 
acquireRetryAttempts: 10
       重試次數
acquireRetryDelay: 1000

       重試間隔時間

感覺 斷開自動重聯 功能比較耗性能,不知道有沒有什麼更好的辦法可以實現?

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