当前位置: 首页 > Java > 正文

DBCP参数意义和设置

关键字:
1 星2 星3 星4 星5 星 (暂无评分)
Loading ... Loading ...
baidu_share

官网地址:http://commons.apache.org/proper/commons-dbcp/configuration.html

initialSize:默认0,初始化连接:连接池启动时创建的初始化连接数量,1.2版本后支持

maxActive:默认8,最大活动连接:连接池在同一时间能够分配的最大活动连接的数量, 如果设置为非正数则表示不限制

maxIdle:默认8,最大空闲连接:连接池中容许保持空闲状态的最大连接数量,超过的空闲连接将被释放,如果设置为负数表示不限制

minIdle:默认0,最小空闲连接:连接池中容许保持空闲状态的最小连接数量,低于这个数量将创建新的连接,如果设置为0则不创建

maxOpenPreparedStatements:同一时间能够从语句池里分配的已备语句的最大数量。设置为0时表示无限制。

maxWait:默认-1, [官网为:maxWaitMillis,但实际是用前面的]:在抛出异常之前,池等待连接被回收的最长时间(当没有可用连接时)。最大等待时间:当没有可用连接时,连接池等待连接被归还的最大时间(以毫秒计数),超过时间则抛出异常,如果设置为-1表示无限等待

minIdle:在不新建连接的条件下,池中保持空闲的最少连接数。

poolPreparedStatements:默认值false,是否对statement进行池管理(布尔值)。

maxOpenPreparedStatements:默认不限制,statement池能够同时分配的打开的statements的最大数量, 如果设置为0表示不限制

timeBetweenEvictionRunsMillis: 默认-1,在空闲连接回收器线程运行期间休眠的时间值,以毫秒为单位. 如果设置为非正数,则不运行空闲连接回收器线程

minEvictableIdleTimeMillis:默认值1000 * 60 * 30,把空闲时间超过minEvictableIdleTimeMillis毫秒的连接断开, 直到连接池中的连接数到minIdle为止 连接池中连接可空闲的时间,毫秒

numTestsPerEvictionRun:默认值3,在每次空闲连接回收器线程(如果有)运行时检查的连接数量

testWhileIdle:默认-1,指明连接是否被空闲连接回收器(如果有)进行检验.如果检测失败,则连接将被从池中去除.
注意: 设置为true后如果要生效,validationQuery参数必须设置为非空字符串

defaultAutoCommit:默认true,默认的SQL语句自动提交状态(开启或关闭)设置由连接池本身设置(false由连接池定),不设置该值setAutoCommit方法不被调用;

defaultReadOnly:默认driver default,连接池创建的连接的默认的read-only状态. 如果没有设置则setReadOnly方法将不会被调用. (某些驱动不支持只读模式,比如:Informix)

defaultTransactionIsolation:默认driver default,连接池创建的连接的默认的TransactionIsolation状态. 下面列表当中的某一个: (参考javadoc)NONE,READ_COMMITTED,READ_UNCOMMITTED,REPEATABLE_READ,SERIALIZABLE

defaultCatalog:连接池创建的连接的默认的catalog

connectionProperties:当建立新连接时被发送给JDBC驱动的连接参数,格式必须是 [propertyName=property;]*
注意 :参数user/password将被明确传递,所以不需要包括在这里。

username:传递给JDBC驱动的用于建立连接的用户名

password:传递给JDBC驱动的用于建立连接的密码

url:传递给JDBC驱动的用于建立连接的URL

driverClassName:使用的JDBC驱动的完整有效的java 类名

validationQuery:要求必需是个SELECT类型的SQL语句,至少返回一行,由于它会在所有应用的SQL语句执行之前运行一次,所以原则上应该对数据库服务器带来的压力越小越好,推荐使用“SELECT 1”

testOnBorrow:表示从连接池中获取连接前是否运行validationQuery,true=运行[默认],false=不运行;

testOnReturn:表示将连接归还连接池前是否运行validationQuery,true=运行,false=不运行[默认];

removeAbandoned:默认值false,标记是否删除泄露的连接,如果他们超过了removeAbandonedTimout的限制.如果设置为true, 连接被认为是被泄露并且可以被删除,如果空闲时间超过removeAbandonedTimeout. 设置为true可以为写法糟糕的没有关闭连接的程序修复数据库连接.

removeAbandonedTimeout:默认值300,泄露的连接可以被删除的超时值, 单位秒

logAbandoned:默认值false,标记当Statement或连接被泄露时是否打印程序的stack traces日志。被泄露的Statements和连接的日志添加在每个连接打开或者生成新的Statement,因为需要生成stack trace。

常用参数配置:

<bean id="parentDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
		<property name="maxWait" value="${jdbc.maxWait}" />
		<property name="initialSize" value="${jdbc.initialSize}" />
		<property name="maxActive" value="${jdbc.maxActive}" />
		<property name="maxIdle" value="${jdbc.maxIdle}" />
		<property name="minIdle" value="${jdbc.minIdle}" />
		<property name="testOnBorrow" value="${jdbc.testOnBorrow}" />
		<property name="testOnReturn" value="${jdbc.testOnReturn}" />
		<property name="testWhileIdle" value="${jdbc.testWhileIdle}" />
		<!-- 是否被空闲线程给检查,默认为false -->
		<property name="validationQuery" value="${jdbc.validationQuery}" />
		<!-- 被遗弃的连接可以多久之后被抛弃的时间 -->
		<property name="removeAbandoned" value="${jdbc.removeAbandoned}" />
		<property name="removeAbandonedTimeout" value="${jdbc.removeAbandonedTimeout}" />
		<property name="timeBetweenEvictionRunsMillis" value="${jdbc.timeBetweenEvictionRunsMillis}" />
		<!-- 空闲检查线程的检查时间间隔 15s -->
		<property name="minEvictableIdleTimeMillis" value="${jdbc.minEvictableIdleTimeMillis}" />
		<!-- 空闲的秒数 -->
	</bean>
#初始化连接数 #
jdbc.initialSize=5
jdbc.maxWait=10000
#最大的连接数#
jdbc.maxActive=20
#最大空闲连接#
jdbc.maxIdle=5
#最小空闲连接#
jdbc.minIdle=5
#是否在每次获取连接的时候都进行连接是否可用的检查#
jdbc.testOnBorrow=false
jdbc.testOnReturn=false
#检查连接的sql#
jdbc.validationQuery=select 1
#连接自我中断的超时时间(s)#
jdbc.removeAbandonedTimeout=12
#是否自我中断#
jdbc.removeAbandoned=true
#运行检查连接的时间间隔(ms)
jdbc.timeBetweenEvictionRunsMillis=300000
#空闲连接的最大存活时间
jdbc.minEvictableIdleTimeMillis=300000
#空闲检查
jdbc.testWhileIdle=true

注意:
Java数据库连接有“8小时问题”,所以destroy-method=”close”一定要加上。“8小时问题”是指一个连接空闲8小时数据库会自动关闭,而数据源并不知道。

高并发下,可以testOnBorrow设置false,testWhileIdle设置为true,这样就会定时对后台空链接进行检测发现无用连接就会清除掉,不会每次都去都去检测是否8小时的空链接。

本文固定链接: http://www.chepoo.com/the-dbcp-parameter-setting-and-meaning.html | IT技术精华网

【上一篇】
【下一篇】

DBCP参数意义和设置:等您坐沙发呢!

发表评论