1. 程式人生 > >DBCP連線池配置詳解

DBCP連線池配置詳解

Spring DBCP配置

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> 
	
	<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
	<property name="url" value="jdbc:mysql://192.168.0.109:3306/test?useUnicode=true&characterEncoding=UTF-8"/>
	<property name="username" value="root"/>
	<property name="password" value="root"/>
	
	<!--initialSize: 初始化連線--> 
	<property name="initialSize" value="5"/> 
	<!--maxIdle: 最大空閒連線--> 
	<property name="maxIdle" value="10"/> 
	<!--minIdle: 最小空閒連線--> 
	<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="timeBetweenEvictionRunsMillis" value="10000"/>
	<!--  在每次空閒連接回收器執行緒(如果有)執行時檢查的連線數量 -->
	<property name="numTestsPerEvictionRun" value="10"/>
	<!-- 最小空閒時間-->
	<property name="minEvictableIdleTimeMillis" value="10000"/>
	<!-- 驗證連結是否有效的sql語句 -->
	<property name="validationQuery" value="select 1" />
	<!-- 獲取連結之前是否測試連結的可用性 -->
	<property name="testOnBorrow" value="true"/> 
</bean> 

部分引數中文說明

引數

預設值

可選值

格式

說明

username  

使用者名稱

password  

密碼

url

資料庫連線url

driverClassName 

驅動類

connectionProperties  

[propertyName=property;]*

當建立新連線時被髮送給JDBC驅動的連線引數

defaultAutoCommit

true

true、false

defaultReadOnly

driver default

driver default
true
false

預設只讀狀態,不指定則是驅動的預設值

defaultTransactionIsolation 

driver default

ONE
READ_COMMITTED
READ_UNCOMMITTED
REPEATABLE_READ
SERIALIZABLE

實物的隔離級別
ONE
不支援
READ_COMMITTED
讀已提交
READ_UNCOMMITTED
讀未提交
REPEATABLE_READ
可重複讀
SERIALIZABLE
序列化

defaultCatalog

預設的database的名稱,多數驅動已經在url中指定

initialSize

0

非負整數

初始化連線數

maxActive

8

整數

最大活躍連線數,負數則無限制

maxIdle

8

整數

最大空閒連線數,超出會釋放連線

minIdle

0

整數

最小空閒數

maxWait

無限

整數

最大等待時間:當沒有可用連線時,連線池等待連線
被歸還的最大時間(以毫秒計數),-1代表無限

validationQuery

檢查連線是否可用的查詢語句

testOnCreate

false

true、false

連線被create時是否校驗可用,
validationQuery必須給定合法值

testOnBorrow

true

true、false

連線被get時是否校驗可用,
validationQuery必須給定合法值

testOnReturn

false

連線被歸還到連線池中時是否校驗可用
validationQuery
必須給定合法值

testWhileIdle

false

連線被空閒連接回收器檢測回收時否校驗可用
validationQuery
必須給定合法值

timeBetweenEvictionRunsMillis

-1

空閒連接回收器執行週期,毫秒,-1表示不執行

numTestsPerEvictionRun

3

在每次空閒連接回收器執行緒(如果有)
執行時檢查的連線數量

minEvictableIdleTimeMillis

1000 * 60 * 30

最小空閒時間,毫秒

poolPreparedStatements

false

是否啟池的prepared statement 池功能

maxOpenPreparedStatements

無限制

statement池能夠同時分配的開啟的
statements
的最大數量
(前提:poolPreparedStatements=true)

accessToUnderlyingConnectionAllowed

false

true、false

是否執行獲取底層的Connection(驅動提供的連線)
獲取方式:
Connection conn = ds.getConnection();
Connection dconn = ((DelegatingConnection) conn).getInnermostDelegate();

removeAbandoned

removeAbandonedTimeout

logAbandoned