浅谈各种数据库连接池
?
1.各種數據庫連接池
? ?開源的免費連接池:
? ? ? ? DBCP? C3P0? Proxool? Druid? Jakarta ?DDConnectionBroker? BoneCP
? ? ? ?XAPool? Primrose? SmartPool? MiniConnectionPoolManager?
? 商業的中間件連接池:
? ? ? ? weblogic的連接池?? websphere的連接池
?
2. 常用的連接池比較:
? ??DBCP可能是最常用的開源連接池,常用的原因
? ? ? ?一是配置比較方便;
? ? ? ?二是很多開源和tomcat的例子基本都是使用DBCP連接池。
? ? ? ?該連接池的基本功能都有,比如配置最大和最小的連接數,連接等待時間等。
? ? 性能:在項目中測試,此連接池的持續運行的穩定性還是可以,但速度稍慢,
? ? ? ? ? ? 在高并發的壓力下穩定性有所下降,不提供連接池監控。
?
? ??C3P0也是常用的一款開源的連接池,在開發中用的也比較多,基本功能齊全。
? ? 性能:在項目中測試,發現此連接池的持續運行的穩定性相當不錯,
? ? ? ? ? ? 在高并發的壓力下穩定性也有一定的保證,不提供連接池監控
?
? ??Proxool這個連接池可能較少有人使用,但其提供連接池監控也有一定的知名度,基本功能齊全。
? ? 性能:在項目中測試,此連接池的持續運行穩定性有一定的問題,但是因為他具備監控功能,
? ? ? ? ? ? 很多時候會用在開發測試的階段,有助于確定是否有連接沒有被關掉等來排除代碼的一些性能問題。
?
? ?上面的三種都是開源的連接池的比較,如果有機會使用商業的中間件連接池的話,開源的可以直接忽略掉,
? ?因為花錢的東西和免費的東西完全不在一個量級。
? ?簡單的說下weblogic連接池,基本配置可以在網上查,這里說下weblogic連接池Test Reserved Connections
? (對取得的連接進行測試)和Test Released Connections(對釋放的連接進行測試)這兩個選項,有時候在系統
? 壓力大的時候會出現連接失效的異常,使用該連接池就會避免這個問題,因為Test Reserved Connections和
? Test Released Connections在每次連接和釋放的時候都會幫我們先測試,一旦檢查?到連接是無效的他會廢棄掉
? 還給數據庫,只給你有效的。
? ?性能:在具體項目應用中,此連接池的持續運行的穩定性強,在高并發的壓力下性能也相當優秀,
? ? ? ? ? ?在一些異常情況下連接池里的連接也能夠及時釋放。連接池監控一目了然,及時到位。
3.Druid數據庫連接池
? ?這里重點介紹下Druid連接池的配置和使用,Druid 是阿里的一款數據庫連接池,據阿里介紹,Druid?是目前開源
? ?中最好的連接池,在功能,性能,可擴展性方面遠勝于其他的數據庫連接池,并且Druid?已經部署了?超過7000個
? ?阿里應用,經過了長時間生產環境大規模部署的嚴苛考驗 ,這話有沒有水分很難說,但確實有它的優點:
下載 druid-0.2.20.jar http://download.csdn.net/detail/wind520/5670085
?在web.xml中配置上下面這段,就可以實時查看連接池使用情況
<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默認0:初始化時建立物理連接的個數 -->
<property name="initialSize" value="${druid.initialSize}" />
<!-- maxActive默認8:最大連接池數量 -->
<property name="maxActive" value="${druid.maxActive}" />
<!-- minIdle默認8:最小連接池數量 -->
<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}" />
<!-- 當發生連接泄漏時,使用RemoveAbandanded相關配置,用來關閉長時間不使用的連接。 -->
<property name="removeAbandoned" value="${druid.removeAbandoned}" />
<!-- removeAbandonedTimeout:單位秒 -->
<property name="removeAbandonedTimeout" value="${druid.removeAbandonedTimeout}" />
<!-- 關閉abanded連接時輸出錯誤日志 -->
<property name="logAbandoned" value="${druid.logAbandoned}" />
<property name="filters" value="${druid.filters}" />
</bean>
轉載于:https://www.cnblogs.com/fyboke/p/6245951.html
總結
以上是生活随笔為你收集整理的浅谈各种数据库连接池的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CentOS系统下docker的安装与卸
- 下一篇: 了解一下C++输入和输出的概念