druid,dbcp,c3p0 连接池的配置及应用

原文:http://blog.csdn.net/chenleixing/article/details/45165753/ (druid 在spring中的配置及监控)

          http://www.open-open.com/lib/view/open1430558786084.html (druid的内置监控及使用方法)

我再想买中的使用方法,因为我链接的mycat 集群环境的mysql

<!-- druid数据源  -->

    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">   

    <!-- 基本属性 url、user、password -->  

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

   <property name="url" value="${jdbc.url}" />  

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

   <property name="password" value="${jdbc.password}" />  

   <!-- 配置初始化大小、最小、最大 -->  

   <property name="initialSize" value="${druid.initialSize}" />  

   <property name="minIdle" value="${druid.minIdle}" />   

   <property name="maxActive" value="${druid.maxActive}" />  

   <!-- 配置获取连接等待时间 -->  

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

   <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->  

   <property name="timeBetweenEvictionRunsMillis" value="60000" />  

   <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->  

   <property name="minEvictableIdleTimeMillis" value="120000" />      

   <property name="validationQuery" value="select 1" />  

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

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

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

   <!-- 打开PSCache,并且指定每个连接上PSCache的大小 -->  

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

   <property name="maxPoolPreparedStatementPerConnectionSize" value="50" />  

   <!-- 配置监控统计拦截的filters,去掉后监控界面sql无法统计 -->  

   <!--<property name="filters" value="stat" />  -->   

</bean> 

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.url}" />
   < property name = "username" value = "${jdbc.username}" />
   < property name = "password" value = "${jdbc.password}" />
   <!-- 连接池启动时的初始值 -->
 < property name = "initialSize" value = "3" />
  <!-- 连接池在同一时间能够分配的最大活动连接的数量, 如果设置为非正数则表示不限制 -->
 < property name = "maxActive" value = "15" />
   <!-- 用来验证从连接池取出的连接,在将连接返回给调用者之前 -->
   < property name = "validationQuery" value = "select 1" />
   <!-- 指明是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个,做了这个配置会降低性能。 -->
   < property name = "testOnBorrow" value = "false" />
   <!-- 指明连接是否被空闲连接回收器(如果有)进行检验.如果检测失败,则连接将被从池中去除. -->
   < property name = "testWhileIdle" value = "true" />
   <!-- 指明是否在归还到池中前进行检验,做了这个配置会降低性能。 -->
   < property name = "testOnReturn" value = "false" />
  <!-- 连接池中容许保持空闲状态的最大连接数量,超过的空闲连接将被释放,如果设置为负数表示不限制 -->
 < property name = "maxIdle" value = "5" />
  <!-- 连接池中容许保持空闲状态的最小连接数量,低于这个数量将创建新的连接,如果设置为0则不创建 -->
 < property name = "minIdle" value = "3" />
   <!-- 当没有可用连接时,连接池等待连接被归还的最大时间(以毫秒计数),超过时间则抛出异常,如果设置为-1表示无限等待 -->
   < property name = "maxWait" value = "90000" />
  <!-- 泄露的连接可以被删除的超时值, 单位秒 -->
 < property name = "removeAbandonedTimeout" value = "120" />
   <!-- 标记是否删除泄露的连接,如果他们超过了removeAbandonedTimout的限制.
   如果空闲时间超过removeAbandonedTimeout,连接则被认为是被泄露并且会被删除. -->
 < property name = "removeAbandoned" value = "true" />
  <!-- 在空闲连接回收器线程运行期间休眠的时间值,以毫秒为单位. 如果设置为非正数,则不运行空闲连接回收器线程 -->
 < property name = "timeBetweenEvictionRunsMillis" value = "60000" />
  <!-- 连接在池中保持空闲而不被空闲连接回收器线程(如果有)回收的最小时间值,单位毫秒 -->
 < property name = "minEvictableIdleTimeMillis" value = "60000" />
</ bean >

druid样例

