数据库阿里连接池druid配置详解
Posted 诗语七夜
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库阿里连接池druid配置详解相关的知识,希望对你有一定的参考价值。
java程序很大一部分要操作数据库,为了提高性能操作数据库的时候,有不得不使用数据库连接池。数据库连接池有很多选择,c3p、dhcp、proxool等,druid作为一名后起之秀,凭借其出色的性能,也逐渐印入了大家的眼帘。接下来就说一下druid的简单使用。
和dbcp类似,druid的配置项如下:
配置 |
缺省值 |
说明 |
name |
配置这个属性的意义在于,如果存在多个数据源,监控的时候 |
|
jdbcUrl |
连接数据库的url,不同数据库不一样。例如: |
|
username |
连接数据库的用户名 |
|
password |
连接数据库的密码。如果你不希望密码直接写在配置文件中, |
|
driverClassName |
根据url自动识别 |
这一项可配可不配,如果不配置druid会根据url自动识别dbType,然后选择相应的driverClassName |
initialSize |
0 |
初始化时建立物理连接的个数。初始化发生在显示调用init方法,或者第一次getConnection时 |
maxActive |
8 |
最大连接池数量 |
maxIdle |
8 |
已经不再使用,配置了也没效果 |
minIdle |
最小连接池数量 |
|
maxWait |
获取连接时最大等待时间,单位毫秒。配置了maxWait之后, |
|
poolPreparedStatements |
false |
是否缓存preparedStatement,也就是PSCache。 |
maxOpenPreparedStatements |
-1 |
要启用PSCache,必须配置大于0,当大于0时, |
validationQuery |
用来检测连接是否有效的sql,要求是一个查询语句。 |
|
testOnBorrow |
true |
申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。 |
testOnReturn |
false |
归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能 |
testWhileIdle |
false |
建议配置为true,不影响性能,并且保证安全性。 |
timeBetweenEvictionRunsMillis |
有两个含义: |
|
numTestsPerEvictionRun |
不再使用,一个DruidDataSource只支持一个EvictionRun |
|
minEvictableIdleTimeMillis |
||
connectionInitSqls |
物理连接初始化的时候执行的sql |
|
exceptionSorter |
根据dbType自动识别 |
当数据库抛出一些不可恢复的异常时,抛弃连接 |
filters |
属性类型是字符串,通过别名的方式配置扩展插件, |
|
proxyFilters |
类型是List<com.alibaba.druid.filter.Filter>, |
第一步:加入 druid-1.0.9.jar
第二步:ApplicationContext.xml配置如下
<bean name="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<bean id="propertyConfigurer"class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>/WEB-INF/classes/dbconfig.properties</value>
</list>
</property>
</bean>
第三步:ApplicationContext.xml配置druid
<!-- 阿里 druid数据库连接池 -->
<bean id="dataSource"class="com.alibaba.druid.pool.DruidDataSource"destroy-method="close">
<!-- 数据库基本信息配置 -->
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
<property name="driverClassName" value="${driverClassName}"/>
<property name="filters" value="${filters}"/>
<!-- 最大并发连接数 -->
<property name="maxActive" value="${maxActive}"/>
<!-- 初始化连接数量 -->
<property name="initialSize" value="${initialSize}"/>
<!-- 配置获取连接等待超时的时间 -->
<property name="maxWait" value="${maxWait}"/>
<!-- 最小空闲连接数 -->
<property name="minIdle" value="${minIdle}"/>
<!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
<property name="timeBetweenEvictionRunsMillis" value="${timeBetweenEvictionRunsMillis}"/>
<!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
<property name="minEvictableIdleTimeMillis" value ="${minEvictableIdleTimeMillis}"/>
<property name="validationQuery" value="${validationQuery}"/>
<property name="testWhileIdle" value="${testWhileIdle}"/>
<property name="testOnBorrow" value="${testOnBorrow}"/>
<property name="testOnReturn" value="${testOnReturn}"/>
<property name="maxOpenPreparedStatements" value="${maxOpenPreparedStatements}"/>
<!-- 打开 removeAbandoned 功能 -->
<property name="removeAbandoned" value="${removeAbandoned}"/>
<!--1800 秒,也就是 30 分钟 -->
<property name="removeAbandonedTimeout" value="${removeAbandonedTimeout}"/>
<!-- 关闭 abanded连接时输出错误日志 -->
<property name="logAbandoned" value="${logAbandoned}" />
</bean>
第四步:dbconfig.properties 配置如下
url:jdbc:sqlserver://localhost:1433;database=companyoa
driverClassName:com.microsoft.sqlserver.jdbc.SQLServerDriver
username:sa
password:123456
filters:stat
maxActive:20
initialSize:1
maxWait:60000
minIdle:10
maxIdle:15
timeBetweenEvictionRunsMillis:60000
minEvictableIdleTimeMillis:300000
validationQuery:SELECT'x'
testWhileIdle:true
testOnBorrow:false
testOnReturn:false
maxOpenPreparedStatements:20
removeAbandoned:true
removeAbandonedTimeout:1800
logAbandoned:true
第五步:web.xml配置如下
<!-- 连接池启用 Web监控统计功能start-->
<filter>
<filter-name>DruidWebStatFilter</filter-name>
<filter-class>com.alibaba.druid.support.http.WebStatFilter</filter-class>
<init-param>
<param-name>exclusions</param-name>
<param-value>*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>DruidWebStatFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping >
<servlet>
<servlet-name>DruidStatView</servlet-name>
<servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DruidStatView</servlet-name>
<url-pattern>/druid/*</url-pattern>
</servlet-mapping>
<!-- 连接池启用 Web监控统计功能end-->
配置完成后,访问监控的页面url为域名+端口号+'/druid':http://127.0.0.1:8080/druid
可以监控SQL,session,url等,功能还算比较齐全。
以上来自一位暴走的女程序员
我这么可愛你忍心不点赞吗
以上是关于数据库阿里连接池druid配置详解的主要内容,如果未能解决你的问题,请参考以下文章