数据库连接池Druid &与dbcp、c3p0的区别

Druid是Java语言中最好的数据库连接池。Druid能够提供强大的监控和扩展功能。

1. DruidDataSource配置

<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}" />

     <!-- 配置监控统计拦截的filters, 监控统计:"stat",防SQL注入:"wall",组合使用: "stat,wall" -->
     <property name="filters" value="stat" />

     <!-- 配置初始化连接数、最大连接数、最小连接数 -->
     <property name="initialSize" value="1" />
     <property name="maxActive" value="20" />
     <property name="minIdle" value="1" />

     <!-- 最大等待时间 -->
     <property name="maxWait" value="60000" />
     
     <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 
        空闲时间-->
     <property name="timeBetweenEvictionRunsMillis" value="60000" />

     <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
     <property name="minEvictableIdleTimeMillis" value="300000" />

     <!--是否超时检测-->
     <property name="testWhileIdle" value="true" />
     <!--申请连接检测-->
     <property name="testOnBorrow" value="false" />
     <!--归还连接检测-->
     <property name="testOnReturn" value="false" />

     <!-- 开启缓存功能-->
     <property name="poolPreparedStatements" value="true" />
     <!--单个连接拥有的最大缓存数-->
     <property name="maxOpenPreparedStatements" value="20" />

     <property name="asyncInit" value="true" />
 </bean>
  • 在上面的配置中,通常你需要配置url、username、password,maxActive这三项。
  • Druid会自动跟url识别驱动类名,如果连接的数据库非常见数据库,配置属性driverClassName
  • asyncInit是1.1.4中新增加的配置,如果有initialSize数量较多时,打开会加快应用启动时间

2. DRUID 属性说明表

3. c3p0、dbcp、druid三大连接池的区别 

4. 数据库连接池原理

传统方式:

当有多个线程,每个线程都需要连接数据库执行SQL语句的话,那么每个线程都会创建一个连接,并且在使用完毕后,关闭连接。
创建连接和关闭连接的过程也是比较消耗时间的,当多线程并发的时候,系统就会变得很卡顿。
同时,一个数据库同时支持的连接总数也是有限的,如果多线程并发量很大,那么数据库连接的总数就会被消耗光,后续线程发起的数据库连接就会失败。

 

使用连接池:

与传统方式不同,连接池在使用之前,就会创建好一定数量的连接。
如果有任何线程需要使用连接,那么就从连接池里面借用,而不是自己重新创建.
使用完毕后,又把这个连接归还给连接池供下一次或者其他线程使用。
倘若发生多线程并发情况,连接池里的连接被借用光了,那么其他线程就会临时等待,直到有连接被归还回来,再继续使用。
整个过程,这些连接都不会被关闭,而是不断的被循环使用,从而节约了启动和关闭连接的时间。

 

 注:

参考:

DruidDataSource配置

Druid常见问题

c3p0、dbcp、druid三大连接池对比

c3p0,DBPC,Druid三大连接池的区别/性能【面试+工作】

c3p0,dbcp与druid 三大连接池的区别

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值