C3P0,Proxool,BoneCP,Druid等连接池的断开自动重联功能
數(shù)據(jù)庫(kù)連接池的斷開自動(dòng)重聯(lián)、失敗恢復(fù)功能顯得很重要,不知道目前主流的數(shù)據(jù)庫(kù)連接池:C3P0,Proxool,BoneCP,Druid等支持如何?
我知道的:
Proxool:
?| 1 2 3 4 5 6 7 8 9 10 | <!--proxool 解決與數(shù)據(jù)庫(kù)斷開重連問(wèn)題(houseKeepingTestSql為oracle的語(yǔ)法,其他數(shù)據(jù)庫(kù)類似) --> <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向數(shù)據(jù)庫(kù)請(qǐng)求連接失敗后標(biāo)記整個(gè)pool為block并close,就算后端數(shù)據(jù)庫(kù)恢復(fù)正常也不進(jìn)行重連,客戶端對(duì)pool的請(qǐng)求都拒絕掉。false表示不會(huì)標(biāo)記?pool為block,新的請(qǐng)求都會(huì)嘗試去數(shù)據(jù)庫(kù)請(qǐng)求connection。默認(rèn)為false。因此,如果想讓數(shù)據(jù)庫(kù)和網(wǎng)絡(luò)故障恢復(fù)之后,pool能繼續(xù)請(qǐng)求正常資源必須把此項(xiàng)配置設(shè)為false?
testConnectionOnCheckout: false
? ? ? ? ?true表示在每次從pool內(nèi)checkout連接的時(shí)候測(cè)試其有效性,這是個(gè)同步操作,因此應(yīng)用端的每次數(shù)據(jù)庫(kù)調(diào)用,都會(huì)先通過(guò)測(cè)試sql測(cè)試其有效性,如果連接無(wú)效,會(huì)關(guān)閉此連接并剔除出pool,并嘗試從pool內(nèi)取其他連接,默認(rèn)為false,此特性要慎用,會(huì)造成至少多一倍的數(shù)據(jù)庫(kù)調(diào)用。?
testConnectionOnCheckin: false
? ? ? ?true表示每次把連接checkin到pool里的時(shí)候測(cè)試其有效性,因?yàn)槭莻€(gè)事后操作,所以是異步的,應(yīng)用端不需要等待測(cè)試結(jié)果,但同樣會(huì)造成至少多一倍的數(shù)據(jù)庫(kù)調(diào)用。?
idleConnectionTestPeriod: 60
? ? ? ?C3P0會(huì)有一個(gè)Task檢測(cè)pool內(nèi)的連接是否正常,此參數(shù)就是Task運(yùn)行的頻率。默認(rèn)值為0,表示不進(jìn)行檢測(cè)。?
acquireRetryAttempts: 10
? ? ? ?重試次數(shù)
acquireRetryDelay: 1000
? ? ? ?重試間隔時(shí)間
感覺 斷開自動(dòng)重聯(lián) 功能比較耗性能,不知道有沒有什么更好的辦法可以實(shí)現(xiàn)?
總結(jié)
以上是生活随笔為你收集整理的C3P0,Proxool,BoneCP,Druid等连接池的断开自动重联功能的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: html手机点赞图标素材,微信点赞心形图
- 下一篇: 每学期都以NB的姿态出场