< bean id = "dataSource" class = "com.alibaba.druid.pool.DruidDataSource" init-method = "init" destroy-method = "close" >
   <!-- 基本属性 url、user、password -->
   < property name = "url" value = "${jdbc_url}" />
   < property name = "username" value = "${jdbc_user}" />
   < property name = "password" value = "${jdbc_password}" />
   <!-- 初始化时建立物理连接的个数。初始化发生在显示调用init方法,或者第一次getConnection时 -->
   < property name = "initialSize" value = "3" />
   <!-- 连接池中容许保持空闲状态的最小连接数量,低于这个数量将创建新的连接 -->
   < property name = "minIdle" value = "3" />
   <!-- 连接池在同一时间能够分配的最大活动连接的数量 -->
   < property name = "maxActive" value = "15" />
   <!-- 获取新连接的等待超时的时间,单位毫秒 -->
   < property name = "maxWait" value = "60000" />
   <!-- 间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
   < property name = "timeBetweenEvictionRunsMillis" value = "60000" />
   <!-- 接在池中保持空闲而不被空闲连接回收器线程(如果有)回收的最小时间值,单位毫秒 -->
   < property name = "minEvictableIdleTimeMillis" value = "120000" />
   <!-- 用来检测连接是否有效的sql -->
   < property name = "validationQuery" value = "SELECT 1" />
   <!-- 申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。-->
   < property name = "testWhileIdle" value = "true" />
   <!-- 申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。-->
   < property name = "testOnBorrow" value = "false" />
   <!-- 归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能 -->
   < property name = "testOnReturn" value = "false" />
   <!-- 是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,比如说oracle。
   在mysql5.5以下的版本中没有PSCache功能,建议关闭掉。-->
   < property name = "poolPreparedStatements" value = "true" />
   <!-- 要启用PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为true。
   在Druid中,不会存在Oracle下PSCache占用内存过多的问题,可以把这个数值配置大一些,比如说100 -->
   < property name = "maxPoolPreparedStatementPerConnectionSize" value = "100" />
   <!-- 配置监控统计拦截的filters,去掉后监控界面sql无法统计,这个在有配置druid监控的时候开启 --> 
   <!-- property name="filters" value="stat" / -->
</ bean >

c3p0样例

< bean id = "dataSource" class = "com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method = "close" >
   <!-- 基本属性 url、user、password -->
   < property name = "driverClass" value = "${jdbc.driverClassName}" />
   < property name = "jdbcUrl" value = "${jdbc.url}" />
   < property name = "user" value = "${jdbc.username}" />
   < property name = "password" value = "${jdbc.password}" />
   <!-- 连接池中保留的最小连接数。-->
   < property name = "minPoolSize" value = "3" />
   <!-- 连接池中保留的最大连接数。-->
   < property name = "maxPoolSize" value = "15" />
   <!-- 初始化时获取的连接数,取值应在minPoolSize与maxPoolSize之间 -->
   < property name = "initialPoolSize" value = "3" />
   <!-- 当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。-->
   < property name = "acquireIncrement" value = "3" />
   <!-- 连接在池中保持空闲而不被空闲连接回收器线程(如果有)回收的最小时间值,单位秒。若为0则永不丢弃。-->
   < property name = "maxIdleTime" value = "120" />
   <!-- 在空闲连接回收器线程运行期间休眠的时间值,以秒为单位 -->
   < property name = "idleConnectionTestPeriod" value = "60" />
   <!-- 用来检测连接是否有效的sql -->
   < property name = "preferredTestQuery" value = "select 1" />
   <!-- 定义在从数据库获取新连接失败后重复尝试的次数。-->
   < property name = "acquireRetryAttempts" value = "10" />
   <!-- 因性能消耗大请只在需要的时候使用它。如果设为true那么在每个connection提交的时候都将校验其有效性。
   建议使用idleConnectionTestPeriod方法来提升连接测试的性能。-->
   < property name = "testConnectionOnCheckout" value = "false" />
   <!-- c3p0是异步操作的,缓慢的JDBC操作通过帮助进程完成。扩展这些操作可以有效的提升性能,通过多线程实现多个操作同时被执行 -->
   < property name = "numHelperThreads" value = "32" />
</ bean >

猜你喜欢

转载自yjph83.iteye.com/blog/2305455