您的位置:首页 > 其它

DBCP连接池配置详解

2016-08-21 23:35 330 查看

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息