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> |
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
? ? ? ?重試間隔時間
感覺 斷開自動重聯 功能比較耗性能,不知道有沒有什么更好的辦法可以實現?
總結
以上是生活随笔為你收集整理的C3P0,Proxool,BoneCP,Druid等连接池的断开自动重联功能的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html手机点赞图标素材,微信点赞心形图
- 下一篇: 每学期都以NB的姿态出场