數據庫參數配置

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">  java

<property name="driverClassName" value="${db.driverClassName}"/>  sql

<property name="url" value="${db.url}"/>  數據庫

<property name="username" value="${db.username}"/>  apache

<property name="password" value="${db.password}"/>  緩存

<!--initialSize: 初始化鏈接-->  編碼

<property name="initialSize" value="5"/>  url

<!--maxIdle: 最大空閒鏈接-->  線程

<property name="maxIdle" value="10"/>  日誌

<!--minIdle: 最小空閒鏈接-->  orm

<property name="minIdle" value="5"/>  

<!--maxActive: 最大鏈接數量-->  

<property name="maxActive" value="15"/>  

<!--removeAbandoned: 是否自動回收超時鏈接-->  

<property name="removeAbandoned" value="true"/>  

<!--removeAbandonedTimeout: 超時時間(以秒數爲單位)-->  

<property name="removeAbandonedTimeout" value="180"/>  

<!--maxWait: 超時等待時間以毫秒爲單位 6000毫秒/1000等於60秒-->  

<property name="maxWait" value="3000"/>  

<property name="validationQuery">  

<value>SELECT 1</value>  

</property>  

<property name="testOnBorrow">  

<value>true</value>  

</property>  

</bean>  

參數  描述

username  傳遞給JDBC驅動的用於創建鏈接的用戶名

password  傳遞給JDBC驅動的用於創建鏈接的密碼

url  傳遞給JDBC驅動的用於創建鏈接的URL

driverClassName  使用的JDBC驅動的完整有效的java 類名

connectionProperties  當創建新鏈接時被髮送給JDBC驅動的鏈接參數,

格式必須是 [propertyName=property;]*

注意 :參數user/password將被明確傳遞,因此不須要包括在這裏。

參數  默認值  描述

defaultAutoCommit  true  鏈接池建立的鏈接的默認的auto-commit狀態

defaultReadOnly  driver default  鏈接池建立的鏈接的默認的read-only狀態. 

若是沒有設置則setReadOnly方法將不會被調用. (某些驅動不支持只讀模式,好比:Informix)

defaultTransactionIsolation  driver default  鏈接池建立的鏈接的默認的TransactionIsolation狀態. 

下面列表當中的某一個: (參考javadoc)

 

    * NONE

    * READ_COMMITTED

    * READ_UNCOMMITTED

    * REPEATABLE_READ

    * SERIALIZABLE

defaultCatalog   鏈接池建立的鏈接的默認的catalog

參數  默認值  描述

initialSize  0  初始化鏈接:鏈接池啓動時建立的初始化鏈接數量,1.2版本後支持

maxActive  8  最大活動鏈接:鏈接池在同一時間可以分配的最大活動鏈接的數量, 

若是設置爲非正數則表示不限制

maxIdle  8  最大空閒鏈接:鏈接池中允許保持空閒狀態的最大鏈接數量,超過的空閒鏈接將被釋放,

若是設置爲負數表示不限制

minIdle  0  最小空閒鏈接:鏈接池中允許保持空閒狀態的最小鏈接數量,低於這個數量將建立新的鏈接,

若是設置爲0則不建立

maxWait  無限  最大等待時間:當沒有可用鏈接時,鏈接池等待鏈接被歸還的最大時間(以毫秒計數),

超過期間則拋出異常,若是設置爲-1表示無限等待

參數  默認值  描述

validationQuery   SQL查詢,用來驗證從鏈接池取出的鏈接,在將鏈接返回給調用者以前.若是指定,

則查詢必須是一個SQL SELECT而且必須返回至少一行記錄

testOnBorrow  true  指明是否在從池中取出鏈接前進行檢驗,若是檢驗失敗,

則從池中去除鏈接並嘗試取出另外一個.

注意: 設置爲true後若是要生效,validationQuery參數必須設置爲非空字符串

testOnReturn  false  指明是否在歸還到池中前進行檢驗

注意: 設置爲true後若是要生效,validationQuery參數必須設置爲非空字符串

testWhileIdle  false  指明鏈接是否被空閒鏈接回收器(若是有)進行檢驗.若是檢測失敗,

則鏈接將被從池中去除.

注意: 設置爲true後若是要生效,validationQuery參數必須設置爲非空字符串

timeBetweenEvictionRunsMillis  -1  在空閒鏈接回收器線程運行期間休眠的時間值,以毫秒爲單位.

 若是設置爲非正數,則不運行空閒鏈接回收器線程

numTestsPerEvictionRun  3  在每次空閒鏈接回收器線程(若是有)運行時檢查的鏈接數量

minEvictableIdleTimeMillis  1000 * 60 * 30  鏈接在池中保持空閒而不被空閒鏈接回收器線程

(若是有)回收的最小時間值,單位毫秒

參數  默認值  描述

poolPreparedStatements  false  開啓池的prepared statement 池功能

maxOpenPreparedStatements  不限制  statement池可以同時分配的打開的statements的最大數量, 

若是設置爲0表示不限制

這裏能夠開啓PreparedStatements池. 當開啓時, 將爲每一個鏈接建立一個statement池,

而且被下面方法建立的PreparedStatements將被緩存起來:

    * public PreparedStatement prepareStatement(String sql)

    * public PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency)

注意: 確認鏈接還有剩餘資源能夠留給其餘statement

參數  默認值  描述

accessToUnderlyingConnectionAllowed  false  控制PoolGuard是否允許獲取底層鏈接

若是允許則可使用下面的方式來獲取底層鏈接:

    Connection conn = ds.getConnection();

    Connection dconn = ((DelegatingConnection) conn).getInnermostDelegate();

    ...

    conn.close();

 

默認false不開啓, 這是一個有潛在危險的功能, 不適當的編碼會形成傷害.

(關閉底層鏈接或者在守護鏈接已經關閉的狀況下繼續使用它).請謹慎使用,

而且僅當須要直接訪問驅動的特定功能時使用.

注意: 不要關閉底層鏈接, 只能關閉前面的那個.

參數  默認值  描述

removeAbandoned  false  標記是否刪除泄露的鏈接,若是他們超過了removeAbandonedTimout的限制.

若是設置爲true, 鏈接被認爲是被泄露而且能夠被刪除,若是空閒時間超過removeAbandonedTimeout. 

設置爲true能夠爲寫法糟糕的沒有關閉鏈接的程序修復數據庫鏈接.

removeAbandonedTimeout  300  泄露的鏈接能夠被刪除的超時值, 單位秒

logAbandoned  false  標記當Statement或鏈接被泄露時是否打印程序的stack traces日誌。

被泄露的Statements和鏈接的日誌添加在每一個鏈接打開或者生成新的Statement,

由於須要生成stack trace。

若是開啓"removeAbandoned",那麼鏈接在被認爲泄露時可能被池回收. 這個機制在(getNumIdle() < 2)

 and (getNumActive() > getMaxActive() - 3)時被觸發.

舉例當maxActive=20, 活動鏈接爲18,空閒鏈接爲1時能夠觸發"removeAbandoned".

可是活動鏈接只有在沒有被使用的時間超過"removeAbandonedTimeout"時才被刪除,默認300秒.  

相關文章
相關標籤/搜索