浅谈各种数据库连接池
?
1.各種數(shù)據(jù)庫連接池
? ?開源的免費(fèi)連接池:
? ? ? ? DBCP? C3P0? Proxool? Druid? Jakarta ?DDConnectionBroker? BoneCP
? ? ? ?XAPool? Primrose? SmartPool? MiniConnectionPoolManager?
? 商業(yè)的中間件連接池:
? ? ? ? weblogic的連接池?? websphere的連接池
?
2. 常用的連接池比較:
? ??DBCP可能是最常用的開源連接池,常用的原因
? ? ? ?一是配置比較方便;
? ? ? ?二是很多開源和tomcat的例子基本都是使用DBCP連接池。
? ? ? ?該連接池的基本功能都有,比如配置最大和最小的連接數(shù),連接等待時間等。
? ? 性能:在項(xiàng)目中測試,此連接池的持續(xù)運(yùn)行的穩(wěn)定性還是可以,但速度稍慢,
? ? ? ? ? ? 在高并發(fā)的壓力下穩(wěn)定性有所下降,不提供連接池監(jiān)控。
?
? ??C3P0也是常用的一款開源的連接池,在開發(fā)中用的也比較多,基本功能齊全。
? ? 性能:在項(xiàng)目中測試,發(fā)現(xiàn)此連接池的持續(xù)運(yùn)行的穩(wěn)定性相當(dāng)不錯,
? ? ? ? ? ? 在高并發(fā)的壓力下穩(wěn)定性也有一定的保證,不提供連接池監(jiān)控
?
? ??Proxool這個連接池可能較少有人使用,但其提供連接池監(jiān)控也有一定的知名度,基本功能齊全。
? ? 性能:在項(xiàng)目中測試,此連接池的持續(xù)運(yùn)行穩(wěn)定性有一定的問題,但是因?yàn)樗邆浔O(jiān)控功能,
? ? ? ? ? ? 很多時候會用在開發(fā)測試的階段,有助于確定是否有連接沒有被關(guān)掉等來排除代碼的一些性能問題。
?
? ?上面的三種都是開源的連接池的比較,如果有機(jī)會使用商業(yè)的中間件連接池的話,開源的可以直接忽略掉,
? ?因?yàn)榛ㄥX的東西和免費(fèi)的東西完全不在一個量級。
? ?簡單的說下weblogic連接池,基本配置可以在網(wǎng)上查,這里說下weblogic連接池Test Reserved Connections
? (對取得的連接進(jìn)行測試)和Test Released Connections(對釋放的連接進(jìn)行測試)這兩個選項(xiàng),有時候在系統(tǒng)
? 壓力大的時候會出現(xiàn)連接失效的異常,使用該連接池就會避免這個問題,因?yàn)門est Reserved Connections和
? Test Released Connections在每次連接和釋放的時候都會幫我們先測試,一旦檢查?到連接是無效的他會廢棄掉
? 還給數(shù)據(jù)庫,只給你有效的。
? ?性能:在具體項(xiàng)目應(yīng)用中,此連接池的持續(xù)運(yùn)行的穩(wěn)定性強(qiáng),在高并發(fā)的壓力下性能也相當(dāng)優(yōu)秀,
? ? ? ? ? ?在一些異常情況下連接池里的連接也能夠及時釋放。連接池監(jiān)控一目了然,及時到位。
3.Druid數(shù)據(jù)庫連接池
? ?這里重點(diǎn)介紹下Druid連接池的配置和使用,Druid 是阿里的一款數(shù)據(jù)庫連接池,據(jù)阿里介紹,Druid?是目前開源
? ?中最好的連接池,在功能,性能,可擴(kuò)展性方面遠(yuǎn)勝于其他的數(shù)據(jù)庫連接池,并且Druid?已經(jīng)部署了?超過7000個
? ?阿里應(yīng)用,經(jīng)過了長時間生產(chǎn)環(huán)境大規(guī)模部署的嚴(yán)苛考驗(yàn) ,這話有沒有水分很難說,但確實(shí)有它的優(yōu)點(diǎn):
下載 druid-0.2.20.jar http://download.csdn.net/detail/wind520/5670085
?在web.xml中配置上下面這段,就可以實(shí)時查看連接池使用情況
<filter>
<filter-name>DruidWebStatFilter</filter-name>
<filter-class>com.alibaba.druid.support.http.WebStatFilter</filter-class>
<init-param>
<param-name>exclusions</param-name>
<param-value>/static/*,*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>DruidWebStatFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>DruidStatView</servlet-name>
<servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DruidStatView</servlet-name>
<url-pattern>/druid/*</url-pattern>
</servlet-mapping>
?
datasource.xml中配置
<bean name="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
init-method="init" destroy-method="close">
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
<!-- initialSize默認(rèn)0:初始化時建立物理連接的個數(shù) -->
<property name="initialSize" value="${druid.initialSize}" />
<!-- maxActive默認(rèn)8:最大連接池數(shù)量 -->
<property name="maxActive" value="${druid.maxActive}" />
<!-- minIdle默認(rèn)8:最小連接池數(shù)量 -->
<property name="minIdle" value="${druid.minIdle}" />
<property name="maxWait" value="${druid.maxWait}" />
<property name="validationQuery" value="${validationQuery}" />
<property name="testOnBorrow" value="${druid.testOnBorrow}" />
<property name="testOnReturn" value="${druid.testOnReturn}" />
<property name="testWhileIdle" value="${druid.testWhileIdle}" />
<property name="timeBetweenEvictionRunsMillis" value="${druid.timeBetweenEvictionRunsMillis}" />
<!-- minEvictableIdleTimeMillis:配置一個連接在池中最小生存的時間,單位是毫秒 -->
<property name="minEvictableIdleTimeMillis" value="${druid.minEvictableIdleTimeMillis}" />
<!-- 當(dāng)發(fā)生連接泄漏時,使用RemoveAbandanded相關(guān)配置,用來關(guān)閉長時間不使用的連接。 -->
<property name="removeAbandoned" value="${druid.removeAbandoned}" />
<!-- removeAbandonedTimeout:單位秒 -->
<property name="removeAbandonedTimeout" value="${druid.removeAbandonedTimeout}" />
<!-- 關(guān)閉abanded連接時輸出錯誤日志 -->
<property name="logAbandoned" value="${druid.logAbandoned}" />
<property name="filters" value="${druid.filters}" />
</bean>
轉(zhuǎn)載于:https://www.cnblogs.com/fyboke/p/6245951.html
總結(jié)
以上是生活随笔為你收集整理的浅谈各种数据库连接池的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CentOS系统下docker的安装与卸
- 下一篇: .net core ef mysql 的