0%

db-connection-pool

1. 常用数据库连接池比较

  1. 性能方面 hikariCP>druid>tomcat-jdbc>dbcp>c3p0 . hikariCP的高性能得益于最大限度的避免锁竞争.
    hikariCP, druid, tomcat-jdbc 性能差距不大
  2. druid功能最为全面, sql拦截等功能, 统计数据较为全面, 具有良好的扩展性.
  3. 综合性能, 扩展性等方面, 可考虑使用druid或者hikariCP连接池.
  4. 可开启prepareStatement缓存, 对性能会有大概20%的提升.
    • psCache是connection私有的, 所以不存在线程竞争的问题, 开启pscache不会存在竞争的性能损耗.
    • psCache的key为prepare执行的sql和catalog等, value对应的为prepareStatement对象. 开启缓存主要是减少了解析sql的开销.
功能 dbcp druid c3p0 tomcat-jdbc HikariCP
是否支持PSCache
监控 jmx jmx/log/http jmx,log jmx jmx
扩展性
sql拦截及解析 支持
代码 简单 中等 复杂 简单 简单
更新时间 2015.8.6 2015.10.10 2015.12.09 2015.12.3
特点 依赖于common-pool 阿里开源, 功能全面 历史久远, 代码逻辑复杂, 且不易维护 优化力度大, 功能简单, 起源于boneCP
连接池管理 LinkedBlockingDeque 数组 FairBlockingQueue threadlocal+CopyOnWriteArrayList

2. Resource