主流数据库连接池比较

属性\连接池 C3p0 DBCP Druid
线程同步 单线程 单线程 多线程、异步
监控 jmx,log jmx jmx,log, http
可扩展性
连接池管理 队列 LinkedBlockingDeque,FIFO队列,FILO堆栈 数组,CopyOnWriteArrayList
Tomcat数据源,JNDI 数据源和JNDI绑定,支持JDBC3标准和JDBC2扩展 支持JNDI配置,需要加入jconn.jar 支持JNDI配置,com.alibaba.druid.pool.DruidDataSourceFactory
代码复杂度 复杂 中等,超过60个类,600k 中等
更新维护
PSCache连接池关键指标  ➀ 支持 支持 支持
LRU关键性能指标  ➁
ExceptionSorter容错特性  ➂

 ➀ 预缓存:JDBC的标准参数,用以控制数据源内加载的 PreparedStatements数量。

➁ 最近最少使用算法最频繁使用的页在 LRU 列表的前端,而最少使用的页在 LRU 列表的尾端。当缓冲池不能存放新读取到的页时,将首先释放 LRU 列表中尾端的页。

➂ 容错特性:如果一个连接产生了一个不可恢复的错误,必须立刻从连接池中去掉,否则会连续产生大量错误。

配置属性: 

注意:配置中可能存在部分属性相同意思,但是属性名不相同的情况

1.Druid

  
      
          
          
          
          
        
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
     

2.dbcp

  
       
         
         
         
         
         
         
         
         
         
         
         
         
           
         
           
         
          
         
           
           
      

3.c3p0

  
      
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
                  
    

总结:对于现在用到比较多的数据库连接池,个人推荐阿里的druid不管是稳定性,还是社区活跃度都是比较不错的选择,结合相关资料以及个人认为druid>dbcp>c3p0,并发比较大的时候,选择druid是不错的。

你可能感兴趣的:(数据库)