Energy of Love |
|
|||
日歷
統(tǒng)計(jì)
導(dǎo)航常用鏈接留言簿隨筆分類
隨筆檔案
搜索最新評論
閱讀排行榜評論排行榜 |
一、連接池概述
數(shù)據(jù)庫連接池概述: 數(shù)據(jù)庫連接是一種關(guān)鍵的有限的昂貴的資源,這一點(diǎn)在多用戶的網(wǎng)頁應(yīng)用程序中體現(xiàn)得尤為突出。對數(shù)據(jù)庫連接的管理能顯著影響到整個(gè) 應(yīng)用程序的伸縮性和健壯性,影響到程序的性能指標(biāo)。數(shù)據(jù)庫連接池正是針對這個(gè)問題提出來的。 數(shù)據(jù)庫連接池負(fù)責(zé)分配、管理和釋放數(shù)據(jù)庫連接,它允許應(yīng)用程序重復(fù)使用一個(gè)現(xiàn)有的數(shù)據(jù)庫連接,而再不是重新建立一個(gè);釋放空閑時(shí) 間超過最大空閑時(shí)間的數(shù)據(jù)庫連接來避免因?yàn)闆]有釋放數(shù)據(jù)庫連接而引起的數(shù)據(jù)庫連接遺漏。這項(xiàng)技術(shù)能明顯提高對數(shù)據(jù)庫操作的性能。 數(shù)據(jù)庫連接池在初始化時(shí)將創(chuàng)建一定數(shù)量的數(shù)據(jù)庫連接放到連接池中,這些數(shù)據(jù)庫連接的數(shù)量是由最小數(shù)據(jù)庫連接數(shù)來設(shè)定的。無論這些 數(shù)據(jù)庫連接是否被使用,連接池都將一直保證至少擁有這么多的連接數(shù)量。連接池的最大數(shù)據(jù)庫連接數(shù)量限定了這個(gè)連接池能占有的最大連接 數(shù),當(dāng)應(yīng)用程序向連接池請求的連接數(shù)超過最大連接數(shù)量時(shí),這些請求將被加入到等待隊(duì)列中。數(shù)據(jù)庫連接池的最小連接數(shù)和最大連接數(shù)的設(shè) 置要考慮到下列幾個(gè)因素: 1) 最小連接數(shù)是連接池一直保持的數(shù)據(jù)庫連接,所以如果應(yīng)用程序?qū)?shù)據(jù)庫連接的使用量不大,將會有大量的數(shù)據(jù)庫連接資源被浪費(fèi); 2) 最大連接數(shù)是連接池能申請的最大連接數(shù),如果數(shù)據(jù)庫連接請求超過此數(shù),后面的數(shù)據(jù)庫連接請求將被加入到等待隊(duì)列中,這會影響之 后的數(shù)據(jù)庫操作。 3) 如果最小連接數(shù)與最大連接數(shù)相差太大,那么最先的連接請求將會獲利,之后超過最小連接數(shù)量的連接請求等價(jià)于建立一個(gè)新的數(shù)據(jù)庫 連接。不過,這些大于最小連接數(shù)的數(shù)據(jù)庫連接在使用完不會馬上被釋放,它將被放到連接池中等待重復(fù)使用或是空閑超時(shí)后被釋放。 目前常用的連接池有:C3P0、DBCP、Proxool 網(wǎng)上的評價(jià)是: C3P0比較耗費(fèi)資源,效率方面可能要低一點(diǎn)。 DBCP在實(shí)踐中存在BUG,在某些種情會產(chǎn)生很多空連接不能釋放,Hibernate3.0已經(jīng)放棄了對其的支持。 Proxool的負(fù)面評價(jià)較少,現(xiàn)在比較推薦它,而且它還提供即時(shí)監(jiān)控連接池狀態(tài)的功能,便于發(fā)現(xiàn)連接泄漏的情況。 配置如下: 1、在spring配置文件中,一般在applicationContext.xml中 <bean id="proxoolDataSource" class="org.logicalcobwebs.proxool.ProxoolDataSource"> <property name="driver" value="${jdbc.connection.driverClassName}"/> <property name="driverUrl" value="${jdbc.connection.url}"/> <property name="user" value="${jdbc.connection.username}"/> <property name="password" value="${jdbc.connection.password}"/> <!-- 測試的SQL執(zhí)行語句 --> <property name="houseKeepingTestSql" value="${proxool.houseKeepingTestSql}"/> <!-- 最少保持的空閑連接數(shù) (默認(rèn)2個(gè)) --> <property name="prototypeCount" value="${proxool.prototypeCount}"/> <!-- proxool自動偵察各個(gè)連接狀態(tài)的時(shí)間間隔(毫秒),偵察到空閑的連接就馬上回收,超時(shí)的銷毀 默認(rèn)30秒) --> <property name="houseKeepingSleepTime" value="${proxool.hourseKeepingSleepTime}"/> <!-- 最大活動時(shí)間(超過此時(shí)間線程將被kill,默認(rèn)為5分鐘) --> <property name="maximumActiveTime" value="${proxool.maximumActiveTime}"/> <!-- 連接最長時(shí)間(默認(rèn)為4個(gè)小時(shí)) --> <property name="maximumConnectionLifetime" value="${proxool.maximumConnectionLifetime}"/> <!-- 最小連接數(shù) (默認(rèn)2個(gè)) --> <property name="minimumConnectionCount" value="${proxool.minimumConnectionCount}"/> <!-- 最大連接數(shù) (默認(rèn)5個(gè)) --> <property name="maximumConnectionCount" value="${proxool.maximumConnectionCount}"/> <!-- --> <property name="statistics" value="${proxool.statistics}"/> <!-- 別名 --> <property name="alias" value="${proxool.alias}"/> <!-- --> <property name="simultaneousBuildThrottle" value="${proxool.simultaneous-build-throttle}"/> </bean> 然后注入到sessionFactory中 <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource" ref="proxoolDataSource"/> </bean> Porxool 配置文件 --==--==--==--==--==<proxool.xml>==--==--==--==--==--==--== <?xml version="1.0" encoding="UTF-8"?> <proxool> <alias>WMS</alias> <driver-url>jdbc:postgresql://192.168.210.184:5432/wms</driver-url> <driver-class>org.postgresql.Driver</driver-class> <driver-properties> <property name="user" value="wms_user" /> <property name="password" value="wms" /> </driver-properties> <minimum-connection-count>2</minimum-connection-count> <maximum-connection-count>40</maximum-connection-count> <simultaneous-build-throttle>20</simultaneous-build-throttle> <prototype-count>2</prototype-count> <house-keeping-test-sql>select CURRENT_DATE</house-keeping-test-sql> </proxool> --==--==--==--==--==<proxool.xml>==--==--==--==--==--==--== 配置說明: alias -〉數(shù)據(jù)庫連接別名(程序中需要使用的名稱) driver-url -〉數(shù)據(jù)庫驅(qū)動 driver-class -〉驅(qū)動程序類 driver-properties -〉聯(lián)機(jī)數(shù)據(jù)庫的用戶和密碼 minimum-connection-count -〉最小連接數(shù)量,建議設(shè)置0以上,保證第一次連接時(shí)間 maximum-connection-count -〉最大連接數(shù)量,如果超過最大連接數(shù)量則會拋出異常。連接數(shù)設(shè)置過多,服務(wù)器CPU和內(nèi)存性能消耗很 大。 simultaneous-build-throttle -〉同時(shí)最大連接數(shù) prototype-count -〉一次產(chǎn)生連接的數(shù)量。 例:如果現(xiàn)在prototype-count設(shè)置為4個(gè),但是現(xiàn)在已經(jīng)有2個(gè)可以獲得的連接,那么 將會試圖再創(chuàng)建2個(gè)連接。 但不能超過最大連接數(shù)。 maximum-active-time -〉連接最大時(shí)間活動 默認(rèn)5分鐘 maximum-connection-lifetime -〉連接最大生命時(shí)間 默認(rèn)4小時(shí)
評論:
|
![]() |
|
Copyright © 不高興 | Powered by: 博客園 模板提供:滬江博客 |