日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

浅谈各种数据库连接池

發布時間:2024/1/17 数据库 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 浅谈各种数据库连接池 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

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在每次連接和釋放的時候都會幫我們先測試,一旦檢查?到連接是無效的他會廢棄掉

? 還給數據庫,只給你有效的。

? ?性能:在具體項目應用中,此連接池的持續運行的穩定性強,在高并發的壓力下性能也相當優秀,

? ? ? ? ? ?在一些異常情況下連接池里的連接也能夠及時釋放。連接池監控一目了然,及時到位。

3Druid數據庫連接池

? ?這里重點介紹下Druid連接池的配置和使用,Druid 是阿里的一款數據庫連接池,據阿里介紹,Druid?是目前開源

? ?中最好的連接池,在功能,性能,可擴展性方面遠勝于其他的數據庫連接池,并且Druid?已經部署了?超過7000個

? ?阿里應用,經過了長時間生產環境大規模部署的嚴苛考驗 ,這話有沒有水分很難說,但確實有它的優點:

  • druid 內置了一個功能強大的statfilter插件,能夠詳細統計sql的執行性能,?這可以幫助我們對線上訪問數據庫性能進行分析。
  • 直接把數據庫密碼寫在配置文件中是一個不好的行為,容易導致數據庫安全問題,DruidDataSource支持PasswordCallBack可以解決這一問題。
  • Druid提供了不同的LogFilter,可以根據情況選擇。
  • 如果對JDBC層有編程的需求,可以通過Druid提供的Filter機制,編寫JDBC層的擴展插件。
  • 下載 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

    總結

    以上是生活随笔為你收集整理的浅谈各种数据库连接池的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。